Linux任務計劃
- crontab -u、-e、-l、-r
- 格式:分 時 日 月 周 user command
- 文件/var/spool/cron/username
- 分範圍0-59,時範圍0-23,日範圍1-31,月範圍1-12,周1-7
- 可用格式1-5表示一個範圍1到5
- 可用格式1,2,3表示1或者2或者3
- 可用格式*/2表示被2整除的數字,好比小時,那就是每隔2小時
- 要保證服務是啓動狀態
- systemctl start crond.service
crontab命令
- crontab -e //編輯
- crontab -l //列出 -crontab -r //刪除
- crontab -u username -l //指定用戶
任務計劃
- crontab -e //編輯
- 在linux系統中,系統計劃是必不可少的,好比備份數據,重啓服務等
- 操做過程,多是一個腳本,有多是一個單獨的命令,在特定的時間去執行它,因此任務計劃是不可缺乏的
- 在windows中都是使用的我的電腦,因此任務計劃不多見,幾乎用不到
linux中計劃的配置文件
- cat /etc/crontab //查看任務計劃的配置文件
- 文件中會定義幾個變量
- SHELL=/bin/bash
- PATH環境變量,它命令的路徑
- MAILTO發郵件給誰
[root@hanfeng ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59) //分鐘
# | .------------- hour (0 - 23) //小時
# | | .---------- day of month (1 - 31) //日期
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ... //月份,能夠寫數字,也能夠寫英文的簡寫
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat //星期,0或7都表示週日,也能夠寫成英文的簡寫
# | | | | |
# * * * * * user-name command to be executed //用戶,不寫用戶就是root 最後一列,是你要執行的命令
[root@hanfeng ~]#
- crontab -e 進入到crontab的配置文件中,用法和vim同樣
- 按 i 進入編輯模式
- 分鐘,小時,日,月,星期,而後後面跟具體的命令
- 凌晨3點去執行,* 表示全部的意思
天天凌晨三點,執行123.sh腳本文件,正確的和錯誤的日誌都輸出到123.log文件中
0 3 * * * /bin/bash /usr/local/sbin/123.sh >/tmp/123.log 2>/tmp/123.log
由於是天天三點執行腳本,因此能夠寫成追加,天天都去記錄日誌
0 3 * * * /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log
若想1-10號,雙月去執行該腳本,後面就不在執行了——>只要 被2 整除,就符合條件
0 3 1-10 */2 * /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log
只要周2和周5執行該文件
0 3 1-10 */2 2,5 /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log
- 爲何沒有年份?
- 用星期肯定你的惟一性,好比說今年的6月18號和明年的6月18號的星期確定是不一樣的,這樣就能夠肯定某一天的惟一性
啓動crond服務
- 若想要這個任務正常使用,還須要去啓動crond服務
- systemctl start crond.service //啓動crond服務
- 若想檢查服務是否成功啓動,
- 方法一:可以使用ps aux |grep cron 命令查看
- 方法二:使用systemctl start crond 查看狀態
- 如果 綠色 ,則表示該服務已經啓動了
- 如果該服務已經停掉了,則不會有顏色
任務計劃不執行的緣由分析
- 在寫了一個計劃,放入到配置文件中,但就是不執行
- 不執行的緣由頗有多是你寫的腳本里面,沒有使用 絕對路徑 的緣由致使不執行
- 由於頗有可能,你在使用的命令不在PATH裏面,因此要麼將命令寫一個絕對路徑,要麼將命令的路徑加入到PATH變量裏面去
- 建議:在寫一個腳本的時候,都要寫追加一個日誌,這樣能夠保證這個任務有據可查,再不執行的時候,查看錯誤日誌便可
任務計劃備份
- crontab -l //列出
- crontab文件存在位置/var/spool/cron/username
- 在須要備份的時候,直接把這個文件,或者目錄拷貝下便可