十三章:Linux系統(tǒng)定時任務Cron服務應用實踐day17

重點

1.Linux系統(tǒng)定時任務

  1. 什么是定時任務?
    周期性的執(zhí)行任務計劃的軟件,Linux定時任務的常用軟件crond蛾茉。
  2. 使用定時任務軟件权薯,可以每天姑躲,每小時按你需求重復的執(zhí)行一項工作。
    例如:備份 都是0點以后盟蚣,2點爬起來備份黍析,4點以后睡覺。
    需要寫一個程序?qū)崿F(xiàn)自動備份屎开,然后讓定時任務軟件幫你執(zhí)行阐枣。
    鬧鐘。奄抽。蔼两。。
  3. 怎樣用逞度。
  • (1)系統(tǒng)定時任務計劃
    1.不用管理員干預额划,系統(tǒng)自動執(zhí)行。
    2.也可以利用系統(tǒng)任務為管理員服務档泽。
    [root@oldboy ~]# ll /var/log/messages*
    -rw-------. 1 root root 96594 Mar 21 12:40 /var/log/messages
    -rw-------. 1 root root 485249 Mar 20 10:46 /var/log/messages-20190320
    [root@oldboy ~]# ll /var/log/secure*
    -rw-------. 1 root root 1430 Mar 21 12:50 /var/log/secure
    -rw-------. 1 root root 2695 Mar 20 10:46 /var/log/secure-20190320
    [root@oldboyedu /etc/cron.daily]# ll /etc/cron.daily/logrotate /etc/logrotate.conf
    -rwx------. 1 root root 219 Oct 31 2018 /etc/cron.daily/logrotate
    -rw-r--r--. 1 root root 662 Jul 31 2013 /etc/logrotate.conf
    按天切割日志锁孟,就可以用logrotate。
    image.png
  • (2)用戶定時任務計劃
    在Linux系統(tǒng)中茁瘦,
    cron是定時任務的軟件名品抽,
    crond是服務進程名,真正實現(xiàn)定時任務服務甜熔。
    crontab命令是用來設置定時任務規(guī)則的配置命令圆恤。
    要想配置定時任務,首先啟動crond服務。
    systemctl start crond.service
    systemctl stop crond.service
    systemctl status crond.service
    image.png

開啟自啟動
systemctl disable crond.service
systemctl enable crond.service

==========================================

2.crontab命令是用來設置定時任務規(guī)則的配置命令盆昙。

內(nèi)容存放哪里了羽历。定時任務內(nèi)容存放的位置/var/spool/cron/
以當前用戶名作為文件名


image.png
  • 參數(shù)
    -l l列表 查看已經(jīng)設置的定時任務*
    -e edit 編輯定時任務*
    -u user 查看特定用戶下定時任務
    root:
    crontab -l == cat /var/spool/cron/root
    crontab -e == vim /var/spool/cron/root
  • 語法
    編寫定時任務的語法:
    共六列:
    第一列:分 minute (0 - 59)
    第二列:時 hour (0 - 23)
    第三列:日 day of month (1 - 31)
    第四列:月 month (1 - 12) OR jan,feb,mar,apr ...
    第五列:周 day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    第六列:要執(zhí)行的任務命令或程序
  • 特殊符號:

*表示的 每或每一 的意思
00 23 * * * cmd
-連續(xù)區(qū)間 1-10
00 8-23 * * * cmd
, 代表列舉 1,2,3,4,8
00 1,2,3,4,8 * * * cmd
/n n是數(shù)字。
n代表自然數(shù)字淡喜,即“每隔n單位時間”秕磷,例如:每10分鐘執(zhí)行一次任務可以寫成
*/10 * * * * cmd

  • 舉例

命令實例1:/1 * * * * /bin/sh /scripts/data.sh
在本例中除了數(shù)字與命令腳本外,還使用到了符號"
"炼团,號的意思“每一”澎嚣。
第一列的意思為分鐘,特殊符號“/”表示每隔的意思瘟芝,即表示每隔一分鐘執(zhí)行/bin/sh /scripts/data.sh程序易桃。
命令實例2:30 3,12 * * * /bin/sh /scripts/oldboy.sh
在本例中,第一列為30锌俱,表示30分鐘晤郑;第二列為 3,12,這代表3點及 12點贸宏,此定時任務的意思是每天凌晨3點和中午12點的半點時刻(或描述為每天凌晨3:30和中午12:30)執(zhí)行/scripts/oldboy.sh腳本造寝。
命令實例3:30 /6 * * * /bin/sh /scripts/oldboy.sh
在本例中,第一列為30吭练,表示30分鐘匹舞;第二列
/6代表每6個小時,也相當于 6线脚、12赐稽、18、24 的作用浑侥。此定時任務的意思是每隔6個小時的半點時刻執(zhí)行/scripts/oldboy.sh腳本任務姊舵。
命令實例4:30 8-18/2 * * * /bin/sh /scripts/oldboy.sh
在本例中,其中的第一列為30寓落,表示30分鐘括丁;第二列8-18/2代表在早晨8點到下午18點之間每隔2小時,也相當于把8伶选、10史飞、12、14仰税、16构资、18單獨列出。
那么陨簇,此定時任務的意思就是早晨8點到下午18點之間吐绵,每隔2小時的半點時刻執(zhí)行/scripts/oldboy.sh腳本任務。
命令實例5:30 21 * * * /application/apache/bin/apachectl graceful
本例表示每晚的21:30重啟apache。
命令實例6:45 4 1,10,22 * * /application/apache/bin/apachectl graceful
本例表示每月1己单、10唉窃、22日的凌晨4 : 45分重啟apache。
命令實例7:10 1 * * 6,0 /application/apache/bin/apachectl graceful
本例表示每周六纹笼、周日的凌晨1 : 10分重啟apache纹份。
命令實例8:0,30 18-23 * * * /application/apache/bin/apachectl graceful
本例表示在每天18 : 00至23 : 00之間每隔30分鐘重啟apache。
命令實例9:00 /1 * * * /application/apache/bin/apachectl graceful
本例表示每隔一小時整點重啟apache
命令實例10:
23,00-07/1 * * * /application/apache/bin/apachectl graceful
本例并不表示晚上23點和早上0-7點之間每隔一小時重啟Apache廷痘。
要說明的是蔓涧,以上結(jié)果是不規(guī)范的,也是不對的牍疏。大家想想為什么?
以上定時任務的第一列為
拨齐,表示每分都執(zhí)行任務即晚上23點和早上0-7點之間每隔一小時的每分都重啟Apache鳞陨,很可怕吧。
命令實例11:00 11 * 4 1-3 /application/apache/bin/apachectl graceful
本例表示4月的每周一到周三的上午11點整重啟Apache瞻惋。
命令實例12:30 09 * * 0 去老男孩教育上課
本例表示每周日上午9:30去老男孩教育上課厦滤,這是周末班的上課頻率。
命令實例13:30 08 * * *去老男孩教育上課
本例表示每上午8:30去老男孩教育上課歼狼,這是脫產(chǎn)班的上課頻率掏导。
通過上述13個例子,相信讀者已經(jīng)能夠理解定時任務的配置規(guī)則了羽峰。

  • 實踐:
    1趟咆、題目:每分鐘追加一次oldboy字符串到/tmp/oldboy.log里。

解答:大象放冰箱分三步
a.命令行執(zhí)行成功梅屉。
[root@oldboyedu ~]# echo "oldboy">>/tmp/oldboy.log
[root@oldboyedu ~]# cat /tmp/oldboy.log
oldboy
[root@oldboyedu ~]# echo "oldboy">>/tmp/oldboy.log
[root@oldboyedu ~]# cat /tmp/oldboy.log
oldboy
oldboy
b.配置定時任務crontab -e 編輯配置
[root@oldboyedu ~]# crontab -l
* * * * * echo "oldboy">>/tmp/oldboy.log
c.檢查
[root@oldboyedu ~]# tail -f /tmp/oldboy.log
oldboy
oldboy
oldboy

老男孩思想:
1)先輸入* * * * *
2)先命令行操作成功值纱。
3)拷貝命令到定時任務編輯里。

3.系統(tǒng)自動更新時間命令

范例13-2:讓服務器時間每5分鐘和互聯(lián)網(wǎng)時間做一次同步坯汤。
安裝時間服務軟件:yum install ntpdate -y
更新互聯(lián)網(wǎng)時間 /usr/sbin/ntpdate ntp1.aliyun.com

4. 優(yōu)秀案例

范例13-3:每天晚上0點虐唠,把站點目錄/var/www/html下的內(nèi)容打包備份到/data目錄下,并且要求每次生成不同的備份包名惰聂。
套入框架分三步:

  • 1.命令行稿成功
    準備工作:
    [root@oldboyedu ~]# mkdir /var/www/html /data -p
    具體命令:
    [root@oldboyedu ~]# tar zcvf /data/html_(date +\%F).tar.gz /var/www/html/ tar: Removing leading `/' from member names /var/www/html/ [root@oldboyedu ~]# ll /data total 4 -rw-r--r-- 1 root root 117 Mar 22 11:59 html_2019-03-22.tar.gz 正確答案 [root@oldboyedu ~]# crontab -l 00 00 * * * tar zcf /data/html_(date +%F).tar.gz /var/www/html/
    優(yōu)秀答案:(企業(yè)里)
    1疆偿、命令執(zhí)行
    正確答案
    [root@oldboyedu ~]# crontab -l
    00 00 * * * tar zcvf /data/html_$(date +%F).tar.gz /var/www/html/
    2.盡量用腳本文件實現(xiàn)
    image.png

cd /server/scripts

cat bak.sh

cd /var/www
tar zcf /data/html_$(date +%F).tar.gz ./html
命令行執(zhí)行:
/bin/sh /server/scripts/bak.sh
3、編輯定時任務

bak html dir by oldboy at 2020108

00 00 * * * /bin/sh /server/scripts/bak.sh &>/dev/null
[root@oldboyedu /server/scripts]# crontab -l|tail -2

bak html dir by oldboy at 2020108

00 00 * * * /bin/sh /server/scripts/bak.sh &>/dev/null
4搓幌、檢查正式結(jié)果
[root@woaini /data]# crontab -l

  • /dev/null 黑洞設備
    馬航370>/dev/null
    &>/dev/null 等價>/dev/null 2>&1
    image.png

5.生產(chǎn)環(huán)境下的定時Cron書寫要領

13.5.1 要領1:為定時任務規(guī)則加必要的注釋
13.5.2 要領2:所有的定時任務盡量都以腳本的形式執(zhí)行
13.5.3 要領3:在執(zhí)行的Shell腳本前加上/bin/sh
13.5.4 要領4:定時任務中命令或腳本的結(jié)尾加>/dev/null 2>&1
13.5.5 要領5:在指定用戶下執(zhí)行相關定時任務
13.5.6 要領6:生產(chǎn)任務計劃程序中不要隨意打印輸出信息,有輸出的想法去掉杆故。
13.5.7 要領7:定時任務執(zhí)行的腳本要存放到規(guī)范路徑下
13.5.8 要領8:配置定時任務要規(guī)范操作過程,減少出錯
13.5.9 要領9:定時任務腳本中程序命令及路徑盡量用全路徑
13.5.10 要領10:時間變量%號要用反斜線轉(zhuǎn)義(只有定時任務里是命令時需要)
13.5.11 要領11:若腳本中調(diào)用了系統(tǒng)環(huán)境變量溉愁,要重新定義
13.5.11 要領12:出錯或無法執(zhí)行反番,就檢查/var/log/cron日志
運維規(guī)范:
腳本位置:/server/scripts
軟件位置:/server/tools
編譯位置:/application/軟件名字-版本,然后要軟鏈接。

1) 在每周6的凌晨3:15執(zhí)行/home/shell/collect.pl罢缸,并將標準輸出和標準錯誤輸出到/dev/null設備篙贸,請寫出crontab中的語句。
2) crontab在11月份內(nèi)枫疆,每天的早上6點到12點中爵川,每隔2小時執(zhí)行一次/usr/bin/httpd.sh,怎么實現(xiàn) 息楔?
3) crontab文件由六個域組成寝贡,每個域之間用空格分割,其排列正確的為( )
A值依、MIN HOUR DAY MONTH YEAR COMMAND
B圃泡、MIN HOUR DAY MONTH DAYOFWEEK COMMAND
C、COMMAND HOUR DAY MONTH DAYOFWEEK
D愿险、COMMAND YEAR MONTH DAY HOUR MIN

如何調(diào)試定時任務颇蜡?

1、查看錯誤日志*****
/var/log/cron
學會最小化排除:
先清空辆亏,>/var/log/cron
然后在測試和觀察风秤。

2、增加執(zhí)行任務頻率調(diào)試任務 *****
把頻率調(diào)快扮叨。

3缤弦、把定時任務執(zhí)行時間比當前時間拖后5分鐘
00 03執(zhí)行,當前5:00彻磁,咱們就把時間調(diào)整 05 05,有個5分鐘提前量碍沐。

4、調(diào)整系統(tǒng)時間(測試環(huán)境還湊合)
00 03執(zhí)行衷蜓,把系統(tǒng)時間調(diào)整到2:55抢韭。

5、通過腳本日志輸出調(diào)試定時任務
定時任務輸出

          • /bin/sh /server/scripts/bak.sh &>/tmp/bak.log
            腳本輸出:
            tar zcvf oldboy.tar.gz ./data &>/tmp/tar.log

注意點:
有時候程序只能執(zhí)行一次恍箭。一定要在測試環(huán)境測試好刻恭,然后直接復制到正式。

代碼發(fā)布流程:
辦公室測試環(huán)境===>IDC機房測試環(huán)境===>IDC機房正式環(huán)境

防止在正式環(huán)境發(fā)生錯誤扯夭,從而影響用戶體驗鳍贾,業(yè)務穩(wěn)定。

企業(yè)故障案例:No space left on device常見企業(yè)故障案例
磁盤滿的報錯交洗,原因往往是inode被占滿了骑科。
df -i
因為定時任務沒有加&>/dev/null,定時任務執(zhí)行的時候把輸出給系統(tǒng)root發(fā)郵件构拳。
郵件服務器postfix服務默認不開咆爽,這些給系統(tǒng)發(fā)的郵件就會堆在臨時目錄(大量小文件存在)
/var/spool/clientmqueue/ 6
/var/spool/postfix/maildrop/ 7

企業(yè)故障案例:程序通過手動可以執(zhí)行梁棠,放定時任務里不執(zhí)行。
export變量生產(chǎn)案例

定時任務在執(zhí)行腳本的時候斗埂,多數(shù)情況沒辦法加載環(huán)境變量符糊,特別是/etc/profile。
登錄后怎么操作都對呛凶,但是就是放到定時任務不行男娄。

命令行:bash登錄方式
1.手工登錄后,加載所有環(huán)境變量(/.bash_profile,/.bash_rc,/etc/profile,/etc/bashrc)
2.定時任務執(zhí)行腳本屬于非登錄狀態(tài)(/etc/bashrc)漾稀。
實踐檢驗模闲,定時任務能否自動加載/etc/bashrc和/etc/profile文件。

所有運維都會把變量放到此文件/etc/profile崭捍,把這個文件里的變量定義
在執(zhí)行的腳本中 重新定義尸折。

具體為crond執(zhí)行Shell時只能識別為數(shù)不多的系統(tǒng)環(huán)境變量,普通環(huán)境變量一般是無法識別的殷蛇,如果在編寫的腳本中需要使用變量实夹,最好使用export重新聲明下該變量,以確保腳本正確執(zhí)行晾咪。以后要將其作為一個開發(fā)基本規(guī)范寫上收擦。

1)在每周6的凌晨3:15執(zhí)行/home/shell/collect.pl贮配,并將標準輸出和標準錯誤輸出到/dev/null設備谍倦,請寫出crontab中的語句。

oldboy...

15 03 * * 6 /bin/perl /home/shell/collect.pl >/dev/null 2>&1

2)crontab在11月份內(nèi)泪勒,每天的早上6點到12點中昼蛀,每隔2小時執(zhí)行一次/usr/bin/httpd.sh,
怎么實現(xiàn) 圆存?
00 6-12/2 * 11 * /bin/sh /usr/bin/httpd.sh &>/dev/null

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叼旋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子沦辙,更是在濱河造成了極大的恐慌夫植,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件油讯,死亡現(xiàn)場離奇詭異详民,居然都是意外死亡,警方通過查閱死者的電腦和手機陌兑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門沈跨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人兔综,你說我怎么就攤上這事饿凛∧辏” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵涧窒,是天一觀的道長心肪。 經(jīng)常有香客問我,道長杀狡,這世上最難降的妖魔是什么蒙畴? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮呜象,結(jié)果婚禮上膳凝,老公的妹妹穿的比我還像新娘。我一直安慰自己恭陡,他們只是感情好蹬音,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著休玩,像睡著了一般著淆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拴疤,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天永部,我揣著相機與錄音,去河邊找鬼呐矾。 笑死苔埋,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的蜒犯。 我是一名探鬼主播组橄,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼罚随!你這毒婦竟也來了玉工?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤淘菩,失蹤者是張志新(化名)和其女友劉穎遵班,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體潮改,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡狭郑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了进陡。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愿阐。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖趾疚,靈堂內(nèi)的尸體忽然破棺而出缨历,到底是詐尸還是另有隱情以蕴,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布辛孵,位于F島的核電站丛肮,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏魄缚。R本人自食惡果不足惜宝与,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望冶匹。 院中可真熱鬧习劫,春花似錦、人聲如沸嚼隘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽飞蛹。三九已至谤狡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間卧檐,已是汗流浹背墓懂。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留霉囚,地道東北人捕仔。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像佛嬉,于是被迫代替她去往敵國和親逻澳。 傳聞我的和親對象是個殘疾皇子闸天,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

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