已启用的自定义 systemd 服务未在启动时启动

已启用的自定义 systemd 服务未在启动时启动

我的目标是每次启动后创建一个文件。下面的代码是简化版本。

这是systemd服务单元文件/lib/systemd/system/createfile.service

[Unit]
Description=Creates a file

[Service]
Type=simple
ExecStart=touch /home/ubuntu/halfdan_was_here

[Install]
WantedBy=multi.user.target
  • systemctl start createfile.service手动执行时将按/home/ubuntu/halfdan_was_here预期创建。
  • 使用journalctl -u createfile.service服务执行情况报告 时
    $ journalctl -u createfile.service
    
    -- Logs begin at Thu 2022-09-01 12:58:03 CEST, end at Thu 2022-09-01 14:11:33 CEST. --
    Sep 01 14:01:24 runner-0 systemd[1]: Started Creates a file.
    Sep 01 14:01:24 runner-0 systemd[1]: createfile.service: Succeeded.
    
  • 使用后systemctl enable createfile.service服务显示为“已启用”:
      $ systemctl status createfile.service
    
      ● createfile.service - Creates a file
           Loaded: loaded (/lib/systemd/system/createfile.service; enabled; vendor preset: enabled)
           Active: inactive (dead)
    
  • 手动删除文件并重新启动后,该文件不会被创建。journalctl -u createfile.service也没有显示它已被执行。
  • 我也尝试过Requires&的不同设置After,但没有成功。

谢谢您的任何建议!

答案1

我的目标是每次启动后创建一个文件。

我正在做同样的事情,最终我选择了简单的方法,并将其添加到我的用户的 crontab 中(使用crontab -e):

@reboot touch /home/am/last_reboot

似乎创建 systemd 服务对于在启动时触碰文件来说有点过头了。crontab 的优点在于它绝对简单,对我来说这很有用!

相关内容