如何在每個星期六使用 systemd 啟動時執行腳本?

如何在每個星期六使用 systemd 啟動時執行腳本?
[Unit] 
Description=run test service

[Timer]
OnCalendar=Sat *-*-* 00:00:01
Unit=test.service
Persistent=true

[Install]
WantedBy=timers.target

在上面的例子中一切正常。但我必須在早上 10 點前啟動我的 Linux 作業系統。

我的目標是:我想在每週六的任何時間啟動 Debian 10,然後在啟動時運行腳本。如果我在周六(同一天)重新啟動我的 Linux 機器兩到三次,我不想再次運行腳本,只想運行一次。可以用 systemd 來做到這一點嗎?

我的 Gnu-Linux 作業系統是Debian GNU/Linux 10(破壞者)和 systemctl --version 是系統 241 (241)

答案1

「Linux 作業系統」太籠統了能夠診斷您的特定係統。請執行以下四個命令並報告結果(如果命令不可用,則包括錯誤)。該報告將告訴您安裝了哪種類型的「linux os」以及正在運行哪個版本的 systemd:

lsb_release -a
systemctl --version
/sbin/init --version
busctl --system get-property org.freedesktop.systemd1 \
                           /org/freedesktop/systemd1 \
                           org.freedesktop.systemd1.Manager \
                           Version

在目前(截至 2019 年 8 月)版本的 systemd 上

將即時計時器設定為在周六的任何時間觸發

OnCalendar=Sat *-*-* 00:00:01

並刪除單片定時器

OnBootSec=2

的效果

Persistent=true

是系統將在每週六 00:00:01 之後嘗試每週執行一次腳本。該腳本每週六僅運行一次,通常是第一次啟動。如果系統在周六未開啟,則它將在一周中的任何其他日期運行;如果系統在周五過夜,則它將在 00:00:01 運行。

持久=

採用布林參數。如果為 true,則上次觸發服務單元的時間將儲存在磁碟上。當定時器被啟動時,如果服務單元在定時器不活動期間至少被觸發一次,則服務單元會立即觸發。這對於在機器關閉時彌補錯過的服務運行很有用。請注意,此設定僅對使用 OnCalendar= 配置的計時器有效。預設為 false。

相關內容