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


8

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


1
ps --pid $PID -o args=Это то, что я использую, в любом случае ...
Ярдена

2
Эквивалент этой команды для Mac:ps -p <pid> -o args=
Nate

1
если "-o args =" урезает вывод, вы можете попробоватьps -p <pid> -o command=
Jose Alban

Ответы:


11

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


@ mark4o Или просто ps awux | cat, так как ps -w не будет ограничивать количество отображаемых столбцов, когда вывод не является stdout, например, когда передается по конвейеру другой команде.
Jtimberman

1
Почему это происходит каждую неделю? «Предупреждение: плохой синтаксис пса, может быть поддельный„-“См procps.sf.net/faq.html » и «Обратите внимание , что„п.с. -aux“отличается от„пса Окса“Стандарты POSIX и UN требуют.» ps -aux "печатает все процессы, принадлежащие пользователю с именем" x ", а также печатает все процессы, которые будут выбраны опцией -a. Если пользователя с именем" x "не существует, этот ps может интерпретировать команду как Вместо этого «ps aux» и напечатайте предупреждение. Это поведение предназначено для помощи в переходе старых сценариев и привычек. Оно хрупкое, подвержено изменениям, и на него нельзя полагаться ».
Hello71

Я не знаю, Hello71. Я исправил свой двухлетний ответ для вас.
Bkkbrad

4

Имеет:

~$ 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

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

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

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


3
Оригинальный плакат попросил Mac OS X (которого из коробки нет procfs)
Андре Хольцнер

2
Илиxargs -0 < /proc/PID/cmdline
Bash
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.