簡體   English   中英

Linux / Bash,使用ps -o按特定名稱獲取進程?

[英]Linux / Bash, using ps -o to get process by specific name?

我正在嘗試使用ps -o命令獲取有關與特定名稱匹配的進程的特定信息。 但是,我在這方面遇到了一些問題,當我嘗試使用它來獲取所有進程時,就像這樣,它只返回正常ps -ef將返回的子集(它不會返回幾乎相同的數字)結果,所以它不返回所有正在運行的進程)

ps -ef -o pid,time,comm

我想嘗試類似這樣的事情(下面),但是將ps -o合並到其中以獲取特定信息(僅限PID)

ps -ef |grep `whoami`| grep firefox-bin

對於如何正確地做到這一點,任何建議都表示贊賞,謝謝

這將按名稱獲取進程的PID:

pidof name

然后您可以將其插回到ps以獲取更多詳細信息:

ps -p $(pidof name)

這有點舊,但我想你想要的是:ps -o pid -C PROCESS_NAME,例如:

ps -o pid -C bash

編輯:根據您期望的輸出類型, pgrep會更優雅。 據我所知,這是特定於Linux的,並且產生與上面類似的輸出。 例如:

pgrep bash
ps -fC PROCESSNAME

ps和grep是一個危險的組合 - grep嘗試匹配每一行的所有內容(因此太常見了:grep -v grep hack)。 ps -C不使用grep,它使用進程表進行精確匹配。 因此,您將獲得一個准確的列表:ps -fC sh而不是在線上找到每個進程。

有時您需要按名稱grep進程 - 在這種情況下:

ps aux | grep simple-scan

示例輸出:

simple-scan  1090  0.0  0.1   4248  1432 ?        S    Jun11   0:00

對不起,很晚才參加派對,但我在這里補充說,如果你想捕獲名稱與你的搜索字符串相同的進程,你可以做

pgrep -x PROCESS_NAME

 -x Require an exact match of the process name, or argument list if -f is given. The default is to match any substring. 

如果您的原始進程創建了子進程(可能在查詢時可能是僵屍),並且原始進程的名稱以其自己的名稱添加前綴並且您嘗試將其從結果中排除,則此功能非常有用。 有許多UNIX守護進程執行此操作。 我的例子是ninja-dev-sync

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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