我的一个gateway-server-service-8211.service 服务,本机执行 systemctl start gateway-server-service-8211.service 都可以成功,如果使用脚本远程执行这个脚本:
ssh 192.168.31.152 "systemctl daemon-reload&& systemctl start gateway-server-service-8211.service" 很多时候不成功,根据日志,远程启动瞬间返回 143代码,根本没有拉起gateway服务。
如果出现上述问题,可以使用如下方式:
ssh your_user@192.168.31.152"sudo systemctl daemon-reload && sudo systemctl restart gateway-server-service-8211.service && sudo systemctl is-active --quiet gateway-server-service-8211.service"
为什么这么写?
sudo1 确保有权限操作 systemd。
restart通常比先 stop 再 start 更稳健。
&& 确保前一步成功才执行下一步。
is-active --quiet这步最关键。启动命令发出去后,立即检查服务状态。如果服务启动瞬间挂掉(比如配置错误),这个命令会返回非 0,Jenkins 就会立刻报错,而不是傻等。