2010-03-09 121 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