cat: pid.txt: 没有那个文件或目录

问题描述

我有猫的问题。我想编写与 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 循环

for id in 'ls /proc/ | grep -o "[0-9]\+" | sort -h'; do 
cat /proc/$id/cmdline;
done

不知道我做错了什么。提前致谢。

解决方法

与运行 cat pid.txt... 命令相比,运行 ls... 命令时您似乎处于不同的当前目录。在同一个终端窗口上运行这两个命令,或使用绝对路径,如 /path/to/pid.txt

除了您的错误之外,您可能想从 grep 命令中删除 -o,因为它为匹配的 pid 提供了 1 位数字。例如,当 pid 为 423 时,您会得到 2。@Roadowl 也已经指出了这一点。

,

我认为您所追求的是 - 您的所有方法都存在一些缺陷(或者您真的只想查看具有一位数的 PID 的进程?):

for pid in $(ls /proc/ | grep -E '^[0-9]+$'|sort -h); do cat /proc/${pid}/cmdline; tr '\x00' '\n'; done