0

我想要一个 bash 脚本在某个作业完成时执行一个命令(报告状态信息)。我正在运行(使用脚本)许多程序并使用 nohup 将它们发送到后台。当他们完成时,我想执行一个收集信息并报告它的脚本。请注意,我知道我可以有一个带有 sleep 的 for 循环,它会主动检查 pid 是否仍在作业列表中。但我想知道是否有办法告诉系统运行这个脚本,例如通过向 nohup 添加选项。

4

3 回答 3

1

您可以nohup使用一个脚本来运行您想要运行的命令,然后再运行完成后的作业。

例如,创建runtask.sh

runjob
collect_and_report

接着:

% nohup runtask.sh
于 2012-05-17T21:59:34.867 回答
0

这可能对您有用:

{script; report} &
disown -h

或者,使其有条件:

{script && report} &
disown -h

你甚至可以这样做:

{script && report || fail} &
disown -h
于 2012-05-18T01:27:03.707 回答
0

在函数中启动您的工作,并在后台启动该函数。

task1plus () {
  task1 
  whenFinished1  
}

task2plus () {
  task2
  whenFinished2
}

task3plus () {
  task3
  whenFinished3
}

task1plus &
task2plus &
task3plus &
于 2012-05-17T23:29:16.677 回答