Ps

如何在ps中對兩個選擇條件進行邏輯與?

  • December 4, 2018

我正在模擬ps沒有參數的預設行為:

  • 一種選擇條件是找到控制終端與目前shell相同的程序。
  • 另一個選擇條件是查找目前使用者為 euid 的程序。

所以我需要對使用者和終端的選擇進行邏輯和。

$ ps  -u t -t /dev/pts/4 -o pid,tname,time,ucmd   
$ ps  -u t -t pts/4 -o pid,tname,time,ucmd   
$ ps  -u t -t /dev/tty -o pid,tname,time,ucmd 

我知道目前 shell 的控制終端是/dev/pts/4. 但是所有這些都給了我帶有其他控制終端和沒有控制終端的程序。謝謝。

-u程序選擇與and是累積的-t:您正在選擇以 user 身份執行的所有程序t,並且在這些程序之上,所有具有控制終端/dev/pts/4/dev/tty. 要查看給定控制終端的程序,請單獨使用-t

ps -t pts/4 -o pid,tname,time,ucmd

正如POSIX 所指定的,程序選擇選項是附加的:

除了**-f**、-l-n namelist和**-o** format之外,顯示的所有選項都用於選擇程序。如果有任何指定,則預設列表應被忽略,並且ps應選擇由所有選擇標準選項的包含 OR 表示的程序。

要組合條件,僅列出與所有條件匹配的程序,您可以使用pgrep

ps -p $(pgrep -d, -u t -t pts/4) -o pid,tname,time,ucmd

引用自:https://unix.stackexchange.com/questions/485950