Linux 計劃任務 — crontab

cron 簡介linux

cron 是 UNIX, SOLARIS,LINUX 下的一個十分有用的工具。經過 cron 腳本能使計劃任務按期地在系統後臺自動運行。shell


cron 命令數據庫

  • crontab -e – 編輯該用戶的 crontab,當指定 crontab 不存在時新建。app

  • crontab -l – 列出該用戶的 crontab。ide

  • crontab -r – 刪除該用戶的 crontab。工具

  • crontab -u<用戶名稱> – 指定要設定 crontab 的用戶名稱。url


Linux Crontab 格式spa

表格: Crontab 字段與容許的值 (Linux Crontab)orm

圖片

cron 實例blog

1. 特定時間執行

cron 的基本用法是在特定的時間執行一項任務,以下是 6 月 10 上午 8:30 執行 Full backup shell script。 要注意的是時間字段採用的是 24 小時制,若是是下午 8 點,則改寫爲 20 點


30 08 10 06 * /home/ramesh/full-backup

  • 30 – 第 30 分鐘

  • 08 – 早上 8 點

  • 10 – 10 號

  • 06 – 第 6 個月 (6 月)

  • * – 一週的任何一天


2. 安排多個實例(好比一天執行兩次)

下面的增量備份腳本天天執行兩次。


天天於 11:00, 16:00 執行,逗號兩側的時間都會執行。


00 11,16 * * * /home/ramesh/bin/incremental-backup

  • 00 – 第 0 分鐘 (每小時開時)

  • 11,16 – 早上 11 點與下午 4 點

  • * – 天天

  • * – 每月

  • * – 一週的任何一天


3. 讓任務只在特定時間執行(好比僅當工做日時執行)

下面這個例子是天天 9:00-16:00 檢查數據庫狀態(包括週六)


00 09-18 * * * /home/ramesh/bin/check-db-status

  • 00 – 第 0 分鐘 (每小時開時)

  • 09-18 – 9 點, 10 點, 11 點, 12 點, 下午 1 點, 下午 2 點, 下午 3 點, 下午 4 點, 下午 5 點, 下午 6 點

  • * – 天天

  • * – 每月

  • * – 一週的任何一天

若是隻想工做日執行此操做


00 09-18 * * 1-5 /home/ramesh/bin/check-db-status

  • 00 – 第 0 分鐘 (每小時開時)

  • 09-18 – 9 點, 10 點, 11 點, 12 點, 下午 1 點, 下午 2 點, 下午 3 點, 下午 4 點, 下午 5 點, 下午 6 點

  • * – 天天

  • * – 每月

  • 1-5 – 週一, 週二, 週三, 週四和週五 (工做日)


4. 如何查看 cron 定時任務

查看當前用戶定時任務


ramesh@dev-db$ crontab -l

查看 ROOT 用戶定時任務,用 root 登入 su-root,再執行 crontab -l


root@dev-db# crontab -l

no crontab for root

查看其它用戶定時任務


root@dev-db# crontab -u sathiya -l

@monthly /home/sathiya/monthly-backup

00 09-18 * * * /home/sathiya/check-db-status


5. 如何編輯 cron 定時任務

ramesh@dev-db$ crontab -e


6. 安排每分鐘都執行定時任務

理論狀況下,沒有每分鐘都要執行的 shell,但下面這個例子,讓咱們更好的瞭解 crontab


* * * * * 命令

* 表明着全部可能取到的值,除了直接用 * 外,下面的幾個例子也較爲經常使用


  • 當指定 */5 在分鐘字段,表明每五分鐘。

  • 當指定 0-10/2 在分鐘字段,表明在前十分鐘的每兩分鐘

上面的例子對於其它四個字段一樣試用


7. 安排後臺每十分鐘執行定時任務

*/10 * * * * /home/ramesh/check-disk-space

有一些特殊的例子,能夠用關鍵字替代上述五個字段– reboot, midnight, yearly, hourly


圖片


8. 每年的第一分鐘執行定時任務(@yearly)

下面的例子將在每年的 1 月 1 日 0:00 執行


@yearly /home/ramesh/red-hat/bin/annual-maintenance


9. 每個月執行定時任務(@mothly)

下面的例子將在每個月 1 日 0:00 執行


@monthly /home/ramesh/suse/bin/tape-backup


10. 天天執行定時任務(@daily)

下面的例子將在天天 0:00 執行


@daily /home/ramesh/arch-linux/bin/cleanup-logs "day started"


11. 每次重啓時執行定時任務(@reboot)

@reboot CMD


12. 如何用 mail 關鍵字禁止/重定向 cron 的郵件

默認狀況下,crontab 將向佈置定時任務的管理員發送郵件,若是想重定向此用戶,添加並更新 MAIL


ramesh@dev-db$ crontab -l

MAIL="ramesh"


@yearly /home/ramesh/annual-maintenance

*/10 * * * * /home/ramesh/check-disk-space

若是不想任何人接收,則直接將 MAIL 置空


13. 如何系秒每執行一個定時任務

沒法安排每秒執行,由於最小處理單元是分鐘,另外一方面,沒有什麼理由讓咱們每秒都執行一任務


14. cron 中的 PATH 變量

上面的例子都是用絕對的路徑


若是你想用相對的路徑,設置環境變量能夠在 crontab 增長


ramesh@dev-db$ crontab -l


PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/ramesh


@yearly annual-maintenance

*/10 * * * * check-disk-space


15. 從 cron 文件中定義 cron 任務

除了直接編輯外,你也能夠先在一個文件中編輯好任務,再導入


ramesh@dev-db$ crontab -l

no crontab for ramesh


$ cat cron-file.txt

@yearly /home/ramesh/annual-maintenance

*/10 * * * * /home/ramesh/check-disk-space


ramesh@dev-db$ crontab cron-file.txt


ramesh@dev-db$ crontab -l

@yearly /home/ramesh/annual-maintenance


*/10 * * * * /home/ramesh/check-disk-space

應用時要注意,此操做會刪除原有的cron任務

相關文章
相關標籤/搜索