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 pid
den myapp
Prozess, z. B. 1234. Gibt es eine Möglichkeit, den Befehl mit allen Flags zu erhalten und die Ausgabe myapp.log
irgendwie 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.
ps
ps
zeigt 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,AP
für schreibgeschützt mit Anhängen, als ob eine >>
Umleitung in einer POSIX-Shell verwendet wurde).
Antwort2
Sie können den Befehl verwenden ps
und die zu untersuchende PID mit dem -p
Schalter angeben. Mit dem -f
Schalter können Sie eine vollständige Auflistung oder -l
eine 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 -h
Option 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 -f
kö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.