使用Rundeck 4.10在远程节点执行脚本时进程自动终止问题求助
Rundeck应用启动后自动终止问题解决
核心原因:Rundeck通过SSH执行完启动脚本后,SSH会话会立即关闭,此时启动的应用进程属于该SSH会话的进程组,会被系统发送的
SIGHUP信号终止,这是Linux的默认行为,和Rundeck本身配置无关。常用解决办法:
- 调整启动脚本,让进程脱离当前会话:
- 在启动命令后追加
& disown,示例:./start-myapp.sh & disown - 用
nohup包裹启动命令,将输出重定向到空设备避免日志占用:nohup ./start-myapp.sh > /dev/null 2>&1 &
- 在启动命令后追加
- 借助终端复用工具后台启动(需目标节点提前安装):
- 用
screen:screen -dmS app_runner ./start-myapp.sh - 用
tmux:tmux new-session -d -s app_runner ./start-myapp.sh
- 用
- 把应用配置成系统服务(推荐):
- 将应用注册为systemd服务,Rundeck只需执行
systemctl start myapp.service命令,这种方式进程由系统托管,不会受SSH会话影响,还能方便管理启停、自启等。
- 将应用注册为systemd服务,Rundeck只需执行
- 调整启动脚本,让进程脱离当前会话:
关于Rundeck配置修改:不需要调整Rundeck的任何核心配置文件,问题不在Rundeck配置本身。
同类问题情况:社区里很多用户碰到过这个问题,本质都是SSH会话结束导致子进程被回收,上面的方法是社区公认的有效解决方案。
内容的提问来源于stack exchange,提问作者Vanaan
相关产品推荐
相关产品推荐

