2014-10-29 69 views
0

我想要在while循環中訪問bash終端中某些進程的status.log文件並對它們進行比較。因此,由於PID不是靜態的,我怎樣才能使用它們的命令名訪問它們的proc/PID文件,而不是使用PID?從bash中通過名稱訪問procfs中的進程

回答

0

嘗試的命令的名稱到grep從ps -A輸出,並從那裏得到PID

+0

是的,但在這之後我該如何使用的PID,而無需用戶的任何輸入?我的意思是我希望每次都按名稱找到PID,並使用它們來達到進程狀態 – ihavename 2014-10-29 12:34:16

+0

您可以修整grep的輸出並將PID保存到變量 – 4rlekin 2014-10-29 12:41:36

0

您可以用這種方式

例子:

sleep 1000 & 
cd /proc/`pidof sleep` 

請參閱此鏈接man pidof

+1

您的示例僅適用於存在一個稱爲「sleep」的進程(您應該大概可以用'-s'選項調用'pidof',這樣它在這種情況下返回一個PID) – Hasturkun 2014-10-29 12:39:01

+0

@ Hasturkun,'cd'命令只接受忽略其他參數的第一個參數。 – Kalanidhi 2014-10-29 12:41:54

+0

@KalanidhiM。如果編號最低的「睡眠」過程是錯誤的呢? – chepner 2014-10-29 13:18:37

0

假設你有pgrep(你應該知道它是procps的一部分),請撥打pgrep -x somecmdname以獲得與該字符串匹配的PID列表。從那裏你可以照常訪問proc文件。

例如

for pid in `pgrep -x somecmd`; do 
echo $pid #or do something more interesting 
done 
0

嘗試命令pidof

$ pidof bash 
14317 10465 7204 3514 3466 

然後你可以遍歷的PID:

$ for pid in $(pidof bash); do echo "$pid" ; done 
14317 
10465 
7204 
3514 
3466 
相關問題