crontab
命令常見於Unix和類Unix的操做系統之中,用於設置週期性被執行的指令。該命令從標準輸入設備讀取指令,並將其存放於「crontab」文件中,以供以後讀取和執行。該詞來源於希臘語 chronos(χρνο),原意是時間。
linux
一般,crontab
儲存的指令被守護進程激活, crond
經常在後臺運行,每一分鐘檢查是否有預約的做業須要執行。這類做業通常稱爲cron jobs。vim
crontab命令的功能是在必定的時間間隔調度一些命令的執行。緩存
在/etc目錄下有一個crontab文件,這裏存放有系統運行的一些調度程序。每bash
個用戶能夠創建本身的調度crontab。
crontab命令有三種形式的命令行結構:
crontab [-u user] [file]
crontab [-u user] [-e|-l|-r]
crontab -l -u [-e|-l|-r]
第一個命令行中,file是命令文件的名字。若是在命令行中指定了這個文件,那麼執行crontab命令,則將這個文件拷貝到crontabs目錄下;若是在命令行中沒有制定這個文件,crontab命令將接受標準輸入(鍵盤)上鍵入的命令,並將他們也存放在crontab目錄下。
命令行中-r選項的做用是從/usr/spool/cron/crontabs目錄下刪除用戶定義的文件crontab;
命令行中-l選項的做用是顯示用戶crontab文件的內容。
使用命令crontab -u user -e命令編輯用戶user的cron(c)做業。用戶經過編輯文件來增長或修改任何做業請求。
執行命令crontab -u user -r便可刪除當前用戶的全部的cron做業。
做業與它們預約的時間儲存在文件/usr/spool/cron/crontabs/username裏。username使用戶名,在相應的文件中存放着該用戶所要運行的命令。命令執行的結果,不管是標準輸出仍是錯誤輸出,都將以郵件形式發給用戶。文件裏的每個請求必須包含以spaces和tabs分割的六個域。前五個字段能夠取整數值,指定什麼時候開始工做,第六個域是字符串,稱爲命令字段,其中包括了crontab調度執行的命令。
第一道第五個字段的整數取值範圍及意義是:
0~59 表示分
1~23 表示小時
1~31 表示日
1~12 表示月份
0~6 表示星期(其中0表示星期日)
/usr/lib/cron/cron.allow表示誰能使用crontab命令。若是它是一個空文件代表沒有一個用戶能安排做業。若是這個文件不存在,而有另一個文件/usr/lib/cron/cron.deny,則只有不包括在這個文件中的用戶纔可使用crontab命令。若是它是一個空文件代表任何用戶均可安排做業。兩個文件同時存在時cron.allow優先,若是都不存在,只有超級用戶能夠安排做業。
任務調度的crond常駐命令
crond 是linux用來按期執行程序的命令。當安裝完成操做系統以後,默認便會啓動此任務調度命令。crond命令每分鍾會按期檢查是否有要執行的工做,若是有要執行的工做便會自動執行該工做。而linux任務調度的工做主要分爲如下兩類:
一、系統執行的工做:系統週期性所要執行的工做,如備份系統數據、清理緩存
二、我的執行的工做:某個用戶按期要作的工做,例如每隔10分鐘檢查郵件服務器是否有新信,這些工做可由每一個用戶自行設置。
1、任務調度設置文件的寫法
其格式以下:
Minute Hour Day Month Dayofweek command
分鐘小時天月天每星期命令
每一個字段表明的含義以下:
Minute 每一個小時的第幾分鐘執行該任務
Hour 天天的第幾個小時執行該任務
Day 每個月的第幾天執行該任務
Month 每一年的第幾個月執行該任務
DayOfWeek 每週的第幾天執行該任務
Command 指定要執行的程序
在這些字段裏,除了「Command」是每次都必須指定的字段之外,其它字段皆爲可選字段,可視須要決定。對於不指定的字段,要用「*」來填補其位置。
舉例以下:
一、指定每小時的第5分鐘執行一次ls命令
5 * * * * ls
二、指定天天的 5:30 執行ls命令
30 5 * * * ls
三、指定每個月8號的7:30分執行ls命令
30 7 8 * * ls
四、指定每一年的6月8日5:30執行ls命令
30 5 8 6 * ls
五、指定每星期日的6:30執行ls命令
30 6 * * 0 ls
注:0表示星期天,1表示星期1,以此類推,也能夠用英文來表示,sun表示星期天,mon表示星期一等。
六、每個月10號及20號的3:30執行ls命令
30 3 10,20 * * ls
注:「,」用來鏈接多個不連續的時段
七、天天8-11點的第25分鐘執行ls命令
25 8-11 * * * ls
注:「-」用來鏈接連續的時段
八、每15分鐘執行一次ls命令
*/15 * * * * ls
即每一個小時的第0 15 30 45 60分鐘執行ls命令
九、每月中,每隔10天6:30執行一次ls命令
30 6 */10 * * ls
即每個月的一、十一、2一、31日是的6:30執行一次ls命令。
十、天天7:50以root 身份執行/etc/cron.daily目錄中的全部可執行文件
50 7 * * * root run-parts /etc/cron.daily
注:run-parts參數表示,執行後面目錄中的全部可執行文件。
2、新增調度任務
新增調度任務可用兩種方法:
一、在命令行輸入: crontab -e 而後添加相應的任務,wq存盤退出。
二、直接編輯/etc/crontab 文件,即vim /etc/crontab,添加相應的任務。
3、查看調度任務
crontab -l //列出當前的全部調度任務
crontab -l -u jp //列出用戶jp的全部調度任務
4、刪除任務調度工做
crontab -r //刪除全部任務調度工做
5、任務調度執行結果的轉向
例1:天天5:30執行ls命令,並把結果輸出到/jp/test文件中
30 5 * * * ls >/jp/test 2>&1
注:2>&1 表示執行結果及錯誤信息。
編輯/etc/crontab 文件配置cron
cron服務每分鐘不只要讀一次/var/spool/cron內的全部文件,還須要讀一次/etc/crontab,所以咱們配置這個文件也能運用cron服務作一些事情。用crontab配置是針對某個用戶的,而編輯/etc/crontab是針對系統的任務。服務器
此文件的文件格式是:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //若是出現錯誤,或者有數據輸出,數據做爲郵件發給這個賬號
HOME=/ //使用者運行的路徑,這裏是根目錄
# run-parts
01 * * * * root run-parts /etc/cron.hourly //每小時執行/etc/cron.hourly內的腳本
02 4 * * * root run-parts /etc/cron.daily //天天執行/etc/cron.daily內的腳本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期執行/etc/cron.weekly內的腳本
42 4 1 * * root run-parts /etc/cron.monthly //每個月去執行/etc/cron.monthly內的腳本
你們注意"run-parts"這個參數了,若是去掉這個參數的話,後面就能夠寫要運行的某個腳本名,而不是文件夾名了
at命令的用法
At
列出在指定的時間和日期在計算機上運行的已計劃命令或計劃命令和程序。必須正在運行「計劃」服務才能使用 at 命令。
at [\\computername] [[id] [/delete] | /delete [/yes]]
at [\\computername] time [/interactive] [/every:date[,...]| /next:date[,...]] command
參數
無
若是在沒有參數的狀況下使用,則 at 列出已計劃的命令。
\\computername
指定遠程計算機。若是省略該參數,命令將安排在本地計算機。
id
指定指派給已計劃命令的識別碼。
/delete
取消已計劃的命令。若是省略了 id,計算機中已計劃的命令將被所有取消。
/yes
當刪除已計劃的事件時,對系統的查詢強制進行確定的回答。
time
指定運行命令的時間。將時間以 24 小時標記(00:00 [午夜] 到 23:59)的方式表示爲小時:分鐘。
/interactive
容許做業與在做業運行時登陸用戶的桌面進行交互。
/every:date[,...]
在每一個星期或月的指定日期(例如,每一個星期四,或每個月的第三天)運行命令。將 date 指定爲星期的一天或多天 (M,T,W,Th,F,S,Su),或月的一天或多天(使用 1 到 31 的數字)。用逗號分隔多個日期項。若是省略了 date,將假定爲該月的當前日期。
/next:date[,...]
在重複出現下一天(例如,下個星期四)時,運行指定命令將 date 指定爲星期的一天或多天 (M,T,W,Th,F,S,Su),或月的一天或多天(使用 1 到 31 的數字)。用逗號分隔多個日期項。若是省略了 date,將假定爲該月的當前日期。
command
指定要運行的 Windows 2000 命令、程序(.exe 或 .com 文件)或批處理程序(.bat 或 .cmd 文件)。當命令須要路徑做爲參數時,請使用絕對路徑,也就是從驅動器號開始的整個路徑。若是命令在遠程計算機上,請指定服務器和共享名的 UNC 符號,而不是遠程驅動器號。若是命令不是可執行 (.exe) 文件,必須在命令前加上 cmd /c,例如:
cmd /c dir > c:\test.out
體驗Windows 系統內置的AT命令
AT命令是Windows 中內置的命令,它也能夠媲美Windows中的「計劃任務」,並且在計劃的安排、任務的管理、工做事務的處理方面,AT命令具備更強大更神通的功能。AT命令可在指定時間和日期、在指定計算機上運行命令和程序。
咱們能夠在「開始→運行」中輸入AT命令,下面就來看看AT命令的一些實例分析。
一、定時關機
命令:at 21:00 ShutDown –S –T30
該命令運行後,到了21:00點,電腦會出現「系統關機」對話框,並默認30秒延時自動關機。
二、定時提醒
命令:at 12:00 Net Send 192.168.2.2與朋友約會的時間到了,快點準備出發吧!
其中Net Send是Windows內部程序,能夠發送消息到網絡上的其餘用戶、計算機。192.168.2.2是本機電腦的IP地址。網絡
這個功能在Windows中也稱做「信使服務」。
三、自動運行批處理文件
若是公司的數據佷重要,要求在指定的日期/時間進行備份,那麼運行:
命令:at 1:00AM /Every:Saturday My_BackUp.bat
這樣,在每一個Saturday(週六)的早上1:00點,電腦定時啓動My_BackUp.bat批處理文件。My_BackUp.bat是一個你自行編制的批處理文件,它包含能對系統進行數據徹底備份的多條命令。
四、取消已經安排的計劃
命令:at 5 /Delete
有時候,你已經安排好的計劃可能臨時變更,這樣你能夠及時地用上述命令刪除該計劃(5爲指派給已計劃命令的標識編號),固然,刪除該計劃後,能夠從新安排!ide
掌握了這些對你的工做有很大的幫助!!url