我做完了我的作业,但我想我可能会在这里混合苹果和橘子。我的脚本旨在运行远程内联系列命令,退出,然后运行一些其他LOCAL命令。它必须首先远程完成,因为这些服务是用于故障转移代理。问题是远程ssh行断开连接后,整个脚本就会停止。我不确定为什么断开连接会停止整个脚本。也许退出线应该受到责备?
#!/bin/bash
#
### Run remote svc restarts and then Local restarts
#
exec ssh -t REMOTEHOST 'stop svc1; restart svc2; start svc3; exit'
(SCRIPT FAILS HERE)
## Run local shell (This works independently, but not in the entire script)
rst=`pgrep -n failoversvc`
echo "Stopping 1st service at `date | awk '{print $2,$3,$4}'`" && service 1 stop >> SYNCLOG.txt
sleep 2
echo "Restarting 2nd service at `date | awk '{print $2,$3,$4}'`" && service 2 restart >> SYNCLOG.txt
if rst="";then
echo "Starting 3rd service at `date | awk '{print $2,$3,$4}'`" && service 3 start >> SYNCLOG.txt
else
echo "3rd Service PID not found! Check for functionality"
fi
我看了看THIS我无法得到我想要的结果。
答案 0 :(得分:3)
exec
是一个非常残酷的命令:它完全使用您指定的命令替换当前进程(在本例中,运行脚本的shell)。除非exec
失败,否则脚本中该行之后的任何内容都不会运行。这是设计的,这就是exec
的用途。
如果您希望脚本在ssh
之后继续,只需删除exec
。