![](/img/trans.png)
[英]How can I split the String output of an ls command into an array on just the filenames in bash?
[英]How can i search for a specific string after an ls command
我正在尝试创建一个shell脚本来搜索/ proc目录并找到该进程的用户。 我该怎么做? 我正在尝试与grep一样的不同方式
NUM=`egrep -ri "$a1" /proc/ 2> error.txt `
echo "$NUM"
但没有任何事情发生。有人帮忙吗?
grep
搜索文件的内容。 要搜索someone
拥有的文件,请尝试类似的操作
find /proc -user someone -ls
平凡的是,你可以通过过滤器来管道ls
,只获得第三个字段是someone
那些行,如评论中暗示的那样;
ls -l | awk '$3=="someone"'
...但由于种种原因,你应该避免解析ls
输出 。
如果你知道数字用户ID,你可以做类似的事情
awk '$1=="Uid" && $2==1234 { print FILENAME }' /proc[1-9]*/status
获取UID编号1234所拥有的进程的文件名。可以通过find
获得非常相似的东西,如第一个例子中所示。 (也许将搜索限制为只有数字目录名?)
要通过/ proc伪文件系统查找进程的用户标识,请从“status”文件中获取“Uid”行:
uid_line=`grep -e ^Uid /proc/1/status`
您可以将其分解为真实,有效,已保存的集和文件系统uid。 第二个字段是真正的uid:
real_uid=`echo "$uid_line"|cut -f 2`
您还可以使用getent
将uid转换为用户名:
username=`getent passwd $real_uid|cut -d: -f 1`
我非常确定进程的用户标识位于/ proc / PID / loginid中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.