如何确定后台任务何时启动?

如何确定后台任务何时启动?

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/$$

相关内容