11 個 Linux 中的 Cron 命令範例 [安排 Cron 工作]

在本文中,我們將回顧並看看如何使用Crontab命令在Linux中自動定期後台運行任務。Crontab命令。

對於系統管理員來說,手動處理頻繁的工作是一項艱巨的任務,這樣的任務可以在Linux或類Unix操作系統中使用cron守護進程自動在後台運行,而無需人為干預。

您可以使用Cron守護進程自動化Linux系統備份定期更新文件同步等操作,以及許多其他操作。Cron守護進程用於從命令行運行定期任務,或使用在線工具生成cron任務

Cron每分鐘醒來一次,檢查可計數的計劃任務- Crontab (CRON TABle)是我們可以安排此類重複任務的表格。

提示: 每個用戶都可以擁有自己的crontab來創建、修改和刪除任務。默認情況下,cron為用戶啟用,但我們可以通過在/etc/cron.deny文件中添加條目來限制用戶。

Linux中的Crontab

Crontab文件每行包含一個命令,實際上有六個字段,可以用空格或制表符分隔。前五個字段表示運行任務的時間,最後一個字段是命令。

  • 分鐘(保留值在0-59之間)
  • 小時(保留值在0-23之間)
  • 每月的某天(保留值在1-31之間)
  • 1-12月份(值介於1-12Jan-Dec,你可以使用每個月份名字的前三個字母,例如Jan或Jun。)
  • 星期幾(值介於0-6Sun-Sat,同樣你可以使用每個星期幾名字的前三個字母,例如Sun或Wed。)
  • 命令 – /path/to/command 或者你想要排程的腳本。

1. 列出 Crontab 条目

使用 -l 選項列出或管理 crontab 命令的任務。

# crontab -l

00 10 * * * /bin/ls >/ls.txt

2. 編輯 Crontab 条目

要編輯 crontab 条目,請使用下面顯示的 -e 選項。以下示例將在 VI 編輯器中打開預定的工作。進行必要的更改,然後按下 :wq 鍵保存設置並退出。

# crontab -e

3. 列出用戶的預定 Cron 工作

使用 -u用戶)和 -l列表)的選項,列出特定用戶(名稱為 tecmint)的預定工作。

# crontab -u tecmint -l

no crontab for tecmint

注意:只有root用戶擁有完整的權限來查看其他用戶的 crontab 条目。普通用戶無法查看其他用戶的信息。

4. 刪除 Crontab 条目

注意: 使用帶有 -r 參數的 crontab 將無需確認即刪除所有預定的任務。在刪除用戶的 crontab 前使用 -i 選項。

# crontab -r

5. 在刪除 Crontab 前提示

crontab 帶有 -i 選項將會在刪除使用者的 crontab 之前要求使用者確認。

# crontab -i -r

crontab: really delete root's crontab?

6. 允許特殊字符(*、-、/、?、#)

  • 星號(*) – 匹配該字段中的所有值或任何可能的值。
  • 連字符(-) – 定義一個範圍。
  • 斜線(/) – 1st 字段 /10 表示每十分鐘或範圍的增量。
  • 逗號(,) – 分隔項目。

7. 系統范圍的 Cron 定時任務

A system administrator can use the predefined cron directory as shown below.

  • /etc/cron.d
  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.monthly
  • /etc/cron.weekly

8. 為特定時間安排任務

下面的任務會在每天 12:30 am 刪除/tmp 中的空文件和目錄。您需要提及用戶名以執行 crontab 命令。在下面的示例中,root 用戶正在執行一個 cron 任務。

# crontab -e

30 0 * * *   root   find /tmp -type f -empty -delete

9. 常見定時任務的特殊字符串

Strings Meanings
@reboot The command will run when the system reboots.
@daily Once per day or may use @midnight.
@weekly Once per week.
@yearly Once per year. we can use the @annually keyword also.

如果您想使用相同的,需要用關鍵詞替換 cron 命令的五個字段。

10. 使用雙和(&&) 的多個命令

在下面的示例中,command1 和 command2 每天運行。

# crontab -e

@daily <command1> && <command2>

11. 禁用郵件通知。

默認情況下,cron 將郵件發送到執行 cron 任務的使用者帳戶。 如果您想禁用它,請添加類似下面示例的 cron 任務。 在文件末尾使用>/dev/null 2>&1 選項將所有 cron 結果的輸出重定向到/dev/null

[root@tecmint ~]# crontab -e
* * * * * >/dev/null 2>&1

結論:任務自動化可能有助於我們更好地執行任務,無錯誤且高效。 您可以通過在終端中輸入 ‘man crontab’ 命令來參考 crontab 的手冊頁面,以獲取更多信息。

Source:
https://www.tecmint.com/11-cron-scheduling-task-examples-in-linux/