Назад | Перейти на главную страницу

Получение полного пути к исполняемым файлам в выводе ps auxwww

Рассмотрим следующие строки из "ps auxwww" вывод:

USER       PID  %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMAND
root      4262   0.0  0,1    76592   1104 s005  Ss   10:02am   0:00.03 login -pf yo
yo        4263   0.0  0,0    75964    956 s005  S    10:02am   0:00.03 -bash

Вопрос 1: Как заставить ps развернуть все команды в столбце COMMAND до их полных имен путей? Я хочу, чтобы логин был разрешен в / usr / bin / login, а bash - в / bin / bash.

Вопрос 2: Есть ли в MacOS X аналог procfs? То есть - существует ли файловый механизм для простого получения информации о процессе?

Попробуйте вместо этого:

ps ax -o pid, cmd

Вы можете переформатировать его по своему усмотрению (подробности см. На странице руководства).

Наконец, я думаю, что ps (и даже cat / proc / * / cmdline) сообщит о команде, как она была запущена. Таким образом, если не был указан полный путь, он будет отображаться как просто «команда» вместо «/ путь / к / команде».

Во-первых, процессы могут изменить заголовок, о котором сообщает ps так что он сам по себе не очень надежен. Вы можете попробовать переменные среды, используя флаг «e».

ps auxwwwe

Внутри них должна быть встроенная переменная '_', как описано здесь.

Для каждой команды, выполняемой как дочерняя оболочка оболочки, sh устанавливает для этой переменной полный путь к исполняемому файлу и передает это значение через среду этому дочернему процессу.

Это верно как для sh в BSD, так и для Linux. Я считаю, что это не может быть перезаписано пользователем. Однако его доступность может зависеть от выбора оболочки пользователем, это довольно неприятно и YMMV.


OSX не имеет собственной procfs. Есть порт на базе FUSE. Подробности можно узнать Вот. Опять ЫММВ.

извлечь все идентификаторы процессов и полный путь из / proc:

ls -l /proc/*/exe 2>/dev/null | awk '{print $8 " " $10}'

Прекратите возиться с пс и использовать cat / proc / pid / cmdline .

Вы можете использовать подстановочные знаки, такие как / proc / * / cmdline.