这是您如何在 shell 脚本中使用 ssh的后续问题?题。如果我想在该机器上在后台运行的远程机器上执行命令,我如何让 ssh 命令返回?当我尝试在命令末尾包含与号 (&) 时,它就会挂起。该命令的确切形式如下所示:
ssh user@target "cd /some/directory; program-to-execute &"
有任何想法吗?需要注意的一点是,登录到目标机器总是会产生一个文本横幅,并且我设置了 SSH 密钥,因此不需要密码。
我在一年前写的一个程序中遇到了这个问题——结果答案相当复杂。您需要使用 nohup 以及输出重定向,如关于nohup的 wikipedia artcle 中所述,为方便起见,在此处复制。
例如,当通过 SSH 登录时,Nohuping 后台作业很有用,因为后台作业可能会导致 shell 由于竞争条件而在注销时挂起 [2]。这个问题也可以通过重定向所有三个 I/O 流来解决: nohup myprogram > foo.out 2> foo.err < /dev/null &
例如,当通过 SSH 登录时,Nohuping 后台作业很有用,因为后台作业可能会导致 shell 由于竞争条件而在注销时挂起 [2]。这个问题也可以通过重定向所有三个 I/O 流来解决:
nohup myprogram > foo.out 2> foo.err < /dev/null &