2016-03-02 167 views
1

我正在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上启动另一个脚本?

回答

0

假设您信任网络链接,更一般可靠的方法是更简单的方法。我会改写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 &

+0

好主意。谢谢。 –

相关问题