Linux定時執行任務

目錄


Linux下有兩種定時執行任務的方法:at命令和Contab服務

AT命令

這裏寫圖片描述
- at [選項] 時間
- 選項:
– m:當at工作完成時,無論是否有命令輸出,都通過email通知執行at命令的用戶
–c 工作號:顯示該at工作的實際內容
- 時間:
- HH:MM 02:30
- HH:MM YYYY-MM-DD 02:30 2016-10-04
- HH:MM[am|pm] [month] [date] 02:30 July 25
- HH:MM[am|pm] + [minutes|hours|days|weeks] now +5 minutes
- at now +2 minutes
- atq 查詢系統中的定時任務
- atrm 工作號 刪除指定的at任務

Crontab 服務

Crontab簡介

  • Crontab 是一個用於設置週期性被執行任務的工具

啓動Crontab服務

  • service crond start
    這裏寫圖片描述

安裝cron

  • yum install vixie-cron
  • yum install crontabs

一個簡單的例子

  • 每分鐘打印當前時間到一個日誌文件中
# crontab -e
# */1 * * * * date >> /tmp/logo.txt

Crontab配置文件格式

* * * * * COMMAND
|  |  | |  |--- 星期0~7(0或者7表示星期天)
|  |  | |----- 月份1~12 
|  |  |------ 日期 1~31
|  |-------- 小時0~23
|---------- 分鐘0~59

例子

  • 每晚的21:30重啓apache
    – 30 21 * * * service htttpd restart
  • 每月1、10、22日的4:45重啓apache
    – 45 4 1,10,22 * * service httpd restart
  • 每月1到10日的4:45重啓apache
    – 45 4 1-10 * * service httpd restart
  • 沒個兩分鐘重啓apache
    – */2 * * * * service httpd restart
    – 1-59/2 * * * * service httpd restart
  • 晚上11點到早上7點之間,每隔一小時重啓apache
    – 0 23-7/1 * * * service httpd restart
  • 每天18:00至23:00之間每隔30分鐘重啓apache
    – 0,30 18-23 * * * service httpd restart
    – 0-59/30 18-23 * * * service httpd restart

Crontab工具的使用

  • 查看用戶的計劃任務:crontab -l
  • 編輯當前用戶的計劃任務:crontab -e [-u] [用戶名]
  • 刪除當前用戶的計劃任務:crontab -r

Crontab 配置文件

  • 全局(系統)配置文件
    – /etc/crontab
  • 用戶配置文件
    – /var/spool/cron/root
  • 日誌文件
    – /var/log/cron
  • 執行系統定時任務的方法
    – 手動指定定時任務
    – 系統定時任務
  • 第一種是把需要定時執行的腳本複製到/etc/cron.{daily,weekly,monthly}目錄裏面的任意一個
  • 第二種是修改/etc/crontab配置文件

Crontab 常見錯誤

  • 環境變量:Crontab不識別.bash_profile裏面定義的環境變量
  • 第三個和第五個之間指定的是“或”操作
    – 四月的第一個星期日早晨1時59分運行a.sh
    – 59 1 1-7 4 * test `data + \%w` -eq 0 && /root/a.sh

Crontab 半分鐘執行一次

  • 結合sleep命令
    – * * * * * sleep 30s; 命令

anacron

這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章