作业完成时执行命令

时间:2012-05-17 21:54:47

标签: linux bash nohup

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

3 个答案:

答案 0 :(得分:1)

您可以nohup运行您要运行的命令的脚本,然后运行后完成作业。

例如,创建runtask.sh

runjob
collect_and_report

然后:

% nohup runtask.sh

答案 1 :(得分:0)

在函数中启动作业,在后台启动函数。

task1plus () {
  task1 
  whenFinished1  
}

task2plus () {
  task2
  whenFinished2
}

task3plus () {
  task3
  whenFinished3
}

task1plus &
task2plus &
task3plus &

答案 2 :(得分:0)

这可能对您有用:

{script; report} &
disown -h

或者,使其有条件:

{script && report} &
disown -h

你甚至可以这样做:

{script && report || fail} &
disown -h