%20%E3%81%AE%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%20pty%20%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.png)
この回答を使う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の比較には役立たないと思います。