[英]Need to insert the value of process ID dynamically into a command
我想監視由我的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
的最新值,並且可以在此處插入變量。
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'
watch -n 1 "pgrep memcached | xargs -I{} ls /proc/{}/fd | wc -l"
另一種方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.