我想监视在centos框上运行的进程打开的文件描述符的数量。以下命令对我有用
watch -n 1 "ls /proc/pid/fd | wc -l"
当重新启动上述过程时,我需要监视相同的问题。 pid发生了变化,我无法获得统计数据。
好消息是pname是不变的。所以我可以使用pgrep pname提取pid。
那么如何以下面的方式使用命令:
watch -n 1 "ls /proc/"pgrep <pname>"/fd | wc -l"
我希望动态选择pgrep pname
值。
有没有办法可以定义一个连续获取pgrep pname
最新值的变量,我可以在这里插入变量。
答案 0 :(得分:1)
watch
每次都将它的命令评估为shell命令,所以我们首先必须找到一个产生输出的shell命令。由于可能有多个匹配过程,我们可以使用循环:
for pid in $(pgrep myprocess); do ls "/proc/$pid/fd"; done | wc -l
现在我们可以引用它来直接传递它来观察:
watch -n 1 'for pid in $(pgrep myprocess); do ls "/proc/$pid/fd"; done | wc -l'
答案 1 :(得分:0)
watch -n 1 "pgrep memcached | xargs -I{} ls /proc/{}/fd | wc -l"
另一种方式。