2012-05-17 161 views
0

我想要一個bash腳本來執行某個作業完成時的命令(它報告狀態信息)。我正在運行(使用腳本)一些程序,並使用nohup將它們發送到後臺。當他們完成後,我想執行一個腳本來收集信息並進行報告。請注意,我知道我可以使用睡眠for循環來檢查pid是否仍在作業列表中。但我想知道是否有辦法告訴系統運行這個腳本,例如通過給nohup添加選項。作業結束時執行命令

+3

爲什麼不乾脆把命令*裏面*您使用nohup啓動的腳本? – bmargulies

+0

嗯,我正在運行程序(使用不同的語言),但是我原則上可以爲每個程序編寫一個包裝腳本,但是在程序本身的完整執行期間這些腳本將處於活動狀態。 – highsciguy

+1

也看看'wait'命令。 –

回答

1

您可能0123'腳本運行您要運行的命令,然後運行後完成作業。

例如,創建runtask.sh

runjob 
collect_and_report 

然後:

% nohup runtask.sh 
0

在功能啓動工作,並在後臺的功能。

task1plus() { 
    task1 
    whenFinished1 
} 

task2plus() { 
    task2 
    whenFinished2 
} 

task3plus() { 
    task3 
    whenFinished3 
} 

task1plus & 
task2plus & 
task3plus & 
0

這可能會爲你工作:

{script; report} & 
disown -h 

,或者使其有條件的:

{script && report} & 
disown -h 

你甚至可以這樣做:

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