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 の解析が容易になります。また、システムを使用している場合は、/proc
proc ディレクトリのタイムスタンプから、プロセスがいつ開始されたかがわかります。
$ ls -ld /proc/$$