如何让Ubuntu虚拟机上的GitHub Actions自托管运行器持续运行?
Ubuntu 上 GitHub Actions 自托管运行器持续运行的最佳实践
方法1:通过 systemd 管理运行器(推荐)
这是最稳定的生产级方案,能让运行器以系统服务形式后台运行,支持开机自启、异常自动重启,完全不受终端连接状态影响。
- 创建 systemd 服务配置文件
sudo nano /etc/systemd/system/github-runner.service
- 将以下内容写入文件,注意替换
/path/to/your/runner/directory为你实际的运行器安装目录:
[Unit] Description=GitHub Actions Self-hosted Runner After=network.target [Service] User=root Environment="RUNNER_ALLOW_RUNASROOT=1" WorkingDirectory=/path/to/your/runner/directory ExecStart=/path/to/your/runner/directory/run.sh Restart=always RestartSec=5 [Install] WantedBy=multi-user.target
- 重载 systemd 配置并启动服务
sudo systemctl daemon-reload sudo systemctl start github-runner # 设置开机自启 sudo systemctl enable github-runner
- 查看运行状态
sudo systemctl status github-runner
方法2:使用 nohup 后台运行(临时场景适用)
适合临时测试或短时间运行,无需额外配置,但进程异常退出后不会自动重启。
进入运行器安装目录,执行以下命令:
RUNNER_ALLOW_RUNASROOT=1 nohup ./run.sh > runner.log 2>&1 &
nohup让进程脱离终端控制,断开连接后不会终止> runner.log 2>&1将所有输出重定向到runner.log文件,方便后续查看
查看运行中的进程:
ps aux | grep run.sh
停止运行器:
kill <进程ID>
方法3:使用 tmux/screen 保持会话(交互场景适用)
适合需要偶尔查看运行器实时输出、进行交互操作的场景,断开连接后会话仍会在后台保持。
以 tmux 为例:
- 安装 tmux
sudo apt update && sudo apt install tmux -y
- 创建新会话并启动运行器
tmux new -s github-runner # 在会话内执行启动命令 RUNNER_ALLOW_RUNASROOT=1 ./run.sh
脱离会话(保持后台运行)
按下快捷键Ctrl+B后松开,再按D,即可回到终端主界面,此时断开连接不会影响运行器。恢复会话(重新连接虚拟机后)
tmux attach -t github-runner
- 关闭会话
进入会话后,按下Ctrl+B再按&,或直接执行:
tmux kill-session -t github-runner
方案选择建议
- 生产环境长期运行:优先用 systemd 服务,稳定性最高,维护成本低
- 临时测试:用 nohup 快速启动
- 需要交互/实时查看输出:用 tmux/screen
内容的提问来源于stack exchange,提问作者Shikha Priyedarshi
相关产品推荐
相关产品推荐

