博客 / 詳情

返回

Linux 中使用計劃任務詳解

How to Setup a Cron Job in Linux

在系統管理中,少不了 crontab 任務調度工具。使用 crontab,您可以在特定的日期和時間運行腳本和命令。要很好地使用它,您需要知道如何編輯 crontab 文件。

Understanding Crontab

crontab (cron table) 它是由 cron 守護進程使用的文件。cron 守護進程是 Linux 中的一個工具,它在預定時間運行系統上的任務。計劃由 crontab 文件設置,該文件是一個簡單的文本文件,包含命令列表和何時運行它們。crontab 文件中的每一行都有用於調度任務的特定格式。

Accessing the Crontab File

要打開用户指定的 crontab 文件,使用 crontab -e 命令。

Crontab File Syntax

理解 cron 語法是編輯 crontab 文件的關鍵。文件中的每一行都是一個 cron 作業,並遵循這種格式。

*     *     *   *    *        command to be executed
-     -     -   -    -
|     |     |   |    |
|     |     |   |    +----- day of the week (0 - 6) (Sunday=0)
|     |     |   +------- month (1 - 12)
|     |     +--------- day of the month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)

字段中的星號 (*) 表示每個值,如 每分鐘每小時每天

Editing the Crontab File

在 crontab 文件中,您可以使用上面的語法添加任務。例如,要在每天凌晨 3 點運行備份腳本。

0 3 * * * /path/to/yourscript.sh

保存並關閉該文件,cron 守護進程將使用新的任務調度啓動。

Common Crontab Commands

下面是一些常見的 crontab 命令:

  • crontab -e 編輯 crontab 文件
  • crontab -l 顯示 crontab 文件的內容
  • crontab -r 刪除當前的 crontab
  • crontab -i 刪除 crontab 之前帶提示

Crontab Special Strings

Crontab 還支持特殊字符串來替換五個時間和日期字段

  • @reboot 在啓動時運行一次
  • @yearly:每年運行一次,等同 "0 0 1 1 *"
  • @annually:等同 @yearly
  • @monthly:每月運行一次,等同 "0 0 1 "
  • @weekly:每週運行一次,等同 "0 0 0"
  • @daily:每天運行一次,等同 "0 0 *"
  • @hourly: 每小時運行一次,等同 "0 "

這些特殊的字符串使 crontab 文件更易於閲讀和管理。

Handling Output

默認情況下,cron 發送帶有每個作業輸出的電子郵件。要更改輸出的位置,請使用 shell 重定向。

30 2 * * * /path/to/yourscript.sh > /path/to/outputfile 2>&1

">" 將腳本的輸出發送到一個文件,而 "2>&1" 將錯誤輸出發送到與標準輸出相同的位置。

Final Thought

一定要測試 cron 任務,以確保它們按預期運行。

我的開源項目

酷瓜雲課堂-開源知識付費解決方案

  • course-tencent-cloud(酷瓜雲課堂 - gitee倉庫)
  • course-tencent-cloud(酷瓜雲課堂 - github倉庫)
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.