定時任務crond
作者:
歸檔:學習筆記
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分類:
2.用戶定時任務
1. 系統的定時任務:6個文件:/etc/corn.hourly :每個小時運行這裏面的內容
/etc/cron.daily :每天運行這裏面的內容
/etc/cron.weekly :每周運行這裏面的內容
/etc/cron.month :每月運行這裏面的內容
/etc/cron.deny :定時任務的黑名單(不常用)
/etc/crontab :系統定時任務的配置文件之一
日誌的切割,日誌輪詢的作用:使一個日誌文件不會過大,定時定點切割成多個文件。
如下圖帶日期顯示的多個文件:
那麽誰完成日誌的切割:[root@oldboyedu43-lnb ~]# ll 系統定時任務
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 more(more不能往上翻,到最後一行會自動退出)
b向上翻頁,空格或f 向下翻頁.
2. /var/log/cron 定時任務記錄文件解釋 : 時間--哪個用戶的哪個程序運行的---運行的什麽命令
3. /etc/cron.deny:定時任務黑名單
1.1.6 定時任務格式
註:最好在定時任務上面加一條註釋,用來表示這條任務是幹什麽的
1. 什麽時間 (分時日月周)
分0-59 時0-23 日期1-31 月1-12 周幾0-6 (0或7表示周日)
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