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