如何在 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 已经发生了很大的变化

相关内容