系統計劃任務
大部分系統管理工作都是通過定期自動執行某個指令碼來完成的,那麼如何定期執行某個指令碼,從而實現運維的自動化,這就要藉助Linux的cron功能了.
計劃任務分為一次性計劃任務和週期性計劃任務.
- 一次性計劃任務
- 每晚11點30分開啟網站服務.
- 週期性計劃任務
- 每週一的凌晨3點30分把/var/www/html目錄打包備份為backup.tar.gz
顧名思義,一次性計劃任務只執行一次,一般用於滿足臨時的工作需求,可以使用at
命令實現.
如果你的Linux沒有此命令可以使用yum install at -y
來安裝.
[root@qdlinux ~]# at 23:30
at> systemctl restart httpd
at> <EOT>
at > 此處同時按下Ctrl + D組合鍵來結束編寫計劃任務
//檢視已經設定好但還未執行的計劃任務
[root@qdlinux ~]# at -l
1 Fri Aug 17 23:30:00 2018 a root
//可以使用atrm任務序號刪除
[root@qdlinux ~]# atrm 1
[root@qdlinux ~]# at -l
如果希望Linux能夠週期性地、有規律地執行某些具體的任務,那麼可以使用crond
服務再合適不過了.
如果你的Linux沒有此命令可以使用yum install cronie -y
來安裝.
選項 | 解釋 |
---|---|
crontab -e | 建立、編輯計劃任務 |
crontab -l | 檢視當前的計劃任務 |
crontab -r | 刪除某條計劃任務 |
crontab -u | 編輯其他人的計劃任務 |
注意:此命令使用編輯的是
/var/spool/cron/username
檔案.
此命令記憶口訣 ==”分、時、日、月、星期 命令”== 請牢記!!!
欄位 | 說明 |
---|---|
分 | 取值0-59的整數 |
時 | 取值0-23的任意整數 |
日 | 取值1-31的任意整數 |
月 | 取值1-12的任意整數 |
星期 | 取值為0-7,其中0與7均為星期日 |
命令 | 要執行的命令或程式指令碼 |
//每週一、三、五的凌晨3點30分打包/var/www/html目錄
[root@qdlinux ~]# crontab -e
crontab: installing new crontab
[root@qdlinux ~]# crontab -l
0 1 * * 1-5 /usr/bin/rm -rf /tmp/*
30 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /var/www/html
記憶練習示例
00 02 * * * ls //每天的凌晨2點執行ls
00 02 1 * * ls //每月1號凌晨2點執行ls
00 02 14 2 * ls //每年的2月的14號凌晨2點執行ls
00 02 * * 7 ls //每週日凌晨2點執行ls
00 02 * 6 5 ls //每年6月份周5的凌晨2點執行ls
00 02 14 * 7 ls //每月週日或14號凌晨2點執行
00 02 14 2 7 ls //每年2月14號或週日凌晨2點執行
* 02 * * * ls //每天凌晨2點的每分鐘執行
* * 14 2 * ls //每年2月份14號每分鐘執行
* * * * * ls //每分鐘執行
*/5 * * * * ls //每5分鐘執行
00 02 * 1,5,8 * ls //每年1,5,8月的每天凌晨2點執行
00 02 1-8 * * ls //每月的1-8號凌晨2點執行
//這裡需要注意的是分欄位必須要求數值,不能為空或者*號
//日和星期欄位不能同時使用,否則會發生衝突
//每週一到週五凌晨1點清空/tmp目錄內的所有檔案
[root@qdlinux ~]# whereis rm
rm: /usr/bin/rm /usr/share/man/man1/rm.1.gz
[root@qdlinux ~]# crontab -l
0 1 * * 1-5 /usr/bin/rm -rf /tmp/*