我对cat有问题。我想写和ps-e一样的脚本。在pid.txt中,我有运行进程的pid。
ls /proc/ | grep -o "[0-9]" | sort -h > pid.txt
然后我想使用$line作为每个PID的cmdline路径的一部分。
cat pid.txt | while read line; do cat /proc/$line/cmdline; done
我也尝试循环
for id in 'ls /proc/ | grep -o "[0-9]+" | sort -h'; do
cat /proc/$id/cmdline;
done
不知道我做错了什么。提前谢谢。
我想你想要的是——你的所有方法都有一些缺陷(或者你真的只是想用一个位数的PID来看待流程吗?):
for pid in $(ls /proc/ | grep -E '^[0-9]+$'|sort -h); do cat /proc/${pid}/cmdline; tr 'x00' 'n'; done
与运行ls...
命令时相比,运行cat pid.txt...
命令时您所处的当前目录似乎不同。在同一个终端窗口上运行两个命令,或者使用绝对路径,如/path/to/pid.txt
除了您的错误之外,您可能还想从grep命令中删除-o
,因为它为匹配的pid提供了1位数字。例如,当pid为423时,您得到2@Roadowl也已经指出了这一点。