Linux 計劃任務總結

今天項目用到了,Linux計劃任務,從網上找了基本blog看了,總結了下。html

Linux 下的計劃任務有atd和crond兩種計劃任務。atd服務使用的at命令只能執行一次,而crond服務使用的crontab定義的命令,是循環做用的。在此,咱們總結的爲後者。java

一、crond服務的基本命令
crond服務爲Linux的內置服務,系統默認不自動啓動,須要人工啓動。
命令:linux

/sbin/service crond start //啓動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啓服務
/sbin/service crond reload //從新載入配置

 

另外: init.d/crond restart/start/stop/reloadshell

自啓動配置:
在/etc/rc.d/rc/local 腳本的末尾加上:windows

/sbin/service crond start

 

2.計劃任務的編寫
系統支持兩種方式:1) 直接編寫計劃任務---->>>我的執行的工做
2) 使用目錄方式,編寫,即直接在 /etc/crontab 文件中編寫----->>>系統執行的工做
默認狀況下,系統中能夠登錄的用戶,均可以使用crontab定義計劃任務。不過,能夠經過下面兩個文件限制權限:
  /etc/cron.allow:
  將可使用 crontab 的帳號寫入其中,若不在這個檔案內的使用者則不能使用 crontab;
  /etc/cron.deny:
  將不可使用 crontab 的帳號寫入其中,若未記錄到這個檔案當中的使用者,就可使用 crontab。
1)直接編寫計劃任務
此種任務屬於我的執行的工做。是某個用戶按期要作的工做,例如每隔10分鐘檢查郵件服務器是 否有新信,這些工做可由每一個用戶自行設置
命令:緩存

  crontab [-u username] [-l|-e|-r]
  參數:
  -u :經過-u幫其它使用者創建/移除 crontab;
  -e :編輯 crontab 的內容
  -l :查看 crontab 的內容
  -r :移除 crontab 的全部內容(是所有的內容,若是隻是刪除某個,用-e編輯便可)

 

編寫本用戶下的計劃任務文件: crontab -u 當前用戶名 -e
編輯的是/var/spool/cron下對應用戶的cron文件,亦可另外指定cron文件。
如,編寫好cron文件cron_demo,把它放在/home/kjgl/bin/ 下,則命令能夠這麼寫:
crontab -u kjgl /home/kjgl/bin/cron_demo
啓動服務的命令:init.d/crond restart 或/sbin/service crond restart
格式:bash

  * * * * * 命令
  前面的五個*號,表示分、時、日、月、周,如:
  表明意義 分鐘 小時 日期 月份 周
  數字範圍 0-59 0-23 1-31 1-12 0-7
  *號表明任什麼時候間都接受的意思,任意。
  *號之間用空格分開,
  若是是一段範圍,用「-」號鏈接;
  若是是隔開幾個時間,用「,」號表示。
  另外,命令必須是編寫計劃任務的用戶有權限執行的,而且最後用絕對路徑。
  例如:
  #crontab -e
  59 23 1 5 * mail linuxing < /home/test.txt
  每在5月1日,23點59分就把/home/test.txt的內容做爲郵件發給linuxing用戶
  */5 * * * * /opt/test.sh
  每5分鐘就執行一次/opt/test.sh腳本
  0 3,6 * * * /usr/local/bin/test.sh
  每在3點和6點整點都執行/usr/local/bin/test.sh命令
  0 8-12 * * * /root/backup.sh
  8 點到 12 點之間的每小時的0分都執行/root/backup.sh

 


  
2)、基於目錄的方式執行計劃任務
此種任務爲系統執行的工做。系統週期性所要執行的工做,如備份系統數據、清理緩存
  對於系統的計劃任務,已經在/etc/crontab裏面定義,採用的就是基於目錄的方式。系統會定時讀取該文件,並根據裏面的定義執行命令。
命令:
vi /etc/crontab

格式:
  服務器

    SHELL=/bin/bash #使用的shell
  PATH=/sbin:/bin:/usr/sbin:/usr/bin #預約義的PATH路徑
  MAILTO=root #出現問題發Email給該用戶
  HOME=/ #家目錄
  # run-parts
  01 * * * * root run-parts /etc/cron.hourly #每小時的目錄
  02 4 * * * root run-parts /etc/cron.daily #天天
  22 4 * * 0 root run-parts /etc/cron.weekly #每週日
  42 4 1 * * root run-parts /etc/cron.monthly #每月1號

 

 


  
  分 時 日 月 周 執行者身份 命令
  能夠看到前面的五個參數的定義和直接編輯計劃任務是同樣的,增長了執行的用戶定義和run-parts參數。
  run-parts後面跟的是目錄名稱,例如:/etc/cron.hourly,表示每小時01分就到/etc/cron.hourly目錄中執行目錄下的全部可執行文件;固然,目錄是能夠本身定義的。
  若是你須要增長系統的計劃任務,只須要在對應的目錄添加執行文件便可,例如:我須要在天天都執行updatedb的操做,則我只須要把/usr/bin/updatedb的執行命令連接到/etc/cron.daily目錄就能夠了。
  一樣的,若是不須要使用目錄的方式,也可使用以下的方式:
   02 01 * * * root /root/test.sh
  也就是沒有了run-parts,後面就直接跟命令的絕對路徑url

3.注意事項:
  若是使用crontab編輯計劃任務或直接修改/etc/crontab文件後,計劃任務沒有生效,可能須要重啓一下crond服務:service crond restart
  當編寫/etc/crontab文件的時候,不要漏了指定執行計劃任務的用戶,這是和直接用crontab -e編輯不一樣的。
  某用戶(如root)用crontab -e編輯的計劃任務存放在/var/spool/cron/root,這個文件下。但最好不要直接編輯他,由於crond執行的時候,會在/tmp目錄中創建須要的臨時文件,直接編輯會對此有影響,甚至出錯。
  cron執行的每一項工做都會被紀錄到/var/log/cron這個日誌文件中,能夠從這個文件查看命令執行的狀態。
  在windows下編寫的計劃任務文件,須要轉下格式:dos2unix 文件路徑spa

參考:

Linux下實行計劃任務介紹:http://soft.chinabyte.com/os/324/11592824.shtml

Linux計劃任務入門詳解:http://linux.chinaunix.net/techdoc/beginner/2009/10/25/1141243.shtml

Linux定時任務的設置:http://www.blogjava.net/freeman1984/archive/2010/09/23/332715.html

相關文章
相關標籤/搜索