2010-03-09 193 views
2

我想爲用戶提供在後臺運行shell腳本的功能。在後臺運行shell腳本

我的shell程序實例化了許多其他shell腳本。

這裏是我的腳本的一小段代碼

./main.sh # Main script 

in main.sh 

I call preprocessing.sh 
create_dir.sh 
handle_file.sh 
post_processing.sh 
report_generation.sh 

我想知道如果我要開始所有子腳本以及..什麼是語法,如果我要開始所有的腳本在後臺並在結束時通過在該測試運行完成時顯示消息來通知用戶。

感謝

基蘭

+0

你想通過背景來完成什麼?即使您的連接丟失/終端窗口關閉,您的腳本仍會繼續運行?當腳本在後臺運行並且在狀態結束時通知您可以繼續工作嗎?但是,如果您在狀態「echo」回來時輸入命令並在輸入過程中顯示消息字符串,該怎麼辦? – vladr 2010-03-10 23:23:50

+0

是的,我想在後臺運行腳本,並繼續在同一個shell中運行其他命令。完成執行後,我可以通過簡單的回顯消息通知用戶它已完成,並且可以檢查日誌文件。 我的腳本運行了將近2個小時,所以我想在後臺運行它。 謝謝 基蘭 – Kiran 2010-03-11 10:10:51

回答

1
結束

&後臺啓動進程,然後使用bash的內置wait命令:

wait [n ...] 
      Wait for each specified process and return its termination sta‐ 
      tus. Each n may be a process ID or a job specification; if a 
      job spec is given, all processes in that job’s pipeline are 
      waited for. 

有幾個例子可用here。例如:

# wait on 2 processes 
sleep 10 & 
sleep 10 & 
wait %1 %2 && echo "Completed!" 
+0

非常感謝..我會嘗試這 – Kiran 2010-03-09 15:47:17

+0

謝謝,這是我一直在尋找.. – Kiran 2010-03-09 15:51:21

+0

你確定這就是你要找的?根據您的腳本名稱,看起來子腳本必須按順序運行,而不是全部並行(這是您接受的解決方案的建議)。 – vladr 2010-03-10 23:02:20

0

添加 「&」 的命令

I call preprocessing.sh & 
create_dir.sh & 
... 
+0

感謝您的快速響應,但我如何通過簡單的回聲消息通知用戶在測試運行結束。 – Kiran 2010-03-09 15:43:33