1. 程式人生 > >linux的cron任務介紹

linux的cron任務介紹

可執行 pat div shel 普通用戶 查看 tabs 工作 執行

cron介紹

  • linux系統有一個專門用來管理定時任務的進程cron,一般是設置成開機自啟動的,可以通過以下命令查看
ps aux | grep cron
  • cron進程每隔一分鐘會去讀取/etc/crontab文件,/etc/cron.d/下的所有crontab文件,/var/spool/cron/下的所有的crontab文件;
  1. /var/spool/cron/:改目錄下存放系統的每個用戶需要執行的crontab任務,該文件已用戶的名字命令,是用戶在提交cron任務後自動創建的,一個用戶只有一個crontab文件;

  2. /etc/crontab:這是一個crontab文件,裏面存放整個系統級別的任務,一般是root用戶操作,普通用戶不要去修改這個文件;

  3. /etc/cron.d/:該文件夾下一般是系統級別的用來管理其他定時任務的crontab文件;

  4. /var/log/cron這是cron任務運行的日誌文件;

  • 所以如果是用戶自己的任務會出現在/var/spool/cron/目錄下;
# /etc/crontab文件

SHELL=/bin/bash  # 指定運行的shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root  # 當/etc/crontab文件中的例行性命令發生錯誤時,會將錯誤信息傳遞給誰,一般改成用戶賬戶,當發生錯誤時,錯誤信息發送到/var/spool/mail/下的用戶名的文件

# 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
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

擴展

  • 通過ls /etc/ | grep cron命令查看會出現如下幾個文件或文件夾:
anacrontab  # 這是系統級別的用來管理異步定時任務的文件
cron.d  # 系統級別定時任務文件
cron.daily  # 每天需要執行的cron任務目錄
cron.deny   # 定義不允許使用crontab命令的用戶文件
cron.hourly # 每小時需要執行的cron任務目錄
cron.monthly # 每個月需要執行的cron任務目錄
crontab   # 這是系統級別的用來管理定時任務的文件
cron.weekly # 每周需要執行的cron任務目錄
# 另外還有cron.allow文件,定義允許使用crontab命令的用戶,系統默認沒有

cron任務的操作

  • cron工具有一套自己的操作命令可以對用戶的cron任務進行自動化的管理。

  • cron服務的管理

service crond start    //啟動cron進程
service crond stop     //關閉cron進程
service crond restart  //重啟cron進程
service crond reload   //重新載入配置+
service crond status   //查看服務狀態
  • 如果系統不識別service命令就使用/usr/sbin/crond start格式的命令;

  • crontab任務命令

crontab [-u username] [-l|-e|-r]
選項與參數:
-u  :root權限才能進行這個任務,缺省時默認為當前的用戶
-e  :編輯用戶的crontab文件,保存好後會自動提交
-l  :查閱當前用戶的crontab的工作內容
-r  :移除當前用戶所有的 crontab 的工作內容,若僅要移除一項,請去修改crontab文件
  • 我們可以使用crontab -e直接編輯我們的定時任務,也可以先編輯一個自定義的creontab文件然後提交;

編輯自己的cron任務

  • 第一步:選一個文件夾,比如就在自己想要執行定時任務的應用如redis的安裝文件,創建一個腳本文件:
touch test
# 授予該文件可執行權限
chmod +x test
# 編輯文件
vi test
  • cron任務的語法;
# 格式
minute hour day-of-month month-of-year day-of-week commands
minute:分鐘,範圍0--59;
hour:小時,範圍0--23;
day-of-month:天,範圍01-31;
month-of-year:月份,01-12;
day-of-week:周,範圍0-6,(0表示Sunday);
  • 舉例
# 每隔五分鐘
*/5 * * * * echo "aaaa"
# 每天18點
0 18 * * * echo "aaa"
# 執行目錄下的文件
0 18 * * * root run-parts /etc/cron.d/ # 執行目錄下的所有文件
  • 第二步:提交任務
crontab 文件名
  • 第三步:查看任務是否成功提交
crontab -l
  • 註意:每次提交任務是覆蓋原來的crontab的文件,所以需要添加更多的cron任務時,修改/var/spool/cron/下的文件;

linux的cron任務介紹