Как получить командную строку процесса UNIX?

14895
user7656

Можно ли получить командную строку, которая использовалась для вызова процесса в Mac OS X?

8
`ps --pid $ PID -o args =` Это то, что я использую, в любом случае ... yardena 13 лет назад 1
Эквивалент этой команды для Mac: `ps -p -o args = ` Nate 11 лет назад 2
если "-o args =" обрезает вывод, вы можете попробовать `ps -p -o команда = ` Jose Alban 7 лет назад 1

3 ответа на вопрос

10
Bkkbrad

ps axпоказывает командную строку всех запущенных процессов; Вы можете найти нужный pid.

@ mark4o Или просто ps awux | cat, так как ps -w не будет ограничивать количество столбцов, отображаемых, когда вывод не является stdout, например, когда передается по конвейеру другой команде. jtimberman 15 лет назад 0
Почему это происходит каждую неделю? «Предупреждение: неверный синтаксис ps, возможно, фальшивый» - '? См. Http://procps.sf.net/faq.html "и" Обратите внимание, что "ps -aux" отличается от "ps aux". POSIX и UNIX Стандарты требуют, чтобы "ps -aux" печатал все процессы, принадлежащие пользователю с именем "x", а также печатал все процессы, которые были бы выбраны опцией -a. Если пользователя с именем "x" не существует, этот ps может вместо этого интерпретируйте команду как «ps aux» и напечатайте предупреждение. Это поведение предназначено для помощи в переходе старых сценариев и привычек. Оно хрупкое, подвержено изменениям, и на него нельзя полагаться ». Hello71 13 лет назад 1
Я не знаю, Hello71. Я исправил свой двухлетний ответ для вас. Bkkbrad 13 лет назад 0
4
The Tentacle

Имеет:

~$ ps ax | grep "ntp" 57 ?? Ss 0:04.66 /usr/sbin/ntpd -c /private/etc/ntp.conf -n 3104 s000 S+ 0:00.00 grep ntp 

делать то, что вам нужно (сменить ntp на интересующую вас программу)? Обычно это дает мне аргументы командной строки запущенных процессов (я использую, чтобы проверить, что Launchd использовал, например, при запуске системного демона).

2
JdeHaan

cat /proc/$PROCESSNUMBER/cmdline | tr '\0' '\n'

Несмотря на то, что он специфичен для Linux, он получает командную строку процесса, пронумерованную $PROCESSNUMBERпрямо из ядра ( /proc/$PROCESSNUMBER/cmdlineчасти), и делает его читаемым, помещая каждый аргумент в отдельную строку, переводя (с tr -tokenзаменой) \ 0 в новые строки (\ n).

Эта строка работает, только если вы поместите реальный номер процесса запущенного процесса (вы можете найти его, запустив команду ps -ef) в части $ PROCESSNUMBER!

Оригинальный плакат попросил Mac OS X (который из коробки не имеет `procfs`) Andre Holzner 12 лет назад 2
Или `xargs -0 </ proc / PID / cmdline` Bash 12 лет назад 2

Похожие вопросы