You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSH远程执行含后台命令的脚本无法立即返回,如何解决?

解决SSH调用脚本后等待后台进程结束的问题

修改后的脚本

#!/bin/bash
sleep 30 >/dev/null 2>&1 < /dev/null &
echo "disowning"
disown -a
echo "done"
exit

问题原因

你遇到的情况是因为sleep 30 &启动的后台进程默认继承了当前shell的标准输入、输出和错误流,而这些流和SSH会话的通道是绑定的。即便用disown分离了进程,SSH仍会等待所有关联的流关闭,因此要等sleep执行完才会返回。

关键修改说明

给sleep进程添加输入输出重定向:

  • >/dev/null:丢弃标准输出,避免输出流占用SSH会话通道
  • 2>&1:将标准错误重定向到标准输出,一并丢弃
  • < /dev/null:让进程不再读取标准输入,彻底脱离会话的输入流

这样处理后,sleep进程完全和SSH会话的IO通道解绑,脚本执行完exit后,SSH会立即返回,而sleep会在机器A的后台继续运行。

内容的提问来源于stack exchange,提问作者Marco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 21:33:09