Raspberry Pi OS 上的自動啟動程式和排程命令

Jinku Hu 2023年1月30日 2022年5月18日
  1. 使用 Cron Daemon 在 Raspberry Pi OS 上安排任務
  2. 使用 Anacron 在 Raspberry Pi OS 上安排任務
Raspberry Pi OS 上的自動啟動程式和排程命令

本文將介紹幾種在樹莓派作業系統上在特定時間自動排程程式和命令的方法。

使用 Cron Daemon 在 Raspberry Pi OS 上安排任務

cron 守護程式的基礎知識在我們的一篇文章中進行了介紹,如果你不熟悉它,我們建議你先閱讀。在這種情況下,我們將演示如何在作業系統成功啟動後立即自動啟動程式。

請記住,crontab 檔案包含每個計劃作業的一行,其中前五項是時間-日期欄位。相反,當我們想安排一個 cron 作業在系統啟動時執行時,我們必須使用一個特殊的關鍵字說明符 - @reboot

cron 為常見時期提供了幾個關鍵字,例如 @daily@weekly@monthly@hourly 等。

以下 crontab 條目定義了一個 cron 作業以在系統啟動時執行 sleep 命令。請注意,所有五個日期時間欄位都使用 @reboot 關鍵字替換。

當在同一個 cron 作業條目中使用特殊關鍵字時,你不會指定其他欄位。

@reboot sleep 30m

在這種情況下,我們選擇了 sleep 命令,因為它是一種建立長時間執行程序的簡單方法,以後可以使用不同的命令對其進行檢查。

上面的示例命令執行 sleep 程式 30 分鐘,然後自動退出。

你可以通過傳遞訊號來顯式終止它。首先,你需要使用以下命令查詢程序 ID。

ps -A | grep sleep

輸出:

514 ?        00:00:00 sleep

然後你可以執行帶有 PID(程序 ID)引數的 kill 命令來終止 sleep 程式。

kill 514

關於 crontab 配置檔案的更多詳細資訊可以在相應的 Debian 手冊頁中找到。

使用 Anacron 在 Raspberry Pi OS 上安排任務

cron 非常適合在不停機的情況下執行系統,而普通使用者經常關閉他們的裝置。後一種情況可能會導致錯過 cron 作業,因此我們可能需要一個解決方案來在系統執行後執行這些作業。

anacron 類似於 cron,它提供非同步排程任務,這意味著錯過的任務最終將在某個時間執行。但是,anacron 僅支援一天的最小時間間隔;因此它可能不適合許多場景。

anacron 任務條目位於 /etc/anacrontab 配置檔案中。

配置檔案通常包含多個條目,但你可以在檔案末尾附加使用者定義的任務,甚至可以新增以 # 字元開頭的自定義註釋。

在下面的示例中,我們建立了一個日常任務來執行 sleep 30m 命令。

1   10  cron.daily  sleep 30m

請注意,第一列 (1) 指定任務執行之間的間隔天數,而第二列表示給定任務在系統啟動時執行時延遲的分鐘數。

錯過的任務預計會出現後一種情況,因為系統在指定時間沒有執行,anacron 將在下次啟動時執行它們。但是,你可能希望延遲一些任務以減輕系統啟動時的過度負載,因此是第二列。

anacron 的一個缺點是你的使用者必須具有管理員許可權才能設定任務。在 Raspberry Pi OS 上,pi 使用者可以通過使用 sudo 字首命令修改 /etc/anacrontab 來設定 anacron 任務。

你可以在此處找到 anacron 的其他配置詳細資訊。

Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn

相關文章 - Raspberry Pi

相關文章 - Raspberry Pi OS