关于 systemd 服务如何重启的困惑

关于 systemd 服务如何重启的困惑

我仍然对 systemd 服务处于活动状态、进程仍在运行、未运行等感到困惑。

假设我有以下名为 my_script.sh 的基本 shell 脚本:

#!/bin/sh
touch /my_dir/my_file.txt
echo "Hello from my_script.sh" >> /my_dir/my_file.txt

我有一个名为 my_service.service 的系统服务,它调用 my_script.sh 如下:

[Unit]
Description=my service 

[Service]
Type=simple
ExecStart=sh /my_dir/my_script.sh
RemainAfterExit=yes
Restart=always

[Install]
WantedBy=multi-user.target

事实上Restart=always,这是否意味着一旦我的 shell 脚本执行完毕,它就应该一次又一次地执行,从而不断写入文件?

我的理解是,使用Restart=always,无论是否干净退出,服务都会重新启动。这个说法我不太理解。 my_script.sh 执行后会干净退出吗?

现在RemainAfterExit=yes,就我而言,定义或不定义这条线会产生什么影响?

预先感谢您消除任何疑问。

答案1

此行意味着当脚本以成功退出代码结束RemainAfterExit=yes时,服务显示为活动状态。ExecStart

此行Restart=always意味着在接下来的每个事件上重新启动:

  • 清除退出代码或信号
  • 不干净的退出代码
  • 信号不干净
  • 暂停
  • 看门狗

如果您不需要在某些退出代码上重新启动服务,请选中此选项: RestartPreventExitStatus=

有关 systemd.service 的更多信息有

相关内容