我正在尝试在 Bionic 上创建和安装一对自定义的 systemd 计时器和服务单元,用于定期运行命令。我知道应该将文件放入/etc/systemd/system然后我应该运行systemctl daemon-reload,但是我不清楚是否需要启用或启动任何东西才能完全安装和“运行”计时器,以及我可以的几篇文章发现地址这一点都给出了不同的信息。
我的.timer文件是:
[Unit]
Description=Run custom command periodically
[Timer]
Unit=my-custom-command.service
OnCalendar=*-*-* 0/8:00:00
[Install]
WantedBy=timers.target
Run Code Online (Sandbox Code Playgroud)
我的.service文件是:
[Unit]
Description=Run a custom command
OnFailure=mail-systemd-failure@%n.service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/custom-command
User=dedicated-user
Group=dedicated-user
Run Code Online (Sandbox Code Playgroud)
我读过的相互矛盾的文章是:
这篇文章说运行:
systemctl daemon-reload
systemctl enable $NAME.timer
systemctl start $NAME
Run Code Online (Sandbox Code Playgroud)
据我了解,后一个命令与 相同systemctl start $NAME.service,我希望立即运行服务定义的命令,这不是我想要做的。
这个要点说只是运行:
systemctl daemon-reload
systemctl start $NAME.timer
Run Code Online (Sandbox Code Playgroud)这篇文章说运行:
systemctl enable $NAME.timer
systemctl start $NAME.timer
Run Code Online (Sandbox Code Playgroud)那么我是否启用和/或启动计时器(或其服务?),两者之间究竟有什么区别?根据单元文件是新安装还是在编辑后重新加载,我需要运行的命令是否会发生变化?
我需要我将使用的确切代码,因为我无法弄清楚。我曾经crontab -e设置一个 cron 作业,但是当我保存它时,它永远不会工作。我也只是想运行一个newmail.sh从 root 用户调用的文件。