我正在尝试编写一个 1 行 bash 脚本,该脚本将获取看起来像内核进程的所有进程的 PID,并检查它们是否有内容/proc/*/maps
,这表明内核进程伪装。
我目前有以下脚本:
for pid in $(ps aux | grep "\[" | awk -F' ' '{print $2}');do if [ -s /proc/$pid/maps ]; then echo $pid; fi; done
如果/proc/$pid/maps
大小大于 0,脚本应该输出 pid。但是,脚本什么也不输出。
if [ -s /proc/$pid/maps ]
应该指示文件是否为空。它似乎不起作用。
我可以使用另一种方法解决此问题,但-s
互联网建议使用此选项来检查文件是否为空。
这里有什么问题?我确实知道在其命令行(avahi 守护进程)中有一个带有括号的进程,其中的内容将包含在 中/proc/$pid/maps
,因此应该至少有 1 个 pid 输出用于测试目的。如果我从管道中删除 grep,所以它遍历所有 pid,仍然没有输出。
问题是文件
/proc/$pid
的表观大小为 0,无论其内容如何;比较的输出和
要检查
/proc/$pid/maps
你需要实际阅读它的大小,使用例如wc -c
上面的方法。