作業(yè)-第04周--課堂-Day17-linux系統(tǒng)定時(shí)任務(wù)Cron(d)服務(wù)應(yīng)用實(shí)踐

Day17 課堂筆記

1 Linux系統(tǒng)定時(shí)任務(wù)

1搬泥、什么是定時(shí)任務(wù)?
周期性的執(zhí)行任務(wù)計(jì)劃的軟件伏尼,Linux定時(shí)任務(wù)的常用軟件crond忿檩。

2、使用定時(shí)任務(wù)軟件爆阶,可以每天燥透,每小時(shí)按你需求重復(fù)的執(zhí)行一項(xiàng)工作。
例如:備份 都是0點(diǎn)以后辨图,2點(diǎn)爬起來備份班套,4點(diǎn)以后睡覺。
需要寫一個(gè)程序?qū)崿F(xiàn)自動備份故河,然后讓定時(shí)任務(wù)軟件幫你執(zhí)行吱韭。

3、怎樣用鱼的。

(1)系統(tǒng)定時(shí)任務(wù)計(jì)劃

  • 1.不用管理員干預(yù)理盆,系統(tǒng)自動執(zhí)行。
  • 2.也可以利用系統(tǒng)任務(wù)為管理員服務(wù)凑阶。
[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

(2)用戶定時(shí)任務(wù)計(jì)劃
在Linux系統(tǒng)中宙橱,
cron是定時(shí)任務(wù)的軟件名姨俩,
crond是服務(wù)進(jìn)程名,真正實(shí)現(xiàn)定時(shí)任務(wù)服務(wù)师郑。
crontab命令是用來設(shè)置定時(shí)任務(wù)規(guī)則的配置命令环葵。

要想配置定時(shí)任務(wù),首先啟動crond服務(wù)宝冕。

systemctl start crond.service 
systemctl stop crond.service 
systemctl status crond.service 

開啟自啟動和不啟動:

systemctl enable crond.service 
systemctl disable crond.service
[root@oldboyedu ~]# systemctl status crond
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2020-10-08 01:56:12 CST; 2min 26s ago
 Main PID: 13189 (crond)
   CGroup: /system.slice/crond.service
           └─13189 /usr/sbin/crond -n

Oct 08 01:56:12 oldboyedu crond[13189]: (CRON) INFO (RANDOM_DELAY will be...)
Oct 08 01:56:12 oldboyedu systemd[1]: Started Command Scheduler.
Oct 08 01:56:12 oldboyedu crond[13189]: (CRON) INFO (running with inotify...)
Oct 08 01:56:12 oldboyedu crond[13189]: (CRON) INFO (@reboot jobs will be...)
Hint: Some lines were ellipsized, use -l to show in full.

crontab命令是用來設(shè)置定時(shí)任務(wù)規(guī)則的配置命令张遭。
內(nèi)容存放哪里了。定時(shí)任務(wù)內(nèi)容存放的位置/var/spool/cron/
以當(dāng)前用戶名作為文件名

[root@oldboyedu ~]# ll /var/spool/cron/
total 8
-rw------- 1 oldboy oldboy 10 Oct  8 02:04 oldboy
-rw------- 1 root   root    6 Oct  8 02:02 root
[root@oldboyedu ~]# cat /var/spool/cron/oldboy 
###oldboy

crontab參數(shù):

  • -l 列表 查看已經(jīng)設(shè)置的定時(shí)任務(wù)*
  • -e edit 編輯定時(shí)任務(wù)*
  • -u user 查看特定用戶下定時(shí)任務(wù)

舉例root

crontab -l == cat /var/spool/cron/root
crontab -e == vim /var/spool/cron/root

編寫定時(shí)任務(wù)的語法:

# Example of job definition:
# .---------------- 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
# |  |  |  |  |
# *  *  *  *  *  (command to be executed)

共六列:
第一列:分 minute (0 - 59)
第二列:時(shí) 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í)行的任務(wù)命令或程序

特殊符號:

* 表示的 每或每一 的意思
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單位時(shí)間”,例如:每10分鐘執(zhí)行一次任務(wù)可以寫成
*/10 * * * * cmd
*/1 * * * * /bin/sh /scripts/data.sh
30 3,12 * * * /bin/sh /scripts/oldboy.sh
30 */6 * * *    /bin/sh /scripts/oldboy.sh
30 8-18/2 * * * /bin/sh /scripts/oldboy.sh 
30 21 * * * 最強(qiáng)大腦
45 4 1,10,22 * * /application/apache/bin/apachectl graceful
10 1 * * 6,0 /application/apache/bin/apachectl graceful
0,30 18-23 * * * /application/apache/bin/apachectl graceful
00 */1 * * * /application/apache/bin/apachectl graceful

2 命令實(shí)例

命令實(shí)例1:

*/1 * * * * /bin/sh /scripts/data.sh

在本例中除了數(shù)字與命令腳本外湿刽,還使用到了符號""的烁,號的意思“每一”。
第一列的意思為分鐘诈闺,特殊符號“/”表示每隔的意思渴庆,即表示每隔一分鐘執(zhí)行/bin/sh /scripts/data.sh程序。

命令實(shí)例2:

30 3,12 * * * /bin/sh /scripts/oldboy.sh

在本例中雅镊,第一列為30襟雷,表示30分鐘;第二列為 3,12仁烹,這代表3點(diǎn)及 12點(diǎn)耸弄,此定時(shí)任務(wù)的意思是每天凌晨3點(diǎn)和中午12點(diǎn)的半點(diǎn)時(shí)刻(或描述為每天凌晨3:30和中午12:30)執(zhí)行/scripts/oldboy.sh腳本。

命令實(shí)例3:

30 */6 * * * /bin/sh /scripts/oldboy.sh

在本例中卓缰,第一列為30计呈,表示30分鐘;第二列*/6代表每6個(gè)小時(shí)征唬,也相當(dāng)于 6捌显、12、18总寒、24 的作用扶歪。此定時(shí)任務(wù)的意思是每隔6個(gè)小時(shí)的半點(diǎn)時(shí)刻執(zhí)行/scripts/oldboy.sh腳本任務(wù)。

命令實(shí)例4:

30 8-18/2 * * * /bin/sh /scripts/oldboy.sh 

在本例中摄闸,其中的第一列為30善镰,表示30分鐘;第二列8-18/2代表在早晨8點(diǎn)到下午18點(diǎn)之間每隔2小時(shí)贪薪,也相當(dāng)于把8媳禁、10、12画切、14竣稽、16、18單獨(dú)列出霍弹。
那么毫别,此定時(shí)任務(wù)的意思就是早晨8點(diǎn)到下午18點(diǎn)之間,每隔2小時(shí)的半點(diǎn)時(shí)刻執(zhí)行/scripts/oldboy.sh腳本任務(wù)典格。

命令實(shí)例5:

30 21 * * * /application/apache/bin/apachectl graceful

本例表示每晚的21:30重啟apache岛宦。

命令實(shí)例6:

45 4 1,10,22 * * /application/apache/bin/apachectl graceful

本例表示每月1、10耍缴、22日的凌晨4 : 45分重啟apache砾肺。

命令實(shí)例7:

10 1 * * 6,0 /application/apache/bin/apachectl graceful

本例表示每周六挽霉、周日的凌晨1 : 10分重啟apache

命令實(shí)例8:

0,30 18-23 * * * /application/apache/bin/apachectl graceful

本例表示在每天18 : 00至23 : 00之間每隔30分鐘重啟apache变汪。

命令實(shí)例9:

00 */1 * * * /application/apache/bin/apachectl graceful

本例表示每隔一小時(shí)整點(diǎn)重啟apache

命令實(shí)例10:

* 23,00-07/1 * * * /application/apache/bin/apachectl graceful

本例并不表示晚上23點(diǎn)和早上0-7點(diǎn)之間每隔一小時(shí)重啟apache侠坎。

要說明的是,以上結(jié)果是不規(guī)范的裙盾,也是不對的实胸。大家想想為什么?
以上定時(shí)任務(wù)的第一列為*番官,表示每分都執(zhí)行任務(wù)即晚上23點(diǎn)和早上0-7點(diǎn)之間每隔一小時(shí)的每分都重啟apache庐完,很可怕吧。

命令實(shí)例11:

00 11 * 4 1-3 /application/apache/bin/apachectl graceful

本例表示4月的每周一到周三的上午11點(diǎn)整重啟apache徘熔。

命令實(shí)例12:

30 09 * * 0 去老男孩教育上課

本例表示每周日上午9:30去老男孩教育上課门躯,這是周末班的上課頻率。

命令實(shí)例13:

30 08 * * *去老男孩教育上課

本例表示每上午8:30去老男孩教育上課酷师,這是脫產(chǎn)班的上課頻率生音。

3 實(shí)踐:

范例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.配置定時(shí)任務(wù)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)拷貝命令到定時(shí)任務(wù)編輯里。


范例2:讓服務(wù)器時(shí)間每5分鐘和互聯(lián)網(wǎng)時(shí)間做一次同步饱须。

安裝時(shí)間服務(wù)軟件:

yum install ntpdate -y

更新互聯(lián)網(wǎng)時(shí)間 :

/usr/sbin/ntpdate ntp1.aliyun.com
/dev/null 黑洞設(shè)備
&>/dev/null 等價(jià)>/dev/null 2>&1
[root@oldboyedu ~]# crontab -l
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null

范例3:每天晚上0點(diǎn)域醇,把站點(diǎn)目錄/var/www/html下的內(nèi)容打包備份到/data目錄下,并且要求每次生成不同的備份包名蓉媳。

至少分三步:

  1. 命令行稿成功

準(zhǔn)備工作:

[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
  1. 編寫定時(shí)任務(wù)
[root@oldboyedu ~]# crontab -l
00 00 * * * tar zcvf /data/html_$(date +%F).tar.gz /var/www/html/

錯(cuò)了譬挚,不執(zhí)行。酪呻。减宣。。
看報(bào)錯(cuò)日志玩荠。漆腌。。錯(cuò)誤日志
定時(shí)任務(wù)沒有執(zhí)行阶冈,出錯(cuò)了日志在哪里闷尿?
出錯(cuò)日志/var/log/cron

Mar 22 12:03:01 oldboyedu CROND[18770]: (root) CMD (tar zcvf /data/html_$(date +)

定時(shí)任務(wù)對%的要求,百分號要轉(zhuǎn)義\%

正確答案:

[root@oldboyedu ~]# crontab -l
00 00 * * * tar zcvf /data/html_$(date +\%F).tar.gz /var/www/html/

優(yōu)秀的答案(企業(yè)里):

  1. 命令行執(zhí)行
cd /var/www
tar zcf /data/html_$(date +%F).tar.gz ./html
  1. 盡量用腳本文件實(shí)現(xiàn)
mkdir /server/scripts -p #存放腳本的文件

運(yùn)維規(guī)范:
腳本位置:/server/scripts
軟件位置:/server/tools
編譯位置:/application/軟件名字-版本女坑,然后要軟鏈接填具。

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 
  1. 編輯定時(shí)任務(wù)
#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
  1. 檢查正式結(jié)果
[root@oldboyedu /server/scripts]# ls -l /data

4 生產(chǎn)環(huán)境下的定時(shí)Cron書寫要領(lǐng)

要領(lǐng)01:為定時(shí)任務(wù)規(guī)則加必要的注釋
要領(lǐng)02:所有的定時(shí)任務(wù)盡量都以腳本的形式執(zhí)行
要領(lǐng)03:在執(zhí)行的Shell腳本前加上/bin/sh
要領(lǐng)04:定時(shí)任務(wù)中命令或腳本的結(jié)尾加>/dev/null 2>&1
要領(lǐng)05:在指定用戶下執(zhí)行相關(guān)定時(shí)任務(wù)
要領(lǐng)06:生產(chǎn)任務(wù)計(jì)劃程序中不要隨意打印輸出信息,有輸出的想法去掉。
要領(lǐng)07:定時(shí)任務(wù)執(zhí)行的腳本要存放到規(guī)范路徑下
要領(lǐng)08:配置定時(shí)任務(wù)要規(guī)范操作過程匆骗,減少出錯(cuò)
要領(lǐng)09:定時(shí)任務(wù)腳本中程序命令及路徑盡量用全路徑
要領(lǐng)10:時(shí)間變量%號要用反斜線轉(zhuǎn)義(只有定時(shí)任務(wù)里是命令時(shí)需要)
要領(lǐng)11:若腳本中調(diào)用了系統(tǒng)環(huán)境變量劳景,要重新定義
要領(lǐng)12:出錯(cuò)或無法執(zhí)行誉简,就檢查/var/log/cron日志

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市盟广,隨后出現(xiàn)的幾起案子描融,更是在濱河造成了極大的恐慌,老刑警劉巖衡蚂,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異骏庸,居然都是意外死亡毛甲,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門具被,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玻募,“玉大人,你說我怎么就攤上這事一姿∑哌郑” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵叮叹,是天一觀的道長艾栋。 經(jīng)常有香客問我,道長蛉顽,這世上最難降的妖魔是什么蝗砾? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮携冤,結(jié)果婚禮上悼粮,老公的妹妹穿的比我還像新娘。我一直安慰自己曾棕,他們只是感情好扣猫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著翘地,像睡著了一般申尤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上衙耕,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天瀑凝,我揣著相機(jī)與錄音,去河邊找鬼臭杰。 笑死粤咪,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的渴杆。 我是一名探鬼主播寥枝,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼宪塔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了囊拜?” 一聲冷哼從身側(cè)響起某筐,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎冠跷,沒想到半個(gè)月后南誊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蜜托,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年抄囚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片橄务。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡幔托,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蜂挪,到底是詐尸還是另有隱情重挑,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布棠涮,位于F島的核電站谬哀,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏严肪。R本人自食惡果不足惜玻粪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望诬垂。 院中可真熱鬧劲室,春花似錦、人聲如沸结窘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽隧枫。三九已至喉磁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間官脓,已是汗流浹背协怒。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留卑笨,地道東北人孕暇。 一個(gè)月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親妖滔。 傳聞我的和親對象是個(gè)殘疾皇子隧哮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

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