Systemd 自动重启服务如果停止则无法工作

Systemd 自动重启服务如果停止则无法工作

我想向项目添加一项自动启动服务的功能。

我的服务文件包含:

[Unit]
Description=example Server
After=network.target

[Service]
Type=idle
ExecStart=/opt/xxx/xxx/sample.sh   
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

我遵循的步骤是:

  1. 重新加载守护进程:systemctl daemon-reload

  2. 启用服务:systemctl enable sample

  3. 启动服务:systemctl start sample

  4. 检查状态:service sample status,这表明我的服务正在运行...

我想在服务崩溃或停止时自动启动该服务。

当我使用 停止服务时systemctl stop sample,它不会自动启动。知道如何实现这一目标吗?

答案1

Restart设置不是这样工作的;引用手册,

当进程的死亡是由于systemd操作(例如服务停止或重新启动)而导致时,服务将不会重新启动。

systemctl允许您指定您希望服务所处的状态:systemctl start指定它应该运行,systemctl stop指定它不应该运行。然后,systemd 会采取任何必要的步骤来使系统状态与您所请求的状态保持一致。

的目的Restart是维护所请求的系统状态,而不是保持服务在所有情况下运行。

如果您想验证 systemd 是否会在您的服务死机时重新启动您的服务,您需要直接kill服务主进程,不要求 systemd 停止它:

systemctl kill sample

相关内容