Wenn Sie die Ausgabe von jobs
in 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 ps
die 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/parameters
stellt das Modul die $jobstates
Array-Variable bereit. Beispiel:
% echo $jobstates[1]
running:-:14975=running
Das kann das Parsen der PID erleichtern. Und wenn Sie ein System mit verwenden, /proc
dann zeigt Ihnen der Zeitstempel im Proc-Verzeichnis an, wann der Prozess gestartet wurde.
$ ls -ld /proc/$$