我正在編寫一個腳本來監視任何給定進程的CPU和MEM。爲此,我需要發送被監控進程的名稱作爲命令行參數。例如。如何通過在Mac OS X中提供進程名稱來獲取進程的PID?
./monitorscript <pname>
我需要得到進程的PID的腳本,這樣我可以使用ps -p <pid>
內。
我如何獲得給定進程名稱的進程的PID?
我知道可能有多個進程同名。我只想從列表中獲得第一個進程。
我正在編寫一個腳本來監視任何給定進程的CPU和MEM。爲此,我需要發送被監控進程的名稱作爲命令行參數。例如。如何通過在Mac OS X中提供進程名稱來獲取進程的PID?
./monitorscript <pname>
我需要得到進程的PID的腳本,這樣我可以使用ps -p <pid>
內。
我如何獲得給定進程名稱的進程的PID?
我知道可能有多個進程同名。我只想從列表中獲得第一個進程。
答案上面主要是正確的,只是需要一些調整在Mac OSX上的不同的參數。
ps -A | grep -m1 firefox | awk '{print $1}'
你可以試試這個
pid=$(ps -o pid=,comm= | grep -m1 $procname | cut -d' ' -f1)
嘗試這一個:
bookworm% ps -ceo pid=,comm=
1 launchd
10 kextd
11 UserEventAgent
12 mDNSResponder
13 opendirectoryd
14 notifyd
15 configd
:
echo "$(ps -ceo pid=,comm= | awk '/firefox/ { print $1; exit }')"
的ps
命令在第一列和可執行文件的名稱(僅)在第二列產生輸出這樣的,與PID
...其中awk
處理,打印第一列(pid)並在第一次匹配後退出。
這是我能找到的,沒有工作的最短命令:
ps -ax | awk '/[t]he_app_name/{print $1}'
把周圍的第一個字母括號從發現awk的過程本身AWK停止。
該溶液中的過程名稱匹配更嚴格:
ps -Ac -o pid,comm | awk '/^ *[0-9]+ Dropbox$/ {print $1}'
這種解決方案具有以下優點:
tail -f ~/Dropbox
~/Dropbox/foo.sh
~/DropboxUID.sh
你爲什麼不跑TOP和使用的選項由其他指標進行排序,除了PID?就像CPU/MEM中使用最多的PID一樣?
頂部-o CPU < ---排序由CPU使用的所有過程
這不是問題的關鍵。 – bergercookie 2017-05-19 22:37:56
您可以在下面的例子中使用pgrep命令狀
$ pgrep Keychain\ Access
44186
這非常有用!謝謝! – 2016-04-04 19:50:23
如果'pgrep'可用,那麼你可以說'pgrep process_name'。 [本文](http://unix.stackexchange.com/questions/225/pgrep-and-pkill-alternatives-on-mac-os-x)介紹OSX上的'pgrep'可用性 – 2012-07-18 17:21:29