Linux中的計劃任務(wù)之Crontab

簡介:Crontab命令常見于Unix和類Unix的操作系統(tǒng)之中印机,用于設(shè)置周期性被執(zhí)行的指令射赛。本課程通過對Crontab的介紹以及案例演示楣责,帶領(lǐng)大家學習在實際工作中通過crontab進行計劃任務(wù)設(shè)置秆麸,讓重復的任務(wù)自動化執(zhí)行,提高大家工作效率屯烦。

(Linux中的計劃任務(wù)—Crontab-慕課網(wǎng):http://www.imooc.com/learn/216)

第1章 課程背景

1-1 課程背景

@PeterZhou
CRONTAB

工作中遇到的困難

  • 每分鐘需要執(zhí)行一個程序檢查系統(tǒng)運行狀態(tài)驻龟;
  • 每天凌晨需要對過去一天的業(yè)務(wù)數(shù)據(jù)進行統(tǒng)計迅脐;
  • 每個星期需要把日志文件備份谴蔑;
  • 每個月需要把數(shù)據(jù)庫進行備份隐锭;

第2章 Crontab簡介

2-1 Crontab是什么

Crontab是一個用于設(shè)置周期性被執(zhí)行的任務(wù)的工具计贰。

  • 被周期性執(zhí)行的任務(wù)我們稱為Cron Job躁倒;
  • 周期性執(zhí)行的任務(wù)列表我們稱為Cron Table洒琢;

第3章 Crontab實踐

3-1 Crontab時間內(nèi)容簡介

  • 相關(guān)工具
  • 安裝并檢查Crontab服務(wù)
  • Crontab的基本組成
  • Crontab的配置文件格式
  • Crontab工具的使用
  • Crontab的日志
  • Crontab常見錯誤

3-2 相關(guān)工具putty介紹

Putty
一個免費的易用的SSH連接工具
http://www/putty.org/
putty_zh.exe
雙擊運行,填寫主機名稱(或IP地址)(M)荧嵌,端口(P):22啦撮;連接類型:SSH赃春;打開织中,輸入密碼;

3-3 安裝并檢查Crontab服務(wù)

檢查cron服務(wù)

  • 檢查Crontab工具是否安裝:crontab -l
    [root@ip-172-31-17-189 ec2-user]# crontab -l
  • 檢查crond服務(wù)是否啟動:service crond status
    [root@ip-172-31-17-189 ec2-user]# service crond status
    安裝cron
  • yum install vixie-cron
    [root@ip-172-31-17-189 ec2-user]# yum install vixie-cron
  • yum install crontabs
    [root@ip-172-31-17-189 ec2-user]# yum install crontabs

3-4 案例實現(xiàn)

一個簡單的例子

  • 每分鐘都打印當前日期到一個日志文件中
    */1 **** date >> /tem/log.txt
    #編輯和添加計劃任務(wù)
    [root@ip-172-31-17-189 ec2-user]# crontab -e
    按【字母O】開始寫入
    */1 * * * * date >> /tmp/log.txt
    按【ESC】停止寫入
    輸入【:wq】保存并退出
    [root@ip-172-31-17-189 ec2-user]# crontab -l
    #不斷顯示文本文件的最后幾行內(nèi)容(動態(tài)顯示脱惰,不斷刷新)
    [root@ip-172-31-17-189 ec2-user]# tail -f /tmp/log.txt
    Ctrl+C退出命令
    #清屏
    [root@ip-172-31-17-189 ec2-user]# clear
    #顯示最后幾行內(nèi)容
    [root@ip-172-31-17-189 ec2-user]# tail /tmp/log.txt
    #顯示最后三行內(nèi)容
    [root@ip-172-31-17-189 ec2-user]# tail -3 /tmp/log.txt

3-5 Crontab的基本組成

系統(tǒng)服務(wù):CROND(每分鐘都會從配置文件刷新定時任務(wù))
配置文件:文件方式設(shè)置定時任務(wù)
配置工具:crontab(用于調(diào)整定時任務(wù))

3-6 Crontab的配置文件格式

每天18:00至23:00之間每隔30分鐘重啟apache
0,30 18-23 * * * service httpd restart
0-59/30 18-23 * * * service httpd restart
小結(jié)

  • *表示任何時候都匹配采盒;
  • 可以用"A,B,C"表示A或者B或者C時執(zhí)行命令磅氨;
  • 可以用"A-B"表示A到B之間執(zhí)行的命令烦租;
  • 可以用"*/A"表示每A分鐘(小時等)執(zhí)行一次命令叉橱;

3-7 Crontab工具的使用

  • 查看某用戶的計劃任務(wù)列表窃祝;
  • 修改某用戶的計劃任務(wù)踱侣;
  • 查看生成的最終計劃任務(wù)文件;
    /var/spool/cron
    [root@ip-172-31-17-189 ec2-user]# crontab -help
    [root@ip-172-31-17-189 ec2-user]# crontab -l
    [root@ip-172-31-17-189 ec2-user]# crontab -e
    #添加打印奇數(shù)分鐘任務(wù)
    1-59/2 * * * * echo "JISHU*********************"
    [root@ip-172-31-17-189 ec2-user]# crontab -l
    #清屏
    [root@ip-172-31-17-189 ec2-user]# clear
    #添加crontester用戶
    [root@ip-172-31-17-189 ec2-user]# useradd crontester
    [root@ip-172-31-17-189 ec2-user]# crontab -e -u crontester
    #添加打印偶數(shù)分鐘任務(wù)
    0-58/2 * * * * echo "EVEN*********************"
    [root@ip-172-31-17-189 ec2-user]# crontab -l -u crontester
    #清屏
    [root@ip-172-31-17-189 ec2-user]# clear
    #查看任務(wù)進程
    [root@ip-172-31-17-189 ec2-user]# tail -f /var/log/cron
    按【Ctrl+C】停止

3-8 Crontab的配置文件

全局(系統(tǒng))配置文件
/etc/crontab
注意格式
Root配置文件
只有root用戶才會把這些內(nèi)容載入到計劃任務(wù)表中;
[root@ip-172-31-17-189 ec2-user]# cd /etc
[root@ip-172-31-17-189 etc]# ls cron*
[root@ip-172-31-17-189 etc]# vi crontab
*/1 * * * * root ceho "JOB IN THE /etc/corntab FILE***********************"
[root@ip-172-31-17-189 etc]# tail -f /var/log/cron
按【Ctrl+C】停止
[root@ip-172-31-17-189 etc]# ls cron*
[root@ip-172-31-17-189 etc]# cd cron.d
[root@ip-172-31-17-189 cron.d]# ls
[root@ip-172-31-17-189 cron.d]# vi crontest
*/1 * * * * crontester echo "File in /etc/cron.d/crontest*********"
[root@ip-172-31-17-189 cron.d]# tail -f /var/log/cron
按【Ctrl+C】停止
[root@ip-172-31-17-189 cron.d]# crontab -l -u crontester
[root@ip-172-31-17-189 ~]# crontab -l
[root@ip-172-31-17-189 ~]# cat /var/spool/cron/root
[root@ip-172-31-17-189 ~]# vi /var/spool/cron/root
# END of File
[root@ip-172-31-17-189 ~]# crontab -l
#查看列表
[root@ip-172-31-17-189 ~]# ls /var/spool/cron

3-9 Crontab的日志

/var/log/cron文件保存著cron的任務(wù)執(zhí)行記錄
#切換目錄
[root@ip-172-31-17-189 ~]# cd /var/log
[root@ip-172-31-17-189 log]# ls cron*
[root@ip-172-31-17-189 log]# tail -f /var/log/cron
[root@ip-172-31-17-189 log]# cat /etc/crontab
[root@ip-172-31-17-189 cron]# cd /var/spool/mail
[root@ip-172-31-17-189 mail]# pwd
[root@ip-172-31-17-189 mail]# ls
[root@ip-172-31-17-189 mail]# tail -100 root

第4章 Crontab的常見錯誤

4-1 Crontab的常見錯誤之環(huán)境變量

環(huán)境變量殴蹄;
命令行雙引號中使用%時,未加反斜線
分鐘設(shè)置誤用绑嘹;
#切換到用戶根目錄下:
[root@ip-172-31-17-189 ec2-user]# cd ~
#查看路徑工腋;
[root@ip-172-31-17-189 ~]# pwd
[root@ip-172-31-17-189 ~]# ls -a
#編輯.bash_profile文件
[root@ip-172-31-17-189 ~]# vi .bash_profile
#添加環(huán)境變量
APPDIR=/etc
export APPDIR
保存并退出
[root@ip-172-31-17-189 ~]# source .bash_profile
[root@ip-172-31-17-189 ~]# echo $APPDIR
[root@ip-172-31-17-189 ~]# crontab -e
#添加計劃任務(wù)
*/1 * * * * echo $APPDIR >> /tmp/appdir.log
#查看系統(tǒng)時間
[root@ip-172-31-17-189 ~]# date
[root@ip-172-31-17-189 ~]# tail -f /var/log/cron
【Ctrl+C】終止
[root@ip-172-31-17-189 ~]# cat /tmp/appdir.log
【計劃任務(wù)的環(huán)境變量容易出錯】

4-2 Crontab的常見錯誤之命令行操作

第三和第五個域之間執(zhí)行的是“或”操作擅腰;

  • 四月的第一個星期日早晨1時59分運行a.sh
    59 1 1-7 4 0 /root/a.sh
    改為
    59 1 1-7 4 * testdate +%w-eq 0 &&/root/a.sh
    #今天是周幾
    [ec2-user@ip-172-31-17-189 ~]$ date +%w
    #判斷是否成功
    [ec2-user@ip-172-31-17-189 ~]$ testdate +%w-eq 0
    #上一個命令執(zhí)行成功與否歼争,1表示失敗沐绒,0表示成功
    [ec2-user@ip-172-31-17-189 ~]$ echo $?
    [ec2-user@ip-172-31-17-189 ~]$ test 1 = 0
    [ec2-user@ip-172-31-17-189 ~]$ echo $?
    #先判斷乔遮,判斷成功后蹋肮,執(zhí)行后面的命令
    [ec2-user@ip-172-31-17-189 ~]$ test 1 = 0 && echo hello
    [ec2-user@ip-172-31-17-189 ~]$ test 1 = 0 || echo hello

4-3 Crontab的常見錯誤之分鐘設(shè)置誤用

  • 兩個小時運行一次
    * 0,2,4,6,8,10,12,14,16,18,20,22 * * * date
    改為
    0 */2 * * * date

4-4 Crontab綜合案例解析

Crontab中最小只能設(shè)置到每分鐘執(zhí)行一個命令括尸,如果想每半分鐘執(zhí)行某個命令怎么做到濒翻?

  • 通過shell腳本的sleep命令配合Crontab即可完成這一功能;
  • date && sleep 0.5s && date
    [ec2-user@ip-172-31-17-189 ~]$ date
    [ec2-user@ip-172-31-17-189 ~]$ date;sleep 0.5s;date
    [root@ip-172-31-17-189 ec2-user]# crontab -e
    */1 * * * * echo "*******************************************"
    */1 * * * * sleep 30s;echo "*******************************************"
    [root@ip-172-31-17-189 ec2-user]# tail -f /var/log/cron
    */1 * * * * date >> /tmp/date.log
    */1 * * * * sleep 30s;date >> /tmp/date.log
    [root@ip-172-31-17-189 ec2-user]# crontab -l
    [root@ip-172-31-17-189 ec2-user]# tail -f /var/log/cron
    [root@ip-172-31-17-189 ec2-user]# tail -f /tmp/date.log
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末有送,一起剝皮案震驚了整個濱河市淌喻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌雀摘,老刑警劉巖裸删,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異阵赠,居然都是意外死亡涯塔,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門清蚀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來匕荸,“玉大人,你說我怎么就攤上這事。” “怎么了尔觉?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵泵额,是天一觀的道長烈掠。 經(jīng)常有香客問我俐镐,道長取董,這世上最難降的妖魔是什么孽鸡? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任配乱,我火速辦了婚禮忿檩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蘸拔,像睡著了一般陨晶。 火紅的嫁衣襯著肌膚如雪褐耳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天咧虎,我揣著相機與錄音茁彭,去河邊找鬼哲嘲。 笑死竣稽,一個胖子當著我的面吹牛岛宦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼庐完,長吁一口氣:“原來是場噩夢啊……” “哼生音!你這毒婦竟也來了蓉媳?” 一聲冷哼從身側(cè)響起贼邓,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤描融,失蹤者是張志新(化名)和其女友劉穎玻募,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體闲勺,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡苞笨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年谚中,在試婚紗的時候發(fā)現(xiàn)自己被綠了囊拜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡蜂挪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谓苟,到底是詐尸還是另有隱情协怒,我是刑警寧澤涝焙,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站孕暇,受9級特大地震影響仑撞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜妖滔,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一隧哮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧座舍,春花似錦沮翔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至岸浑,卻和暖如春搏存,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背矢洲。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工璧眠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人读虏。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓责静,卻偏偏與公主長得像,于是被迫代替她去往敵國和親盖桥。 傳聞我的和親對象是個殘疾皇子灾螃,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Linux定時任務(wù)Crontab命令詳解 linux 系統(tǒng)則是由 cron (crond) 這個系統(tǒng)服務(wù)來控制的。...
    孫燕超閱讀 1,824評論 0 4
  • 一揩徊、簡介 crond是Linux下用來周期執(zhí)行某種任務(wù)或等待處理某些事件的一個守護進程腰鬼,當安裝完成操作系統(tǒng)后,默認...
    人在碼途閱讀 1,023評論 0 3
  • Linux 系統(tǒng)提供了使用者控制計劃任務(wù)的命令 :crontab 命令塑荒。 一熄赡、crond簡介 crond是linu...
    happeace閱讀 1,775評論 0 53
  • 前一天學習了 at 命令是針對僅運行一次的任務(wù),循環(huán)運行的例行性計劃任務(wù)齿税,linux系統(tǒng)則是由 cron (cro...
    Zcclucky閱讀 578評論 0 0
  • Linux 系統(tǒng)命令及其使用詳解( 大全) 名稱: cat 使用權(quán)限:所有使用者 使用方式:cat [-AbeEn...
    小向資源網(wǎng)閱讀 1,510評論 0 3