我有一个链接到后台进程的脚本。现在我想一起运行第二个脚本,然后运行第一个脚本(启动后台进程)。
还可以在末尾添加退出命令,以便一旦第二个进程完成,后台进程应该自动退出。
示例:脚本1
#!/bin/tcsh
#
background process &
#
一旦它运行
脚本2:
#!/bin/tcsh
#
matlab <program.m>
#
脚本 2 完成后结束这两个过程。如何??
提前致谢
答案1
我假设当你说你希望他们“一起”开始时,你的意思是彼此相对接近。为此,只需按照您想要的顺序一行一行地执行脚本即可。
#!/bin/bash
./script2.sh &
.script1.sh
要捕获后台进程的结束,您需要存储第一个进程的 PID。为此,请将脚本进程置于后台并存储$!
到局部变量中。
如果您想在终止前台脚本时也终止后台进程,可以使用 Bash 的trap
函数。传入您想要执行的函数或代码块以及您想要捕获的信号。
#!/bin/bash
./script2.sh &
SCRIPT_2_PID=$!
trap "kill $SCRIPT_2_PID; exit" SIGHUP SIGINT SIGTERM
./script1.sh
请注意,该trap
函数替换了对所提供信号的典型响应,因此如果您希望脚本退出,CTRL+C则需要包含exit
.