Contents

檢查 cron 是否在 Linux 上運行的 4 種方法

cron 是 Linux 和類別 Unix 作業系統的作業排程器。它預先安裝在所有 Linux 發行版上,最適合自動化重複任務。

為了使 Cron 有效運行,定期驗證該實用程式是否在您的系統上正常運行非常重要。有多種方法可以實現此目的,例如檢查 Cron 服務的狀態、查看與 Cron 相關的日誌檔案、執行模擬的 Cron 作業以及在枚舉系統上目前活動的進程。

什麼是 cron?

Cron 是一個隱形的主力,可以自主管理和調度系統流程。此任務排程器使監督和維護軟體生態系統的使用者能夠按照預定的時間軸或間隔組織重複的活動,例如命令列指令或腳本程式。

Cron 是一種調度實用程序,可實現重複系統維護和管理任務的自動化,這些任務可能需要頻繁執行才能獲得最佳效能。

Linux 系統存在多種 Cron 實現,其可用性取決於特定的發行版。例如,廣泛使用的「Vixie cron」——它的名字來自它的創建者 Paul Vixie——很流行,並且是 Debian 和 Ubuntu 等發行版的預設選項。相反,Arch 作業系統選擇使用 systemd 計時器而不是傳統的 Cron 實作。

Cronie 是 Vixie cron 時間調度實用程式的替代實現,可使用 Pacman 套件管理器透過 Arch Linux 套件儲存庫輕鬆取得。為了在您的系統上安裝 Cronie,您可以在終端機或 shell 環境中執行命令「pacman-S cronie」。

 sudo pacman -S cronie 

然後啟動並啟用它:

 sudo systemctl start cronie.service
sudo systemctl enable cronie.service 

若要確定係統上目前安裝的 cron 版本,您可以使用指令「man cron」來參考其手冊頁。這將提供有關特定 cron 安裝的特定版本和可用功能的資訊。

 man cron 

如何檢查 cron 是否在 Linux 上執行

為了確定 cron 實用程式是否正常運行,有多種驗證方法。

檢查 Linux 上的 cron 服務狀態

要驗證 cron 服務是否正常運行,可以從終端機使用基本的 Linux 命令。若要存取終端,請按鍵盤上的“Ctrl + Alt + T”,然後使用“systemctl”指令來評估 cron 的狀態。

 sudo systemctl status cron 

出現上述輸出表示 cron 實用程式在您的計算環境的限制內正常運行,這表示操作成功。

/bc/images/cron-status.jpg

然而,當 Cron 處於休眠狀態時會發生什麼,如下圖所示?

/bc/images/cron-stopped.jpg

您可以像這樣啟動服務:

 sudo systemctl start cron.service 

為了確保 cron 服務在系統重新啟動時自動啟動,請在啟動其操作後按照以下步驟操作:

 sudo systemctl enable cron.service 

檢查 Linux 上的 cron 日誌

驗證 cron 守護程式是否正常運作的另一種方法是檢查其關聯的日誌文件,這些文件通常位於 Linux 系統上的/var/log/syslog 目錄中。

Syslog 是基於 Linux 的系統採用的標準化通訊協議,用於將事件日誌資料整合到中央儲存庫中。這種日誌聚合有助於各種基本的 IT 操作,例如進行審計、實施監控和效能評估技術、透過故障排除工作解決問題、產生報告以及執行其他相關維護活動。

若要存取包含 cron 作業記錄的系統日誌,可以執行下列特定指令:

 grep 'cron' /var/log/syslog 

您應該會看到相同的顯示,確認 cron 守護程式功能正常,以及其日誌記錄在指定的日誌檔案中:

/bc/images/cron-logs.jpg

為了在 syslog 資料夾中儲存的更全面的系統日誌中隔離和分析特定於 cron 的日誌,人們可能會發現由於存在與 cron 任務無關的附加日誌條目而具有挑戰性。為了解決這個問題,一種涉及建立僅包含從 syslog 檔案中提取的 cron 條目的專用日誌檔案的方法可能有助於有效檢查和分析所需資訊。

在此範例中,我們將使用 Nano 文字編輯器作為模型,但您可以自由使用您認為適合您的目的的任何應用程式。

使用nano開啟以下文件:

 nano /etc/rsyslog.d/50-default.conf 

找到以以下內容開頭的行:

 #cron.* 

請刪除以下行中的「#」符號以取消註釋,並按照後續說明使用指定的鍵盤快速鍵儲存並退出檔案。

若要重新啟動 rsyslog 服務,您可以在終端機或命令提示字元中執行下列命令:csssudo systemctl restart rsyslog.service

 sudo service rsyslog restart 

計劃任務的日誌檔案將儲存在「/var/log」目錄中,特別是「cron.log」檔案中。

如果您的系統的日誌檢索介面在取得名為「cron」的調度公用程式執行的活動記錄時遇到困難,則可能表示該特定任務排程器目前處於休眠狀態。若要驗證 cron 是否正常運行,您可以採用替代方法來驗證其運行。

在 Linux 上執行 cron 作業

驗證系統的 cron 功能是否有效運作的一種方法是建立一個簡單的測試 cron 作業並執行它。如果作業成功完成其指定的任務,則表示 cron 功能正在如預期運作。

為了連續執行一系列命令,需要編寫 Bash 腳本,它使人們能夠透過程式設計技術在 Linux 作業系統中自動執行重複的活動。

若要產生以 Bash 腳本形式確認排程任務功能的文字文件,我們將透過執行特定​​命令確定目前工作目錄來啟動該程序。

 pwd 

若要在現有目錄中建立新文件,您可以使用“touch”命令,然後指定所需的文件名稱且不指定任何參數。這將在目前位置產生一個具有指定名稱的空白文件。

 touch file.txt 

之後,建議使用文字編輯器 Nano 產生 Bash 腳本。

 nano script.sh 

將以下內容新增至文件:

 #! /usr/bin/bash
echo "my cronjob is working!" >> /home/username/file.txt 

/bc/images/bash-file-1.jpg

請確保指定產生的文字檔案的準確位置。按“Ctrl + X”,然後按“Y”,然後按鍵盤上的“Enter”鍵來結束您的工作。

授予 Bash 腳本執行權限:

 chmod \+x script.sh 

為了建立執行腳本的計劃任務,需要在終端機或命令提示字元中使用以下命令來存取和編輯 cron 作業文件:

 crontab -e 

在本文件的結尾處,請插入以下聲明。

 * * * * * /path/to/script.sh 

配置項的有效期限由五個星號表示,每個星號對應其有效性的不同面向。具體來說,第一個星號表示分鐘(範圍從0 到59),而第二個星號表示小時(表示完整的24 小時週期,例如1:00 PM 對應於13 點,午夜從0 點開始)。第三個星號代表星期幾,範圍從0到6,其中0和6都代表星期日。第四個星號表示月份,從 0 到 7,其中 0 代表一月,7 代表七月。最後,第五個星號表示年份

該檔案包含有關檔案名稱及其相應目錄路徑的資訊。

完成儲存和關閉文件的任務後,人們可能會看到命令列介面中顯示一條通知,上面寫著「cron 作業已安裝。

若要驗證排程任務是否已成功執行,請導覽至「file.txt」的儲存位置,並使用「cat」指令在控制台上顯示其內容。

 cat file.txt 

/bc/images/bash-output.jpg

這表明 cron 工作正常。

檢查 Linux 上正在運行的進程

驗證 cron 守護程式是否有效運作的另一種方法是檢查作業系統中目前活動進程的清單。這可以透過使用“ps”命令來完成,該命令顯示有關所有正在運行的進程的資訊。在這樣的列舉中,cron 守護程序將出現在名稱「crond」下。

 ps aux | grep cron 

/bc/images/crond-process.jpg

上述驗證證實了 Linux 作業系統中 cron 進程的運作。

使用 cron 自動執行和排程系統任務

Cron 是 Linux 作業系統中的重要實用程序,它使其能夠以最佳方式運行。有時,在解決系統問題時,可能需要驗證 Cron 是否正常運作。

為了確定 cron 服務是否正常運行,有多種方法可用。一種選擇是透過使用命令列實用程式(例如“log”或“grep”)檢查 cron 活動的日誌檔案。此外,人們可以使用「ps」或「top」等工具查閱系統上當前活動進程的列表,這些工具將顯示有關當前正在執行的任何計劃任務的資訊。此外,可以使用名為「systemctl」的實用程式透過觀察 cron 的當前狀態來驗證 cron 的運作狀態。最後,嘗試執行測試 cron 任務可以深入了解它是否正常運作以及是否能夠如預期執行。

Cron 是一個實用程序,可以按照指定的時間間隔自動執行命令或腳本,從而促進日常系統任務的無縫管理。其中許多任務是由軟體安裝產生的,進一步簡化了管理流程。透過自動化和調度日常操作,可以優化效率和系統穩定性,從而有助於整體提高效能。