使用 systemd 的 timer

No Comments
  • 將二個單元檔(unit)置於 /lib/systemd/system
  • 其中之一是 .service,是描述執行目的
  • 另一是 .timer,是用以觸發該 service
  • 此二者的名稱必須相同
  • 描述時(被 systemd 解析時),必須使用絕對路徑
  • 創建時,存取權限須留意
  • 如下範例:
  • 每隔 30 秒將當時時間寫入 time_records.log
  • 而 service 是去執行 write_current_time.sh
  • write_current_time.sh
#! /usr/bin/env bash
echo "$(date)" >> /home/ken/tasks/time_records.log
  • time_records.service:當啟用時,就會先被執行一次
[Unit]
    Description=now time service
[Service]
    ExecStart=/bin/bash /home/ken/tasks/write_current_time.sh
[Install]
    WantedBy=multi-user.target
  • time_records.timer
[Unit]
    Description=run service at every 30s
[Timer]
    OnUnitActiveSec=30s
    Unit=time_records
[Install]
    WantedBy=timers.target
  • 備註:
    複合指令的用法例:
    ExecStart=/bin/sh -c ‘until ping -c1 google.com; do sleep 1; done;’
  • 參考資料
  • https://wiki.archlinux.org/title/Systemd/Timers
  • https://man.archlinux.org/man/systemd.timer.5
  • https://man.archlinux.org/man/systemd.service.5
  • https://man.archlinux.org/man/systemd.1.zh_TW
  • http://www.ruanyifeng.com/blog/2018/03/systemd-timer.html
  • https://www.cnblogs.com/operationhome/p/10720067.html

Categories: Linux

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

PHP Code Snippets Powered By : XYZScripts.com