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