簡體   English   中英

需要將進程ID的值動態插入命令中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM