Jak uzyskać wiersz poleceń procesu UNIX?

8

Czy można pobrać wiersz poleceń użyty do wywołania procesu w systemie Mac OS X?

użytkownik7656
źródło
1
ps --pid $PID -o args=W każdym razie tego używam ...
yardena
2
Odpowiednikiem tego polecenia dla komputerów Mac jest:ps -p <pid> -o args=
Nate
1
jeśli „-o args =” obcina dane wyjściowe, możesz spróbowaćps -p <pid> -o command=
Jose Alban

Odpowiedzi:

11

ps axpokazuje wiersz poleceń wszystkich uruchomionych procesów; możesz grep dla żądanego pid.

Bkkbrad
źródło
@ mark4o Lub po prostu ps awux | cat, ponieważ ps -w nie ograniczy liczby kolumn do wyświetlenia, gdy dane wyjściowe nie są standardowe, na przykład gdy jest przesyłane do innej komendy.
jtimberman
1
Dlaczego to się dzieje co tydzień? „Ostrzeżenie: zła składnia ps, być może fałszywy” - „? Patrz procps.sf.net/faq.html ” i „Uwaga:„ ps -aux ”różni się od„ ps aux ”. Standardy POSIX i UNIX wymagają tego” ps -aux "drukuje wszystkie procesy należące do użytkownika o nazwie„ x ", a także drukuje wszystkie procesy, które zostałyby wybrane przez opcję -a. Jeśli użytkownik o nazwie„ x "nie istnieje, ten ps może interpretować polecenie jako „ps aux” zamiast tego i wypisz ostrzeżenie. To zachowanie ma na celu pomóc w zmianie starych skryptów i nawyków. Jest delikatne, może ulec zmianie i dlatego nie należy na nim polegać. ”
Cześć71,
Nie wiem, Hello71. Poprawiłem dla ciebie moją dwuletnią odpowiedź.
Bkkbrad
4

Robi:

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

robisz to, czego potrzebujesz (zmień ntp na program, który Cię interesuje)? Zwykle daje mi to argumenty uruchomionych procesów w wierszu polecenia (używam do sprawdzenia, czego Launchd używał na przykład podczas uruchamiania demona systemowego).

Macka
źródło
2

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

Mimo że jest specyficzny dla Linuksa, pobiera wiersz polecenia procesu numerowany $PROCESSNUMBERbezpośrednio z jądra ( /proc/$PROCESSNUMBER/cmdlineczęść) i czyni go czytelnym, umieszczając każdy argument w osobnym wierszu, tłumacząc ( tr -tokenzamieniając) znaki \ 0 na znaki nowego wiersza (\ n).

Ten wiersz działa tylko wtedy, gdy umieścisz prawdziwy numer procesu uruchomionego procesu (możesz go znaleźć, uruchamiając polecenie ps -ef) w części $ PROCESSNUMBER!

JdeHaan
źródło
3
Oryginalny plakat poprosił o Mac OS X (którego nie ma w pudełku procfs)
Andre Holzner
2
Lubxargs -0 < /proc/PID/cmdline
Bash