小编典典

让 ssh 在目标机器的后台执行命令

all

这是您如何在 shell 脚本中使用 ssh的后续问题?题。如果我想在该机器上在后台运行的远程机器上执行命令,我如何让 ssh
命令返回?当我尝试在命令末尾包含与号 (&) 时,它就会挂起。该命令的确切形式如下所示:

ssh user@target "cd /some/directory; program-to-execute &"

有任何想法吗?需要注意的一点是,登录到目标机器总是会产生一个文本横幅,并且我设置了 SSH 密钥,因此不需要密码。


阅读 126

收藏
2022-04-06

共1个答案

小编典典

我在一年前写的一个程序中遇到了这个问题——结果答案相当复杂。您需要使用 nohup
以及输出重定向,如关于nohup的 wikipedia artcle
中所述,为方便起见,在此处复制。

例如,当通过 SSH 登录时,Nohuping 后台作业很有用,因为后台作业可能会导致 shell 由于竞争条件而在注销时挂起
[2]。这个问题也可以通过重定向所有三个 I/O 流来解决:

nohup myprogram > foo.out 2> foo.err < /dev/null &
2022-04-06