如何確定後台任務何時啟動?

如何確定後台任務何時啟動?

jobs在調查in的輸出時bash,您通常會得到如下列表:

[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 ) &

您能否確定給定作業何時開始喬比德(即,不是從類似的地方查看pid ps)?

如果是這樣,怎麼辦?

答案1

您可以從 取得作業的 pid jobs -l,這樣您就不必打獵透過ps輸出找到工作。這就是你試圖避免的原因嗎ps

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

將在 bash 和 zsh 中工作。

如果您使用 zsh,則該zsh/parameters模組提供$jobstates數組變數。例如:

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

這樣可以更容易解析 pid。如果您使用的系統上的/procproc 目錄上的時間戳會告訴您流程何時啟動。

$ ls -ld /proc/$$

相關內容