答案1
~/.config/systemd/user/send-mail.service
首先,创建一个包含以下内容的systemd 服务文件:
[Unit]
Description=Sends mail that reminds me of an anniversary
[Service]
; The l flag for bash creates a login shell so Mutt can access our environment variables which contain configuration
ExecStart=/bin/bash -lc "echo \"$(whoami) created this message on $(date) to remind you about...\" | mutt -s \"Don't forget...\" [email protected]"
您可以通过执行来测试发送邮件是否有效
systemctl --user daemon-reload && systemctl --user start send-mail.service
这应该发送一封电子邮件至[email protected]
。
~/.config/systemd/user/send-mail.timer
然后,使用以下内容创建一个计时器:
[Unit]
Description=Timer for writing mail to myself to remind me of anniversaries
[Timer]
; Trigger the service yearly on September 5th
OnCalendar=*-09-05
; Send a mail immediately when the date has passed while the machine was shut down
Persistent=true
AccuracySec=1us
; Set the timer to every ten seconds (for testing)
; OnCalendar=*:*:0/10
[Install]
WantedBy=timers.target
请注意,计时器的内容不引用服务。它仍然有效,因为服务和计时器除了后缀.service
和 之外 具有相同的名称.timer
。如果您想以不同的方式命名计时器和服务,请Unit=
在计时器[Timer]
部分使用。
让你的计时器在启动时启动
systemctl --user daemon-reload && systemctl --user enable send-mail.timer
您现在应该能够看到计时器了systemctl --user list-timers --all
。
要启动计时器,请执行以下操作
systemctl --user start send-mail.timer
要检查 systemd 如何解释您的日期,您可以使用systemd-analyze calendar *:0/2
或systemd-analyze calendar quarterly
。另外,请查看手动的关于systemd的时间格式。