如何使用不同的脚本为systemd编写脚本

如何使用不同的脚本为systemd编写脚本

这里是 systemd 的新手 - 本质上我有 3 个不同的脚本:activate.shtoggle.shdeactivate.sh。我想使用 systemd 服务和计时器来执行以下操作:

  • 当服务第一次启动时,运行activate.sh 一次
  • 使用计时器,我想连续运行toggle.sh直到......
  • 服务已停止,在这种情况下运行deactivate.sh

我尝试过尝试不同的ExecStartExecStartPreExecStopRemainAfterExit等,但没有成功。有人能指出我正确的方向吗?

答案1

您应该创建三个新的单元文件,如下所示(未经测试):

mything.service:

[Unit]
Description=My custom thingy

[Service]
Type=service
ExecStart=/path/to/activate.sh
ExecStop=/path/to/deactivate.sh

[Install]
WantedBy=multi-user.target
Wants=togglemything.timer

togglemything.timer:

[Unit]
Description=My custom timer thingy

[Timer]
OnCalendar=hourly

togglemything.service:

[Unit]
Description=Toggle my custom thing

[Service]
Type=oneshot
ExecStart=/path/to/toggle.sh

最后两个必须在点之前具有相同的名称,否则计时器将不会执行任何操作。

您只需要做的systemctl start mything就是让事情顺利进行。

相关内容