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が大きく変更されていない限り、これはAIXとLinuxの比較には役立たないと思います。

関連情報