%20%D0%B2%20AIX.png)
Используя этот ответ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 не сильно изменился с тех пор, как я последний раз им пользовался.