Wie kann ich die folgenden Informationen für einen laufenden Linux-Prozess erhalten:
- Shell-Umgebungsvariablen
- Arbeitsverzeichnis
- Befehlszeilenoptionen
Antwort1
Diese Informationen erhalten Sie von/procDateisystem, es speichert Informationen über laufende Prozesse.
cat /proc/<pid>/environ
cd /proc/<pid>/cwd; pwd -P
cat /proc/<pid>/cmdline
Antwort2
Wenn Sie die Umgebung wie von @atype vorgeschlagen ausgeben, erhalten Sie alle Umgebungsvariablen und deren Werte ohne Trennzeichen aneinandergereiht.
Für eine bessere Ausgabe verwenden Sie
$ xargs -0 -L 1 echo < /proc/21645/environ
LANG=en_US.UTF-8
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
SHELL=/bin/bash
TERM=xterm
LC_MESSAGES=en_US.UTF-8
LANGUAGE=en_US.UTF-8
(Ausgabe aus Datenschutzgründen gekürzt)
Erläuterung
/proc/$pid/environ enthält die Umgebungsvariablen als nullgetrennte Liste.
xargs ist ein Tool, das beliebig lange Listen aus *STDIN liest und deren Elemente an ein Tool (in diesem Fall echo) weiterleitet, wobei darauf geachtet wird, dass die maximale Kommandozeilenlänge nicht überschritten wird. Der Parameter "-0" stellt xargs so ein, dass als Trennzeichen für Elemente null verwendet wird (anstelle des standardmäßigen Leerzeichens oder Zeilenumbruchs). Der Parameter "-L 1" begrenzt die Anzahl der Elemente auf 1. Dabei wird jede Umgebungsvariable in einer neuen Zeile ausgegeben.