Kommandozeilenparameter eines laufenden Prozesses ausgeben

Stehe öfters mal vor der „Aufgabe“, das ich wissen möchte, mit exakt welchen Parametern ein Prozess gestartet wurde. Teilweise ist das zu „breit“ für eine „ps“ Ausgabe — besonders gerne bei Java Prozessen…

Angenommen, man habe folgende „ps“ Ausgabe:

# ps -p 398
 PID TTY TIME CMD
 398 console 0:00 ttymon

Auf einem Solaris System ist die Lösung einfach: pargs(1) to the rescue😉

# pargs 398
398: /usr/lib/saf/ttymon -g -d /dev/console -l console -T vt100 -m ldterm,ttcompat -
argv[0]: /usr/lib/saf/ttymon
argv[1]: -g
argv[2]: -d
argv[3]: /dev/console
argv[4]: -l
argv[5]: console
argv[6]: -T
argv[7]: vt100
argv[8]: -m
argv[9]: ldterm,ttcompat
argv[10]: -h
argv[11]: -p
argv[12]: the.host.name console login:

Auf Linux gibt’s pargs aber leider nicht (bzw. zumindest nicht immer). Was tun? „Einfach“: /proc/$pid/cmdline auslesen.

$ ps -p 27040
 PID TTY TIME CMD
27040 ? 00:00:00 chromium-browse

Sieht aber unschön aus:

$ cat /proc/27040/cmdline
/usr/lib/chromium-browser/chromium-browser --type=renderer --lang=de --force-fieldtest=CacheListSize/CacheListSize_14/ConnCountImpact/conn_count_6/ConnnectBackupJobs/ConnectBackupJobsEnabled/DnsImpact/default_enabled_prefetch/DnsParallelism/parallel_default/GlobalSdch/global_enable_sdch/IdleSktToImpact/idle_timeout_10/Instant/SilentExperimentB/Prefetch/ContentPrefetchPrerender2/PrerenderFromOmnibox/OmniboxPrerenderEnabled/PrerenderFromOmniboxHeuristic/ExactAlgorithm/ProxyConnectionImpact/proxy_connections_32/SpdyCwnd/cwndDynamic/SpdyImpact/npn_with_spdy/WarmSocketImpact/last_accessed_socket/ --channel=24323.0x7ff20e6e7c00.1465400924$

Grund: Die Parameter sind durch NULL getrennt (Hinweis: In der Originalausgabe sind alle Parameter „direkt verbunden“; zumindest sieht es so aus. WordPress „verschönt“ das aber — leider…) . Lösung: Man verwende „xargs -0 echo„, bzw. ganz kurz: „xargs -0„, denn der Befehl „echo“ ist der Default von „xargs“, wenn man keinen „besonderen“ Befehl angibt:

$ xargs -0 < /proc/27040/cmdline
/usr/lib/chromium-browser/chromium-browser --type=renderer --lang=de --force-fieldtest=CacheListSize/CacheListSize_14/ConnCountImpact/conn_count_6/ConnnectBackupJobs/ConnectBackupJobsEnabled/DnsImpact/default_enabled_prefetch/DnsParallelism/parallel_default/GlobalSdch/global_enable_sdch/IdleSktToImpact/idle_timeout_10/Instant/SilentExperimentB/Prefetch/ContentPrefetchPrerender2/PrerenderFromOmnibox/OmniboxPrerenderEnabled/PrerenderFromOmniboxHeuristic/ExactAlgorithm/ProxyConnectionImpact/proxy_connections_32/SpdyCwnd/cwndDynamic/SpdyImpact/npn_with_spdy/WarmSocketImpact/last_accessed_socket/ --channel=24323.0x7ff20e6e7c00.1465400924

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s