在本文中,我們將回顧並看看如何使用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-12或Jan-Dec,你可以使用每個月份名字的前三個字母,例如Jan或Jun。)
- 星期幾(值介於0-6或Sun-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/