在远程主机上执行脚本 - 在本地主机中给出的输出

时间:2013-11-25 17:35:30

标签: linux bash shell unix ssh

我正在尝试执行两个脚本,这些脚本在具有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)的输出会打印到本地主机窗口,但它打算启动的进程不会在远程主机上启动。

任何人都可以告诉我吗?

  1. 在远程主机上执行脚本的方式是否正确?
  2. 我是否应该在本地看到远程主机上运行脚本的输出?即在当地主人的窗口?
  3. 由于

3 个答案:

答案 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启动流程来创建新的独立流程。看看你的停止脚本是否正在杀死正确的进程(包括新进程)。