10.23 linux任務計劃cron

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
  • 在須要備份的時候,直接把這個文件,或者目錄拷貝下便可
相關文章
相關標籤/搜索