Как получить открытый pty для заданного фонового процесса (без входа в систему) в AIX

Как получить открытый pty для заданного фонового процесса (без входа в систему) в AIX

Используя этот ответhttps://unix.stackexchange.com/a/283521/114939которые позволяют нам находить процессы, которые держат заданный pty открытым без входа в систему ( whoкоманда не может их показать), заставили меня задать обратный вопрос.

Как получить открытые pty для заданного процесса в системах AIX? (для тех, которые запущены в фоновом режиме и не «прикреплены» к терминалу/логину pty).

решение1

AIX имеет /procфайловую систему (примерно с версии 5.1?), и вы можете получить список открытых файловых дескрипторов для pid с помощьюprocfiles:

$ 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, указаны только индексный дескриптор и старший/младший номера, но вы сможете легко сопоставить их с теми, которые отображаются в простом файле ls -l /dev/pts/.

Вы также можете установитьAIX Toolbox для приложений Linuxи затем используйте lsofкоманду.

решение2

Если XXX — этоpid

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

Но вы получите несколько строк на pty, если процесс открыл его для нескольких ролей (например, stdin, stdout и stderr).

Но я думаю, это не поможет в борьбе AIX против Linux, если только AIX не сильно изменился с тех пор, как я последний раз им пользовался.

Связанный контент