banner
三文字

方寸之间

居善地,心善渊,与善仁,言善信,正善治,事善能,动善时。
github
email
mastodon
website

淺析Linux的Cron命令

Cron 是 Linux 一個非常有用的工具,也是開發人員最喜歡的工具,因為它可以讓你使用通用腳本和特定於任務的腳本在特定的時間段、日期和間隔自動運行命令。有了該描述,你可以想像系統管理員如何使用它來自動執行備份任務、目錄清除、通知等。

Cron 作業在後台運行,並不斷檢查/etc/crontab文件,/etc/cron.*//var/spool/cron/目錄。我們最好不要直接編輯 cron 文件,因為每個用戶都有唯一的 crontab。

那你應該如何創建和編輯 cron 作業?我們可以使用 crontab 命令。crontab 是用於創建、編輯、安裝、卸載和列出 cron 作業的方法。

創建和編輯 cron 作業的命令是相同而且很簡單。而且更酷的是,你無需在創建新文件或編輯現有文件後重新啟動 cron。

$ crontab -e

Cron 語法#

就像使用任何語言一樣,當你了解cron的語法時,使用cron會容易得多,它的語法有兩種格式:

A B C D E USERNAME /path/to/command arg1 arg2
OR
A B C D E USERNAME /root/backup.sh

以上 cron 語法的說明:

  • A:分鐘範圍:0 – 59
  • B:時間範圍:0 – 23
  • C:天數範圍:1 – 31
  • D:月範圍:1 – 12 or JAN-DEC
  • E:星期幾0 – 6 or SUN-SAT,Sunday=0 or 7
  • USERNAME: 使用者名稱
  • /path/to/command – 你要計劃的腳本或命令的名稱

形象一點表示就是:

┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of the month (1 - 31)
│ │ │ ┌───────────── month (1 - 12 or JAN-DEC)
│ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT, Sunday=0 or 7)
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │
* * * * *

此外,Cron 使用 3 個運算符,可以在欄位中指定多個值:

  1. 星號(*):指定欄位的所有可能值,* * * * * 在每天的每分鐘運行。
  2. 逗號(,):指定值列表,2,10 4,5 * * *在每天第 4 和第 5 小時的第 2 和第 10 分鐘運行。
  3. 破折號(-):指定值範圍,0 4-6 * * * 在第 4、5、6 小時的第 0 分鐘運行。
  4. 分隔符(/):指定步長值,20/15 * * * * 從第 20 分鐘到第 59 分鐘每隔 15 分鐘運行(第 20、35 和 50 分鐘)。

Cron 的語法和運算符大概就這麼多,下面展示一些 cron 示例。

Cron 工作示例#

運行 cron 命令的第一步是使用以下命令安裝 crontab:

#crontab -e

在每天凌晨 3 點運行/root/backup.sh

0 3 * * * /root/backup.sh

在每個月的第二天的下午 4:30運行script.sh

30 16 2 * * /path/to/script.sh

在每周工作日的晚上10 點運行/scripts/phpscript.php

0 22 * * 1-5 /scripts/phpscript.php

在每天的午夜,凌晨 2 點和凌晨 4 點後的23 分鐘,運行perlscript.pl

23 0-23 / 2 * * * /path/to/perlscript.pl

每個星期日的 04:05 運行 Linux 命令:

5 4 * * sun /path/to/linuxcommand

Cron 選項#

列出 cron 作業。

crontab -l
# OR
crontab -u username -l

刪除所有 crontab 作業。

crontab -r

刪除特定使用者的 Cron 作業。

crontab -r -u username

Crontab 中的字串#

字串是開發人員最喜歡的東西,因為它們通過消除重複的書寫來幫助節省時間。Cron 具有特定的字串,可用於更快地創建命令:

  1. @hourly:每小時運行一次,即 "0 * * * *"
  2. @midnight:每天運行一次,即 "0 0 * * *"
  3. @daily:與午夜相同
  4. @weekly:每週運行一次,即 "0 0 * * 0"
  5. @monthly:每月運行一次,即 "0 0 1 * *"
  6. @annually:每年運行一次,即 "0 0 1 1 *"
  7. @yearly:與 **@annually** 相同
  8. @reboot:每次啟動時運行一次

例如,這是每天備份系統的方法:

@daily /path/to/backup/script.sh

至此,你已經擁有使用Cron創建和管理系統任務所需的全部內容。現在,你可以開始使用計劃的命令來設置和維護多個環境。

當你對 Crontab 的工作方式了解得足夠多時,可以使用這些漂亮的Crontab 生成器實用程式免費生成 crontab 行。

另外,你可以在此處閱讀 Ubuntu 的有關如何使用 Cron 的文章。

參考#

https://www.tecmint.com/create-and-manage-cron-jobs-on-linux/

https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows


歡迎訪問我的個人博客:方寸之間

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。