Что мне нужно: список всех запущенных в данный момент исполняемых файлов с указанием их полного пути.
Что-то вроде этого:
1234 /полный/путь/к/исполняемому/файлу 4567 /полный/путь/к/исполняемому/файлу2
Используя UNIX95= ps -exo pid,comm
я могу получить список с PID и командами вроде этой
11146 /opt/wbem/lbin/cimprovagt 0 4 8 корневой IOTreeModule 8338 /opt/ssh/libexec/sftp-сервер 16684 postgres: sfmdb evweb [локальный] простаивает 2518 /usr/sbin/stm/uut/bin/tools/monitor/WbemWrapperMonitor 2264 /usr/sbin/psb/bin/diagtxd 8340 -ш 7772 sshd: root@pts/0 8333 sshd: root@pts/1 7777 /opt/ssh/libexec/sftp-сервер
Это максимально приближенный результат, которого мне удалось добиться с помощью ps
, но он не достаточно хорош:
- Некоторые строки не содержат полный путь (очевидно, потому что они не начинаются с полного пути).
- Дополнительные данные после имени исполняемого файла (мне нужно поддерживать исполняемые файлы с пробелами в имени, чтобы я не мог просто разделить строку)
Таким образом, я пришел к выводу, что это ps
не поможет мне дойти до конца.
Есть ли эквивалент Linux's /proc, где /proc/{pid}/exe указывает на исполняемый файл? Если нет, есть ли другой способ сделать это?
Заранее спасибо,
решение1
pfiles <pid>
можно указать полный путь к исполняемому файлу.
Пример:
Фрагмент изUNIX95=1 ps -efo pid,comm
1666 cimprovagt
Теперь побежимpfiles 1666
1666: /opt/wbem/lbin/cimprovagt
0: S_ISCHR mode:666 dev:64,3 ino:124 uid:2 gid:2 rdev:3,2
flags = O_RDONLY|O_LARGEFILE
file = /dev/null
Первая строка показывает полный путь к исполняемому файлу. Для моих целей этого вполне достаточно.