我在 Mac Mini 服务器上有一个脚本,它可以缓慢地下载一个几 GB 的文件。我想通过 SSH 从另一台 (Linux) 服务器启动此脚本,ssh mac-server 'nohup /path/to/script arguments'
但一旦我知道该脚本已成功启动,就立即终止 SSH 连接。一旦启动,SSH 连接就没有任何用处,在下载过程中系统性地在某个地方失败,并阻止在 Linux 服务器上执行。
我不能只这样做ssh -f
,ssh &
因为如果脚本无法启动(或者无法访问 mac),我需要命令在 linux 服务器上失败。
答案1
这个问题已经ServerFault 上的详细说明和解答。
综上所述,找到了2个解决方案:
用于
nohup
启动异步任务+关闭文件描述符:exec 0>&- # close stdin exec 0<&- exec 1>&- # close stdout exec 1<&- exec 2>&- # close stderr exec 2<&-
用于
screen -d -m
启动异步任务。然后可以检查(使用screen -ls
)或在稍后重新附加。