讓你學會Linux計劃任務
在過去的一年里,微軟的windows 7大行其道,不過Linux系統也越來越受到歡迎,你對Linux系統了解么?你是Linux系統的應用者么?本文為你詳細介紹Linux計劃任務,為你在學習Linux計劃任務時起一定的作用。
Linux有三種計劃任務:
at:指定一個時間執(zhí)行一個任務 (適用一個或多個任務,執(zhí)行一次后就不用)
cron:根據一個時間表自動執(zhí)行任務 (使用一個或多個任務,周期性執(zhí)行)
系統級別的計劃任務及其擴展anacron:在一個指定時間間隔錯過后自動執(zhí)行任務
一、at服務:安排一個任務在未來執(zhí)行,需要一個atd的系統后臺進程
#at now+2 minutes 回車
>輸入要執(zhí)行的命令
>ctrl+d 結束輸入
atq;查詢當前的等待任務
用atq來查詢,已經運行的任務,就消失了。這就是at計劃任務的重點,只運行一次
atrm:刪除等待任務
啟動計劃任務后,如果不想啟動設定好的計劃任務可以使用atrm命令刪除。
格式:atrm 任務號
命令后面跟計劃任務編號,如果不跟,就會刪除這個用戶所有的計劃任務。
還可以進入到/var/spool/at目錄里把計劃任務刪除,計劃任務的文件都保存在該目錄里,可以用rm -f 文件名來刪除(以文件的形式刪除計劃任務,因為計劃任務是以文件形式保存在該目錄中)
在通常情況下,超級用戶都可以使用這個命令。對于其他用戶來說,能否可以使用就取決于兩個文件:/etc/at.allow和/etc/at.deny
如果你要讓哪個用戶不能使用計劃任務,就直接把他的用戶名寫進去就可以了,一排只能寫一個。
同時寫入allow 及deny, 允許.
二、cron服務
上面已經簡單介紹了cron的一些進程和控制。下面我們來看看cron怎么實現。
相對與at,cron的優(yōu)點就是能夠周期性的執(zhí)行某個命令,at卻只能執(zhí)行一次
cron的后臺進程名字是crond ,cron也是system V的服務,所以我們可以service crond start|stop 來啟動和關閉此服務,也可以使用chkconfig或者ntsysv來選擇cron服務的默認開啟,這些命令在以前我們都講過的
#crontab -e 編輯當前用戶的cron表
#crontab -l 查看當前用戶的cron表
#crontab -r 刪除當前用戶的cron進程
#crontab -u 用戶名 以某用戶的身份來控制cron表
還有個重要的知識點,就是當用戶的計劃任務建立后是存放在/var/spool/cron這個目錄
當使用crontab -e編輯當前用戶的cron表后,會出現一個vi文件,cron的格式是這樣的。分成兩列,左邊是時間,右邊是運行的命令。時間是由5個部分組成。
例:
* * * * * wall hello everyone
5個星號分別代表:minute hour day-of-month month-of-year day-of-week 分時日月周 ,而wall hello everyone 這是命令內容。上面的意識是每分每小時每天每月每周廣播hello everyone。具體時間大家可以自己定義。如果要每兩分鐘發(fā)送就用*/2代替***個*。也可以是用具體時間來表示。
Crontab –e 編輯的任務不要加入用戶名
***個*星號代表個小時的第幾分鐘:minute 范圍是從0-59
第二個*星號代表每天的第幾個小時:hour 范圍是從0-23
第三個*星號代表每月的第幾個日:day-of-month 范圍從1-31
第四個*星號代表沒年的第幾個月:month-of-year 范圍從1-12
第五個*星號代表每周的星期幾:day-of-week 范圍從0-6,其中0表示星期日
用戶名:也就是執(zhí)行程序要通過哪個用戶來執(zhí)行,這個一般可以省略;
命令:執(zhí)行的命令和參數。
如果我要表示9月10日25分執(zhí)行l(wèi)s var/spool/cron任務怎么表示?
25 * 10 9 * ls var/spool/cron
*/1 * * * 0 wall Hello redking.blog.51cto.com
*/ 表示每多少分鐘執(zhí)行一次哈~
當制定了cron任務后,可以用crontab -l查看, 也可以到/var/spool/cron/目錄查看。里面的文件名字就是對應用戶的cron任務
可以使用crontab -r 來刪除當前用戶的cron
vim /etc/crontab 與crontab -e寫入的定時運行有什么區(qū)別?
vim /etc/crontab:是系統級別定義的crontab,/etc/crontab的所有者和組都是root
crontab -e :是用戶自定義的crontab,是所有的用戶都可以寫入的
兩種方法記錄的位置不一樣,一個在/etc/ 另一個在/var/ 里面。都被cron服務調用哈~
三、系統級別的計劃任務及其擴展anacrontab
anacrontab就是系統計劃任務的擴展文件:在一個指定時間間隔錯過后自動執(zhí)行任務
這個是系統設置好了,清理系統垃圾或者是自動執(zhí)行某些腳本的系統任務,一般我們做了解就行了,不要更改
配置文件是/etc/anaconrtab
- # /etc/anacrontab: configuration file for anacron
- # See anacron(8) and anacrontab(5) for details.
- SHELL=/bin/sh
- PATH=/sbin:/bin:/usr/sbin:/usr/bin
- MAILTO=root
- #####格式是這樣的:period(頻率.天數) delay(延遲,分鐘) job-identifier command
- 1 65 cron.daily run-parts /etc/cron.daily
- 7 70 cron.weekly run-parts /etc/cron.weekly
- 30 75 cron.monthly run-parts /etc/cron.monthly
SHELL:就是運行計劃任務的解釋器,默認是bash
PATH:執(zhí)行命令的環(huán)境變量
MAILTO:計劃任務的出發(fā)者用戶
HOME:家目錄為/
run-parts是一個腳本,在/usr/bin/run-parts,作用是執(zhí)行一個目錄下的所有腳本/程序。
run-parts /etc/cron.hourly執(zhí)行目錄/etc/cron.hourly/之下的所有腳本/程序.
run-parts下面就是運行的命令
***行的意思是:每天開機65分鐘后就檢查cron.daily文件是否被執(zhí)行了,如果今天沒有被執(zhí)行就執(zhí)行他
第二行的意思是:每隔7天開機后70分鐘檢查cron.weekly文件是否被執(zhí)行了,如果一周內沒有被執(zhí)行就執(zhí)行他
和at差不多,就是/etc/cron.deny這個配置文件來控制, 同時寫入allow 及deny, 允許.以上就是Linux計劃任務。
【編輯推薦】