強大且可靠,使用 Linux cron 命令安排任務
在我 Linux 之旅的早期,我開始欣賞操作系統的眾多命令行實用程序以及它們簡化常規任務的方式。例如,在我的 Windows 服務器上備份應用程序經常需要昂貴的附加軟件包。相比之下,該tar命令使備份 Linux 相對容易,而且功能強大且可靠。
然而,在備份電子郵件系統時,我面臨著另一個挑戰。由于人們正在使用該系統,因此無法在工作日或傍晚進行備份。備份必須在午夜之后進行,并且必須可靠。我習慣了 Windows 任務管理器,但在 Linux 上我要用什么呢?那時我才學會了 cron。
使用 cron 在 Linux 上安排任務
Cron 是一個用于自動執行預定命令的守護進程。學習如何使用 cron 需要一些學習理解和實驗,但很快我就使用 cron 來關閉我們的電子郵件服務器,將數據備份到壓縮的 tar 文件中,然后在凌晨 3 點重新啟動電子郵件服務。
cron 作業的命令存儲在 Linux 系統上的 crontab 文件中,該文件通常位于 /etc/crontab 中。使用 $ crontab -l 顯示 crontab 文件的內容。
使用$ crontab -e 編輯 crontab 文件。
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com
? crontab -e
如果您以后改變主意,該如何選擇另一個編輯器?要使用的命令是select-editor。
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com
? select-editor
某些系統默認使用Vi 編輯器進行 cron 編輯。您可以使用環境變量覆蓋此設置:
$ EDITOR=nano crontab -e
這允許您使用nano 編輯器來編輯您的個人 crontab(如果你還沒有,則會自動為您創建一個)。
在插入整數值之前,所有 crontab 命令都有用星號表示的參數。第一個表示分鐘,然后是小時、月中的某天、一年中的某月,最后是一周中的某天。
注釋前面有一個哈希。Cron 會忽略注釋,因此它們是一種很好的方式,可以讓您自己記下命令的作用及其重要性。
一個 cron 作業示例
假設您想在每周三凌晨 1 點使用 clamscan 掃描您的主目錄中的病毒和惡意軟件。您還想在每周五上午 5 點備份您的主目錄。使用 cron 和 crontab 文件可確保每周進行系統維護,無論您是否記得運行這些實用程序。
使用您自己的用戶名而不是我的用戶名“linuxmi”編輯您的 crontab 文件以包含以下內容:
# 掃描我的主目錄是否有病毒
0 1 * * 3 clamscan -ir /home/linuxmi/
# 備份主目錄
0 5 * * 5 tar -zcf /var/backups/home.tgz /home/linuxmi/
如果您使用的是 nano 編輯器,請使用Ctrl+O將文件寫出并使用Ctrl+X退出編輯器來保存您的工作。
提示如下,說明成功保存了。
crontab: installing new crontab
編輯文件后,使用crontab -l列出您的 cron 文件的內容,以確保它已正確保存。
您可以為系統所需的任何作業創建 crontab 作業。這充分利用了 cron 守護進程。
使用crontab -r刪除目前的時程表
從 Linux 命令行調度
cron 最難的部分是為那些領先的星號提供正確的值,但這已經不是什么秘密了。
時間格式如下:
t1 t2 t3 t4 t5 program
- 其中 t1 是表示分鐘,t2 表示小時,t3 表示一個月份中的第幾日,t4 表示月份,t5 表示一個星期中的第幾天。program 表示要執行的程序。
- 當 t1 為 * 時表示每分鐘都要執行 program,t2 為 * 時表示每小時都要執行程序,其余類推
- 當 t1 為 a-b 時表示從第 a 分鐘到第 b 分鐘這段時間內要執行,t2 為 a-b 時表示從第 a 到第 b 小時都要執行,其余類推
- 當 t1 為 */n 時表示每 n 分鐘個時間間隔執行一次,t2 為 */n 表示每 n 小時個時間間隔執行一次,其余類推
- 當 t1 為 a, b, c,... 時表示第 a, b, c,... 分鐘要執行,t2 為 a, b, c,... 時表示第 a, b, c...個小時要執行,其余類推
* * * * *
- - - - -
| | | | |
| | | | +----- 星期中星期幾 (0 - 6) (星期天 為0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一個月中的第幾天 (1 - 31)
| +-------------------- 小時 (0 - 23)
+------------------------- 分鐘 (0 - 59)
使用者也可以將所有的設定先存放在文件中,用 crontab file 的方式來設定執行時間。
此外,大多數現代 cron 系統都具有常用值的快捷方式,包括:
- @hourly : 每小時運行一次 (0 * * * *)
- @daily: 每天運行一次 (0 0 * * *)
- @weekly: 每周運行一次 (0 0 * * 0)
- @monthly: 每月運行一次 (0 0 1 * *)
- @reboot: 重啟后運行一次
還有 cron 的替代方案,包括anacron用于您希望定期運行但不根據特定計劃運行的作業,以及用于一次性作業的at 命令。
Cron 是一個有用的任務調度系統,使用起來就像編輯文本一樣簡單。試試看吧!