使用这个答案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 已经发生了很大的变化