Wie können Sie feststellen, wann eine Hintergrundaufgabe gestartet wurde?

Wie können Sie feststellen, wann eine Hintergrundaufgabe gestartet wurde?

Wenn Sie die Ausgabe von jobsin untersuchen bash, erhalten Sie häufig eine Liste wie die folgende:

[root@csx-tzg-sac-01 ~]# jobs
[2]   Running                 ( sleep 600 && ls -lh ~ossadmin/*.iso ) &
[3]-  Running                 ( sleep 900 && ls -lh ~ossadmin/*.iso ) &
[4]+  Running                 ( sleep 900 && ls -lh ~ossadmin/*.iso ) &

Können Sie feststellen, wann ein bestimmter Job vomJob-ID(d. h. nicht durch Betrachten der PID von einem Ort wie aus ps)?

Wenn das so ist, wie?

Antwort1

Sie können die PID des Jobs von abrufen jobs -l, so dass Sie nichtJagddurch psdie Ausgabe, um den Job zu finden. Ist das der Grund, warum Sie versucht haben, dies zu vermeiden ps?

jobs -l | sed 's/^\[[0-9]*\][^0-9]*\([0-9][0-9]*\)[^0-9].*/\1/' | xargs ps up

funktioniert in Bash und Zsh.

Wenn Sie zsh verwenden, zsh/parametersstellt das Modul die $jobstatesArray-Variable bereit. Beispiel:

% echo $jobstates[1]
running:-:14975=running

Das kann das Parsen der PID erleichtern. Und wenn Sie ein System mit verwenden, /procdann zeigt Ihnen der Zeitstempel im Proc-Verzeichnis an, wann der Prozess gestartet wurde.

$ ls -ld /proc/$$

verwandte Informationen