修改 systemctl myService.service 文件后,当通过 bash sh 脚本通过 SSH 远程执行命令“sudo systemctl daemon-reload”时:
bash sh 脚本部分示例:
ssh -i "/myssh.key" myuser@host "sudo bash 'echo -e \"ExecStart=/mydir/run-service.sh\" >> /etc/systemd/system/myService.service'"
ssh -i "/myssh.key" myuser@host "sudo systemctl daemon-reload"
服务文件在远程服务器上已正确修改,但似乎守护程序重新加载命令对远程服务器没有影响。
但是,执行上述脚本后,通过 ssh 终端会话手动调用“sudo systemctl daemon-reload”,更改将正确重新加载。
将两个命令用 ; 分隔开在同一个 ssh 调用中不能解决问题。
服务器:Ubuntu 22.04.4 远程客户端(运行sh脚本):Windows WSL2 容器:没有
已解决
根据 Nick ODell 的建议,在命令之间添加 10 秒的睡眠时间解决了问题:
ssh -i "/myssh.key" myuser@host "sudo bash 'echo -e \"ExecStart=/mydir/run-service.sh\" >> /etc/systemd/system/myService.service'"
ssh -i "/myssh.key" myuser@host "sudo systemctl daemon-reload"