cron是linux的任務調度程序,可以在預訂的時間執行任務,類似於windows的任務計划。
crontab一個非常實用的功能是執行備份腳本來進行系統備份,有時也用於啟動或停止應用程序。
安裝crontab
在Centos/RHEL系統中包名字為cronie,而在Ubuntu/Debian系統中包名字為cron,可以實用下列命令進行安裝。
### CentOS / RHEL ### yum -y install cronie ### Debian / Ubuntu ### apt-get install cron
啟動crontab
systemctl start cron
設置開機啟動crontab
systemctl enable cron
編輯crontab
使用下列命令增加或者編輯任務計划,對當前用戶生效。
crontab -e
如果需要對其他用戶生效(如用戶test),則使用下列命令
crontab -e -u test
定時任務路徑
系統執行計划任務,會在以下路徑中查找計划任務/etc/cron{tab,.d,.daily,.hourly,.monthly,.weekly},針對具體用戶所制定的任務計划,在/var/spool/cron/中查找。
定時任務日志
定時任務日志在/var/log/cron
定時任務時間格式
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
20個有用的定時任務例子
1. 在特定時間執行計划任務,如每天凌晨1點執行
0 1 * * * /path/to/script.sh
2. 每天運行兩次計划任務,如設置每天早上10點和晚上10點執行定時任務
0 10,22 * * * /path/to/script.sh
3. 在某天的某個時刻執行計划任務,如每個周日的凌晨1點執行備份任務
0 1 * * sun /path/to/script.sh 或者 0 1 * * 0 /path/to/script.sh 或者 0 1 * * 7 /path/to/script.sh
4. 每分鍾執行
* * * * * /path/to/script.sh
5. 每5分鍾執行
*/5 * * * * /path/to/script.sh
6. 每1小時執行
0 * * * * /path/to/script.sh 或者 @hourly /path/to/script.sh
7. 每2小時執行
0 */2 * * * /path/to/script.sh
8. 每天執行一次計划任務,如每天0點執行(天計划)
0 0 * * * /path/to/script.sh 或者 @daily /path/to/script.sh
9. 每幾天執行任務,如每2天0點執行一次
0 0 */2 * * /path/to/script.sh
10. 每周何時執行,如每周二和每周四13點執行
0 13 * * tue,thu /path/to/script.sh
11. 每周執行一次,如每周日0點執行(周計划)
@weekly /path/to/script.sh
12. 每個月何時執行,如每個月15號早上11點執行計划任務
0 11 15 * * /path/to/script.sh
13. 每個月執行一次,如每個月1號中午12點執行
@monthly /path/to/script.sh
14. 選擇具體月份執行任務
0 0 * jan,apr,jun * /path/to/script.sh
15. 每次重啟系統之后執行任務
@reboot /path/to/script.sh
16. 在計划任務中發送電子郵件
MAILTO="username" 1 1 * * * /path/to/script.sh
17. 使用其他shell來執行計划任務
SHELL=/bin/sh 1 1 * * * /path/to/script.sh
18. 在計划任務中使用環境變量
PATH=/sbin:/bin:/usr/sbin:/usr/bin 1 1 * * * /path/to/script.sh
19. 可以在計划任務中自定義目錄,如腳本里面的根目錄為HOME目錄,那么可以設置HOME目錄為根目錄
HOME=/ 1 1 * * * /path/to/script.sh
20. 每秒執行一次計划任務
cron的時間不支持秒級,不可以按秒來設置計划任務