Як отримати командний рядок процесу UNIX?


8

Чи можливо схопити командний рядок, який використовувався для виклику процесу в Mac OS X?


1
ps --pid $PID -o args=Ось чим я користуюся, все одно ...
yardena

2
Еквівалент Mac цієї команди:ps -p <pid> -o args=
Нейт

1
якщо "-o args =" обрізає результат, можна спробуватиps -p <pid> -o command=
Хосе Альбан

Відповіді:


11

ps axпоказує командний рядок усіх запущених процесів; Ви можете похвалитись за потрібний вам підпис.


@ mark4o Або просто ps awux | cat, так як ps -w не обмежить кількість стовпців, які відображатимуться, коли вихід не буде stdout, наприклад, коли передається в іншу команду.
jtimberman

1
Чому це відбувається щотижня? "Попередження: поганий синтаксис PS, можливо, хибний '-"? Див. Procps.sf.net/faq.html "та" Зауважте, що "ps -aux" відрізняється від "ps aux". Стандарти POSIX та UNIX вимагають, щоб " ps -aux "друкує всі процеси, що належать користувачеві з назвою" x ", а також друкує всі процеси, які були б вибрані опцією -a. Якщо користувача з ім'ям" x "не існує, цей ps може інтерпретувати команду як Натомість "ps aux" та друкуйте попередження. Ця поведінка покликана допомогти перейти до старих сценаріїв і звичок. Вона неміцна, може змінюватися, і тому на неї не слід покладатися ".
Привіт71

Я не знаю, 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)
Andre Holzner

2
Абоxargs -0 < /proc/PID/cmdline
Баш
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.