jobs
当调查中的输出时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/$$