繁体   English   中英

如何在ls命令后搜索特定字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM