我正在尝试执行两个脚本,这些脚本在具有755权限的远程主机上作为sh文件提供。
我尝试从客户端主机中调用它们,如下所示:
REMOTE_HOST="host1"
BOUNCE_SCRIPT="
/code/sys/${ENV}/comp/1/${ENV}/scripts/unix/stopScript.sh ${ENV};
/code/sys/${ENV}/comp/1/${ENV}/scripts/unix/startScript.sh ${ENV};
"
ssh ${REMOTE_HOST} "${BOUNCE_SCRIPT}"
以上行位于本地主机上的脚本中。 在本地主机上运行脚本时,远程主机上的第一个命令即stopScript.sh会正确执行。它会杀死正在被杀死的任何错误的正在运行的进程。 但是,第二个脚本(即startScript.sh)的输出会打印到本地主机窗口,但它打算启动的进程不会在远程主机上启动。
任何人都可以告诉我吗?
由于
答案 0 :(得分:2)
您可以尝试使用ssh的-n
标志:
ssh -n $REMOTE_HOST "$BOUNCE_SCRIPT" >> $LOG
手册页有更多信息(http://unixhelp.ed.ac.uk/CGI/man-cgi?ssh+1)。以下是一个片段:
-n从/ dev / null重定向stdin(实际上,阻止从中读取 标准输入)。
答案 1 :(得分:1)
将startScript.sh行添加到'nohup'可能有所帮助。通常,如果您远程执行命令,它们将在您的ssh会话结束时死亡,nohup允许您的进程在会话结束后生效。了解您的流程是完全启动还是启动然后死亡将会很有帮助。
答案 2 :(得分:1)
我认为网络僧侣是对的,你应该用nohup启动流程来创建新的独立流程。看看你的停止脚本是否正在杀死正确的进程(包括新进程)。