让命令在远程服务器上运行

时间:2013-06-18 19:55:43

标签: shell ssh

请原谅我,如果这是我刚刚完全错过的东西,但是,我有一台远程服务器(NAS),我想开始运行一个命令,而我在本地做一些工作。现在,我相信我可以用以下命令来做到这一点:

ssh foo@bar 'cp -Rl /foo/bar /bar/foo'

但是,我需要在主脚本中从命令的一部分返回一个值,所以我需要它返回但保持cp命令运行。例如:

foo=$(ssh foo@bar <<- REMOTE_COMMANDS
    cp -Rl /foo/bar /bar/foo &
    echo "foobar"
REMOTE_COMMANDS)

但是我不相信这会在cp命令完成之前返回,但如果我使用exit我认为cp被中断了吗?

还有另一种让cp运行的方法,还是我需要运行两个ssh命令(一个用于cp,一个用于获取我需要的返回值?)< / p>

2 个答案:

答案 0 :(得分:2)

您可以使用以下选项之一:

  • TMUX
  • nohup的
  • 屏幕

tmux&amp; screen 1到N 用户可以附加分离的完整环境。

如果您需要直截了当,请先查看nohup

答案 1 :(得分:1)

您可以使用屏幕命令。 只需使用screen -R screen_name创建一个新屏幕即可。 运行您的命令或代码,然后按 ctrl + a + d 退出该屏幕。 如果要切换回屏幕,请输入以下命令:screen -r screen_name。 希望它有所帮助。