Ist es möglich, die Befehlszeile abzurufen, mit der ein Prozess unter Mac OS X aufgerufen wurde?
ps -p <pid> -o args=
ps -p <pid> -o command=
Ist es möglich, die Befehlszeile abzurufen, mit der ein Prozess unter Mac OS X aufgerufen wurde?
ps -p <pid> -o args=
ps -p <pid> -o command=
Antworten:
ps axzeigt Ihnen die Befehlszeile aller laufenden Prozesse; Sie können nach der gewünschten PID suchen.
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, was Sie brauchen (ändern Sie ntp zu dem Programm, an dem Sie interessiert sind)? Dies gibt mir normalerweise die Befehlszeilenargumente zum Ausführen von Prozessen (ich überprüfe, was Launchd beispielsweise beim Ausführen eines Systemdämons verwendet hat).
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 jedes Argument in eine separate Zeile gesetzt wird, indem tr -tokendie \ 0 in Zeilenumbrüche (\ n) übersetzt (mit Ersetzen) werden.
Diese Zeile funktioniert nur, wenn Sie eine echte Prozessnummer eines laufenden Prozesses (Sie können eine finden, indem Sie den Befehl ps -efausführen) in den Teil $ PROCESSNUMBER einfügen!
procfs)
xargs -0 < /proc/PID/cmdline
ps --pid $PID -o args=Das ist es, was ich sowieso