Ps

ps 命令:如何生成程序報告但僅符合 tty 或 pts?

  • May 5, 2022

通過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 aps -a命令時,在其輸出中 -TTY列/標題tty[1-6]按預期顯示值,也出現pts/[0..N]。沒想到因為pts不是.tty

現在關於x選項 - 不確定它的描述是否表明/意味著:所有關於相關tty- 例如pts。但又出現了tty(未預期的)和pts預期的。

如果我以錯誤的方式理解這些選項,請糾正我。

問題

  • 如何生成流程報告但僅符合ttypts?不是兩個一起

pts用於任何UNIX 98 偽終端,而不僅僅是遠端連接。您會看到它用於圖形終端仿真器screentmux會話等。

當使用 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-processps的輸出:

ps -e | awk '$2 ~ /^tty/'

ps x方面而言,x取消了要求程序有終端的限制;它不會將選擇限制為沒有終端的程序。因此ps …x將顯示任何已選擇的程序,以及由於缺少終端而被過濾的任何其他程序——在基本ps x情況下,這就是你的所有程序(使用者限制仍然存在)。

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