參考:https://wiki.gentoo.org/wiki/Systemd
systemd 支持普通用戶定義的 unit[s] 開機啟動
- systemctl --user enable/disable/start/stop/daemon-reload... xxx.timer/xxx.service...
注:
- --user 不可省略,因為默認是執行 systemctl [--system],對於系統級 unit[s] 來說,不必顯式添加 --system 選項
用戶自定義的 unit[s] 可以放置在如下四個位置
- /usr/lib/systemd/user:優先級最低,會被高優先級的同名 unit 覆蓋
- ~/.local/share/systemd/user
- /etc/systemd/user:全局共享的用戶級 unit[s]
- ~/.config/systemd/user:優先級最高
注:
- 用戶級 unit 與系統級 unit 相互獨立,不能互相關聯或依賴
- 用戶級 unit 運行環境用 default.target,系統級通常用 multi-user.target
- 即使用戶不登陸,其定制的服務依然會啟動
示例:backup-work.timer
[Unit] Description=daily backup work RefuseManualStart=no RefuseManualStop=no [Timer]
#系統異常關機錯過的定時任務,是否后續補救 Persistent=false #每次開機 10 分鍾之后開始生效
OnBootSec=10min
#每天 11:30 執行
OnCalendar=Mon-Fri *-*-* 11:30:00 Unit=backup-work.service [Install] WantedBy=default.target
示例:與 timer 配套的 unit(backup-work.service)
[Unit] Description=daily backup work RefuseManualStart=no RefuseManualStop=yes [Service] Type=oneshot ExecStart=/home/<user>/scripts/backup-work.sh
...
