这里是 systemd 的新手 - 本质上我有 3 个不同的脚本:activate.sh
、toggle.sh
和deactivate.sh
。我想使用 systemd 服务和计时器来执行以下操作:
- 当服务第一次启动时,运行
activate.sh
一次 - 使用计时器,我想连续运行
toggle.sh
直到...... - 服务已停止,在这种情况下运行
deactivate.sh
我尝试过尝试不同的ExecStart
、ExecStartPre
、ExecStop
、RemainAfterExit
等,但没有成功。有人能指出我正确的方向吗?
答案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
就是让事情顺利进行。