Ps
ps 命令:如何生成程序報告但僅符合 tty 或 pts?
通過
ps --help all
有關選項的命令tty
存在以下內容:-a all with tty, except session leaders a all with tty, including other users x processes without controlling ttys
tty[1-6]
我知道and之間的區別pts/[0...N]
,很快前者基於通過控制台的直接連接,後者通過遠端連接(即:)ssh
,如果有問題請糾正我通過 Ubuntu Server 的 Virtual Box,具有:
- 6 個 tty 與 3 個不同的使用者一起登錄(2 個使用者在 2 個 tty 中,例如 user1 在 tty1 和 tty3 上登錄,user2 在 tty2 和 tty4 上登錄等等)
- 3 個 SSH 連接。
當執行
ps a
或ps -a
命令時,在其輸出中 -TTY
列/標題tty[1-6]
按預期顯示值,但也出現pts/[0..N]
。沒想到因為pts
不是.tty
現在關於
x
選項 - 不確定它的描述是否表明/意味著:所有關於不相關tty
- 例如pts
。但又出現了tty
(未預期的)和pts
預期的。如果我以錯誤的方式理解這些選項,請糾正我。
問題
- 如何生成流程報告但僅符合
tty
或pts
?不是兩個一起
pts
用於任何UNIX 98 偽終端,而不僅僅是遠端連接。您會看到它用於圖形終端仿真器screen
或tmux
會話等。當使用 BSD 偽終端時,您提到
tty[1-6]
的 ,tty
也可以是偽終端的前綴;然後你會看到ttyp0
等。它也用作連接的終端的前綴,例如通過串列埠(ttyS0
等)、USB(ttyUSB0
)以及我忘記的其他連接。也可以有超過 6 個 VT。
ps
不區分所有這些。任何程序的控制終端都是終端。因此,以您想要的方式選擇程序的唯一方法是指定單個終端:
ps -t tty1 -t tty2
或更一般地說,
ttys=(/dev/tty[123456789]*) ps "${ttys[@]/#/-t}"
等(選擇是加法的),或 post-process
ps
的輸出:ps -e | awk '$2 ~ /^tty/'
就
ps x
方面而言,x
取消了要求程序有終端的限制;它不會將選擇限制為沒有終端的程序。因此ps …x
將顯示任何已選擇的程序,以及由於缺少終端而被過濾的任何其他程序——在基本ps x
情況下,這就是你的所有程序(使用者限制仍然存在)。