在进程终止时运行脚本
问题描述:
我正在AWS EC2类型环境中进行计算。我有一个运行在headnode上的脚本,然后在它从headnode父shell中分离出来的VM上执行shell命令。在进程终止时运行脚本
headnode.sh
#!/bin/bash
...
nohup ssh -i vm-key [email protected] './vm_script.sh' &
exit 0
我像这样做的原因,是该vm_script需要很长的时间才能完成。所以我想把它从headnode shell中分离出来,并让它在VM的后台运行。
vm_script.sh
#!/bin/bash
...
ssh -i head-node-key [email protected] './delete-vm.sh'
exit 0
一旦VM完成它发送一个命令给headnode删除VM的任务。
在VM上的脚本完成后,是否有更可靠的方法来执行头节点上的最终脚本?
例如,在启动vm_script.sh之后,是否可以在等待VM完成PID的headnode上启动另一个脚本?
答
假设您信任网络链接,更一般可靠的方法是更简单的方法。我会改写headnode.sh
如下介绍:
#!/bin/bash
...
ssh -i vm-key [email protected] './vm_script.sh' && ./delete-vm.sh
上面的脚本等待的vm_script.sh
终止,然后调用./delete-vm.sh
如果没有错误代码由vm_script.sh
返回。
如果你不想被卡在外壳等待headnode.sh
终止,只是把它用nohup ./headnode.sh &
好主意。谢谢。 –