Wie bekomme ich eine Befehlszeile des UNIX-Prozesses?

15306
user7656

Ist es möglich, die Befehlszeile zu verwenden, die zum Aufrufen eines Prozesses unter Mac OS X verwendet wurde?

8
`ps --pid $ PID -o args =` Das benutze ich sowieso ... yardena vor 13 Jahren 1
Das Mac-Äquivalent dieses Befehls lautet: `ps -p -o args = ` Nate vor 11 Jahren 2
Wenn "-o args =" die Ausgabe abschneidet, können Sie `ps -p versuchen -o Befehl = ` Jose Alban vor 7 Jahren 1

3 Antworten auf die Frage

10
Bkkbrad

ps axzeigt Ihnen die Befehlszeile aller laufenden Prozesse; Sie können für die gewünschte PID grep.

@ mark4o Oder einfach ps awux | cat, da ps -w die Anzahl der anzuzeigenden Spalten nicht begrenzt, wenn die Ausgabe nicht stdout ist, z. B. wenn an einen anderen Befehl weitergeleitet wird. jtimberman vor 15 Jahren 0
Warum passiert das jede Woche? "Warnung: schlechte ps-Syntax, möglicherweise ein falscher" - "? Siehe http://procps.sf.net/faq.html" und "Beachten Sie, dass" ps -aux "sich von" ps aux "unterscheidet. Der POSIX und UNIX Standards setzen voraus, dass "ps -aux" alle Prozesse eines Benutzers mit dem Namen "x" druckt und alle mit der Option -a ausgewählten Prozesse druckt. Wenn der Benutzer mit dem Namen "x" nicht vorhanden ist, kann dies ps bedeuten interpretieren Sie den Befehl stattdessen als "ps aux" und drucken Sie eine Warnung aus. Dieses Verhalten soll beim Übergang alter Skripte und Gewohnheiten helfen. Es ist fragil, kann sich ändern und sollte daher nicht als verlässlich angesehen werden. " Hello71 vor 13 Jahren 1
Ich weiß es nicht, Hello71. Ich habe meine zweijährige Antwort für Sie korrigiert. Bkkbrad vor 13 Jahren 0
4
The Tentacle

Tut:

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

tun, wozu Sie es benötigen (ändern Sie ntp in das Programm, an dem Sie interessiert sind)? Dies gibt mir normalerweise die Befehlszeilenargumente der laufenden Prozesse (ich verwende beispielsweise, um zu prüfen, was Launchd verwendet hat, wenn zum Beispiel ein Systemdämon ausgeführt wird).

2
JdeHaan

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

Obwohl es Linux-spezifisch ist, erhält es die Befehlszeile des Prozesses $PROCESSNUMBERdirekt vom Kernel (dem /proc/$PROCESSNUMBER/cmdlineTeil), und macht ihn lesbar, indem er jedes Argument in eine eigene Zeile stellt, indem er tr -tokendie \ 0-Werte in neue Zeilen übersetzt (\ n).

Diese Zeile funktioniert nur, wenn Sie eine echte Prozessnummer eines laufenden Prozesses angeben (Sie können einen finden, indem Sie den Befehl ps -efausführen) im $ PROCESSNUMBER-Part!

Das ursprüngliche Poster, das nach Mac OS X gefragt wurde (welches nicht "procfs" enthält) Andre Holzner vor 12 Jahren 2
Oder `xargs -0 </ proc / PID / cmdline` Bash vor 12 Jahren 2