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

14847
user7656

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

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

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

10
Bkkbrad

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

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

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