如何在自托管Ubuntu VM中配置Azure Agent开机自动启动
实现Linux VM上Azure自托管Agent开机自动启动
要实现VM开机自动执行agent目录下的./run.sh,可以根据可靠性需求选择下面两种常见方案,推荐优先使用systemd托管的方式。
方案1:systemd服务托管(推荐)
这种方式是现代Linux发行版的标准进程管理方案,能解决开机时序依赖、进程异常退出自动重启、日志统一采集的问题,比手动脚本触发的稳定性高很多。
操作步骤:
- 先确认两个核心信息:你平时手动启动agent所用的Linux用户名、agent安装目录的绝对路径(比如
/home/zhangsan/myagent),后续配置里全部替换成你自己的实际值,注意不要用root身份运行agent,避免权限安全风险。 - 在
/etc/systemd/system/路径下新建名为azure-pipelines-agent.service的服务文件,写入如下配置:[Unit] Description=Azure Pipelines Self-hosted Agent # 等待网络完全就绪后再启动,避免agent连不上云端服务 After=network-online.target Wants=network-online.target [Service] # 替换为实际运行agent的普通用户 User=your-agent-run-user # 替换为agent所在目录的绝对路径 WorkingDirectory=/home/your-agent-run-user/myagent # 启动命令和你手动执行的完全一致 ExecStart=/home/your-agent-run-user/myagent/run.sh # 进程异常退出10秒后自动重启 Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target - 依次执行下面的命令完成配置:
- 重载systemd配置使其识别新建的服务文件:
systemctl daemon-reload - 配置服务开机自动启动:
systemctl enable azure-pipelines-agent.service - 立即启动服务(不需要重启VM就能生效):
systemctl start azure-pipelines-agent.service - 检查服务运行状态:
systemctl status azure-pipelines-agent.service,输出显示active (running)即代表配置成功。
后续查看agent实时运行日志,可以直接执行journalctl -u azure-pipelines-agent -f。
- 重载systemd配置使其识别新建的服务文件:
方案2:crontab @reboot 触发(轻量快速配置)
如果不需要进程异常重启的托管能力,只是单纯实现开机执行一次脚本,可以用定时任务的开机触发逻辑,配置速度更快:
- 切换到平时手动启动agent的普通用户,执行
crontab -e打开定时任务编辑界面。 - 在文件末尾追加一行配置,把路径替换成你自己的实际agent绝对路径:
@reboot cd /home/your-agent-run-user/myagent && ./run.sh - 保存退出即可,下次VM开机就会自动执行对应命令。
常见配置踩坑点
- 所有路径必须写绝对路径,不要用相对路径,否则开机执行时会因为工作目录不匹配找不到脚本。
- 运行agent的用户必须和当初配置agent时的用户完全一致,否则会出现配置文件读取失败、权限不足的启动报错。
- 如果是没有systemd的老旧发行版(比如CentOS 6),可以直接把执行脚本的命令写到
/etc/rc.local文件里,给该文件加可执行权限chmod +x /etc/rc.local,即可实现开机触发。
内容的提问来源于stack exchange,提问作者Sud
相关产品推荐
相关产品推荐

