如何在 AIX 中取得給定後台進程(無需登入)開啟的 pty

如何在 AIX 中取得給定後台進程(無需登入)開啟的 pty

使用這個答案https://unix.stackexchange.com/a/283521/114939這允許我們找到在沒有登入的情況下保持給定 pty 開啟的進程(who命令無法顯示它們),導致我問相反的問題。

如何取得 AIX 系統中給定流程的開啟 pty? (對於那些在背景啟動且未「附加」到終端機/pty 登入的使用者)。

答案1

AIX 有一個/proc檔案系統(大約從 5.1 開始?),您可以使用以下命令列出 pid 的開啟檔案描述符流程檔案:

$ procfiles -n 15502
15502 : /home/guest/test 
  Current rlimit: 2000 file descriptors                                 
   0: S_IFCHR mode:0622 dev:10,4  ino:2584 uid:100 gid:100 rdev:28,1
  O_RDONLY
   1: S_IFCHR mode:0622 dev:10,4  ino:2584 uid:100 gid:100 rdev:28,1
  O_RDONLY
   2: S_IFCHR mode:0622 dev:10,4  ino:2584 uid:100 gid:100 rdev:28,1
  O_RDONLY
   3: S_IFREG mode:0644 dev:10,7  ino:26 uid:100 gid:100 rdev:0,0       
  O_RDONLY size:0  name:/tmp/foo

對於像 pty 這樣的開放設備,僅給出 inode 和主/次編號,但您應該能夠輕鬆地將它們與簡單的ls -l /dev/pts/.

您也可以安裝適用於 Linux 應用程式的 AIX 工具箱然後使用lsof命令。

答案2

如果 XXX 是pid

file /proc/XXX/fd/* | grep /dev/pt

但是,如果進程為多個角色(如 stdin、stdout 和 stderr)打開,則每個 pty 會獲得多行

但我想這對 AIX 與 Linux 沒有幫助,除非自從我上次使用它以來 AIX 已經發生了很大的變化

相關內容