【发布时间】:2021-08-27 08:27:58
【问题描述】:
我运行一个 shell 脚本,比如脚本 1。我暂停脚本 1 的执行并给出 bg 命令,以便它开始在后台运行。我启动另一个脚本 2,它再次暂停并在后台运行。现在我给出 pkill -f script1.sh 命令来杀死脚本 1。
我想要做的是,当我杀死脚本 1 时,脚本 2 应该知道这一点,然后脚本 2 应该开始运行另一个脚本 3。这怎么办?
【问题讨论】:
-
向两者添加陷阱(信号处理程序),以便第一个脚本在退出前发出第二个信号,第二个脚本在捕获信号时启动 script3。
-
脚本1可以创建pid文件和lock it;脚本 2 可以启动一个协同进程(或只是在后台运行某些东西),该进程会阻止获取该锁并在脚本 3 获得该锁后启动它。