我正在尝试创建一个搜索/ proc目录的shell脚本,并找到该进程的用户。我该怎么做?我正在尝试与grep一样的不同方式
NUM=`egrep -ri "$a1" /proc/ 2> error.txt `
echo "$NUM"
但没有任何事情发生。有人帮忙吗?
答案 0 :(得分:1)
grep
搜索文件内容。要搜索someone
拥有的文件,请尝试
find /proc -user someone -ls
琐碎的是,您可以通过过滤器管道ls
,只获取第三个字段为someone
的行,如评论中所示;
ls -l | awk '$3=="someone"'
......但由于种种原因,你应该avoid parsing ls
output一般。
如果您知道数字用户ID,则可以执行类似
的操作awk '$1=="Uid" && $2==1234 { print FILENAME }' /proc[1-9]*/status
获取UID编号1234所拥有的进程的文件名。find
可以获得非常相似的内容,如第一个示例中所示。 (也许将搜索限制为只有数字目录名?)
答案 1 :(得分:1)
要通过/ proc伪文件系统查找进程的用户标识,请从“状态”文件中获取“Uid”行:
uid_line=`grep -e ^Uid /proc/1/status`
您可以将其解析为真实,有效,已保存的集和文件系统uid。第二个字段是真正的uid:
real_uid=`echo "$uid_line"|cut -f 2`
您还可以使用getent
将username=`getent passwd $real_uid|cut -d: -f 1`
答案 2 :(得分:0)
我非常确定进程的用户标识位于/ proc / PID / loginid。