如何运行 2 个脚本,其中一个在后台运行,后一个在后台运行

如何运行 2 个脚本,其中一个在后台运行,后一个在后台运行

我有一个链接到后台进程的脚本。现在我想一起运行第二个脚本,然后运行第一个脚本(启动后台进程)。

还可以在末尾添加退出命令,以便一旦第二个进程完成,后台进程应该自动退出。

示例:脚本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.

相关内容