Befehl, mit dem ein Prozess ausgeführt wurde

Befehl, mit dem ein Prozess ausgeführt wurde

Angenommen, ich habe den Vorgang mit dem folgenden Befehl ausgeführt:

myapp -e -c -f myapp.config > /var/log/myapp/myapp.log 2>&1

Nach einer Weile habe ich nur noch pidden myappProzess, z. B. 1234. Gibt es eine Möglichkeit, den Befehl mit allen Flags zu erhalten und die Ausgabe myapp.logirgendwie einfach umzuleiten pid?

Antwort1

ps -o args= -p "$pid"

Zeigt Ihnen die Argumentliste für den letzten Befehl an, den dieser Prozess ausgeführt hat (oder, wenn keiner ausgeführt wurde, für den Befehl, den sein übergeordnetes Element ausgeführt hat …), vorausgesetzt, der Prozess hat seine Argumentliste anschließend nicht überschrieben.

pspszeigt die Argumentliste an, die mit Leerzeichen verknüpft ist, und zwar bis zu einer Grenze, die Sie bei manchen Implementierungen durch Hinzufügen einiger Optionen erhöhen können -w. Unter Linux können Sie die Argumentliste durch NUL-Bytes getrennt in sehen /proc/$pid/cmdline.

lsof +fg -ap "$pid" -d 0-2

Informiert Sie, worauf die Dateideskriptoren stdin, stdout und stderr des Prozesses verweisen und in welchem ​​Modus sie geöffnet wurden (wie W,APfür schreibgeschützt mit Anhängen, als ob eine >>Umleitung in einer POSIX-Shell verwendet wurde).

Antwort2

Sie können den Befehl verwenden psund die zu untersuchende PID mit dem -pSchalter angeben. Mit dem -fSchalter können Sie eine vollständige Auflistung oder -leine detailliertere lange Auflistung erhalten.

Als Beispiel für die Ausgabe:

$ sleep 60 &
[1] 31441
$ ps -lp 31441
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S     0 31441 31319  0  80   0 -  1423 hrtime pts/3    00:00:00 sleep
$ ps -fp 31441
UID        PID  PPID  C STIME TTY          TIME CMD
root     31441 31319  0 10:44 pts/3    00:00:00 sleep 60

Dies gibt jedoch eine Kopfzeile aus, die Sie möglicherweise nicht in Ihrer Protokolldatei haben möchten. Sie können diese mit der -hOption kürzen, wenn Ihre PID 1234 war:

ps -lhp 1234 >> /var/log/myapp/myapp.log 2>&1

Beachten Sie, dass ich die Ausgabe umgeleitet habe, um >>sie an Ihre Protokolldatei anzuhängen.

Antwort3

Mithilfe von ps -fkönnen Sie die Argumentliste überprüfen und sie auch zu einer beliebigen Datei umleiten.

Verwenden Sie in diesem Fall einfachps -ef | grep 1234 > myapp.log

Bitte prüfen Sie dasps man-Seite.

verwandte Informationen