使用 SSH 进行远程异步执行

使用 SSH 进行远程异步执行

我在 Mac Mini 服务器上有一个脚本,它可以缓慢地下载一个几 GB 的文件。我想通过 SSH 从另一台 (Linux) 服务器启动此脚本,ssh mac-server 'nohup /path/to/script arguments'但一旦我知道该脚本已成功启动,就立即终止 SSH 连接。一旦启动,SSH 连接就没有任何用处,在下载过程中系统性地在某个地方失败,并阻止在 Linux 服务器上执行。

我不能只这样做ssh -fssh &因为如果脚本无法启动(或者无法访问 mac),我需要命令在 linux 服务器上失败。

答案1

这个问题已经ServerFault 上的详细说明和解答

综上所述,找到了2个解决方案:

  1. 用于nohup 启动异步任务+关闭文件描述符:

    exec 0>&- # close stdin
    exec 0<&- 
    exec 1>&- # close stdout
    exec 1<&- 
    exec 2>&- # close stderr 
    exec 2<&- 
    
  2. 用于screen -d -m启动异步任务。然后可以检查(使用screen -ls)或在稍后重新附加。

相关内容