1. 程式人生 > >定時任務crond

定時任務crond

1-1 bsp style pad times ack 技術分享 aliyun 學習筆記


作者

歸檔:學習筆記

2016/6/27




rpm補充:

1. rpm -qf /sbin/ifconfig :查看ifconfig屬於哪個軟件包

rpm -ql :查看rpm軟件包中有什麽

rpm -e :刪除某一個軟件包

yum install 安裝ifconfig屬於的軟件包

2. yum remove 卸載yum安裝的包(非常危險)

本章正題:定時任務crond


1.1 定時任務

1.1.1 定時任務分類:

1. crond crontab】定時任務軟件(對應軟件包cronie)

2. atd 運行一次

3. anacron 7*24小時運行的服務器(很少用)

1.1.2 crond的分類

crond分類:

1. 系統定時任務

2.用戶定時任務


1. 系統的定時任務:6個文件:/etc/corn.hourly :每個小時運行這裏面的內容

/etc/cron.daily :每天運行這裏面的內容

/etc/cron.weekly :每周運行這裏面的內容

/etc/cron.month :每月運行這裏面的內容

/etc/cron.deny :定時任務的黑名單(不常用)

/etc/crontab :系統定時任務的配置文件之一

日誌的切割,日誌輪詢的作用:使一個日誌文件不會過大,定時定點切割成多個文件。

如下圖帶日期顯示的多個文件:

技術分享圖片

那麽誰完成日誌的切割:[root@oldboyedu43-lnb ~]# ll 系統定時任務

+logrodate完成對日誌的切割

2. 用戶定時任務:

1)查看定時任務:crontab -l

2)編輯定時任務:crontab -e

使用crontab -e相當於vim編輯/var/spool/cron/root root 是用戶名)

1.1.3 定時任務的查看

1. 查看定時任務 當前是否在運行

方法一:ps -ef |grep crond

方法二:/etc/init.d/crond status (pid:進程號)

2. 查看定時任務 ,重啟服務器之後是否會運行(是否開機自啟動)

[root@georgekai ~]# chkconfig |grep crond

1.1.4
定時任務crontab怎麽使用

1. crontab -e 編輯定時任務

2. crontab -l 查看編輯好的定時任務

註:crontab的好處:1.有語法檢查功能,格式對不對

2.方便

1.1.5 定時任務相關的文件

1. var/spool/cron/:定時任務配置文件的所在目錄

註:查看日誌的命令:less moremore不能往上翻,到最後一行會自動退出)

b向上翻頁,空格或f 向下翻頁.

2. /var/log/cron 定時任務記錄文件解釋 : 時間--哪個用戶的哪個程序運行的---運行的什麽命令

3. /etc/cron.deny:定時任務黑名單

1.1.6 定時任務格式

註:最好在定時任務上面加一條註釋,用來表示這條任務是幹什麽的

1. 什麽時間 (分時日月周)

0-59 0-23 日期1-31 1-12 周幾0-6 07表示周日)

技術分享圖片

2. 做什麽事情(命令或腳本)

註:命令寫絕對路徑

*/10 * * * * /usr/sbin/ntpdate ntp1.aliyun.com

註意:日期和星期不要同時加上數字

3. 基本格式(分時日月周)

1)口訣:分時日月周

2)定時任務常用符號

* :每分鐘

*/10 :每隔10分鐘

- :從哪來到哪去,連續範圍,7-11

:分割,或者的意思

1: 同步系統時間為例設置定時任務(*/10 :每隔10分鐘

1)先測試絕對路徑命令可否正常使用

[root@georgekai ~]# /usr/sbin/ntpdate ntp1.aliyun.com

2)在寫入定時任務,crontab -l 查看

[root@georgekai ~]# crontab -l

*/10 * * * * /usr/sbin/ntpdate ntp1.aliyun.com

3)檢查 1.看日誌 tail -f /var/log/cron 2.看文件內容有沒有改變

[root@georgekai ~]# tail -f /var/log/cron

2:每天晚上23點到上午7點 每一個小時運行CMD命令 (- :從哪來到哪去,連續範圍,23,00-07

00 23,00-07 * * * CMD

註:表達小時的時候,分鐘上盡量別寫*(給個固定時間)

00 23,00-07/1 * * * (不能寫23-07,轉不過來)

3:每分鐘把自己的名字 追加kai.txt( :分割,或者的意思

1. [root@georgekai ~]# /bin/echo "wangkai" >> /oldboy/oldboy.txt

2. [root@georgekai ~]# crontab -l

* * * * * /bin/echo "wangkai" >> /oldboy/oldboy.txt

3. tail -f /vat/log/cron

Jan 3 11:31:01 georgekai CROND[17327]: (root) CMD (/bin/echo "wangkai" >> /oldboy/oldboy.txt)

註:時間--哪個用戶的哪個程序運行的---運行的什麽命令

1.1.7 定時任務書寫流程:

1. 在命令行測試命令是否能用

[root@georgekai /]# date +%F_%w

2. 把命令寫到腳本中

[root@georgekai /]# echo "date +%F_%w" >> /server/scripts/date.sh

註:>> 追加別寫到腳本中(復否則太多),寫到定時任務中

3. 測試腳本是否可以用

[root@georgekai /]# sh /server/scripts/date.sh

註:用sh 執行腳本(sh =bash),如:sh time.sh

4. 寫定時任務(1.先改成每分鐘測試一下 2.在改成要求的時間)

[root@georgekai /]# crontab -e

#time sh

* * * * * /bin/sh /server/scripts/date.sh >> /tmp/time.log

註:1. 定時任務中命令要用絕對路徑

2.定時任務中%號表示回車鍵的意思,需要撬棍轉義

5. 檢查結果(1.看日誌 2.看命令是否執行成功)

1. 看日誌

[root@georgekai /]# tail -f /var/log/cron

Jan 3 12:35:01 georgekai CROND[18125]: (root) CMD (/bin/sh /server/scripts/da.sh >> /tmp/time.log)

2. 看是否執行成功

[root@georgekai /]# cat /tmp/time.log

2018-01-03_3

註:往後改3秒時間 date -s "3sec"

總結:

1. 定時任務分類:用戶和系統(日誌輪詢,監視)

2. 定時任務書寫流程

3. 定時同步系統時間,追加名字或時間到文件

4. 定時任務9句箴言


定時任務crond