18.1.3node
定時任務nginx
內容:vim
1. 定時任務分類bash
2. 定時任務的使用服務器
3. 定時任務的相關文件app
4. 定時任務的基本格式less
回顧:備份:一份 cpide
目錄 tarpost
1. cornd(crontab)定時任務軟件(軟件包cronie)測試
2. atd 運行一次
3. anacron 非7*24小時運行的服務器
查軟件包是否安裝
[root@oldboyedu43-lnb ~]# rpm -qa |grep cron 查看軟件包是否安裝
crontabs-1.10-33.el6.noarch
cronie-1.4.4-16.el6_8.2.x86_64
cronie-anacron-1.4.4-16.el6_8.2.x86_64
[root@oldboyedu43-lnb ~]# rpm -ql cronie 查看軟件包裏面的內容
/etc/cron.d
/etc/cron.d/0hourly
/etc/cron.deny
/usr/share/man/man8/cron.8.gz
/usr/share/man/man8/crond.8.gz
/var/spool/cron
#CentOs7系統中 沒有ifconfig 命令
yum install ifconfig
No package ifconfig available. #找不到叫可用的ifconfig安裝包
Error: Nothing to do #沒有任何動做
[root@oldboyedu43-lnb ~]# rpm -qf ifconfig 找出ifconfig 屬於的軟件包的名字
error: file /root/ifconfig: No such file or directory
[root@oldboyedu43-lnb ~]# rpm -qf /sbin/ifconfig 寫命令的絕對路徑
net-tools-1.60-114.el6.x86_64
rpm命令總結
rpm Linux rpm軟件管理命令
-q --query 查詢
-a --all 全部
-l --list
-qa 查看軟件是否安裝
-ql 顯示軟件裏面的內容
-qf 查詢某個命令/配置文件屬於哪一個軟件包
rpm -ivh 軟件包.rpm 安裝rpm包
系統光盤中
-e 刪除某個軟件包 工做中通常不刪,不用了,關閉不用就ok
atd 運行一次(一次性) 基本不用
anacron非7*24小時運行的服務器 基本不用
系統中毒的時候 系統會自動運行裏面的內容
/etc/cron.hourly/ 系統定時任務每小時運行這個目錄裏的內容
/etc/cron.daily/ 系統定時任務天天運行這個目錄裏的內容
/etc/cron.weekly/ 系統定時任務周運行這個目錄裏的內容
/etc/cron.monthly/ 系統定時任務每個月運行這個目錄裏的內容
/etc/cron.deny 定時任務的黑名單
/etc/crontab
[root@oldboy etc]# cat crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# For details see man 4 crontabs
# 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
# | | | | |
# * * * * * user-name command to be executed
系統定時任務 + logrotate,命令完成對日誌的日誌切割/日誌輪詢
/var/log/cron /var/log/messages /var/log/secure
[root@oldboyedu43-lnb ~]# ll /var/log/{messages*,secure*}
-rw------- 1 root root 396 Dec 28 10:56 /var/log/messages
-rw-------. 1 root root 205362 Dec 11 09:41 /var/log/messages-20171211
-rw------- 1 root root 107515 Dec 17 09:23 /var/log/messages-20171217
-rw------- 1 root root 332 Dec 26 19:07 /var/log/messages-20171226
-rw------- 1 root root 6699 Jan 3 08:40 /var/log/secure
-rw-------. 1 root root 1186 Dec 11 09:09 /var/log/secure-20171211
-rw-------. 1 root root 34719 Dec 17 10:25 /var/log/secure-20171217
-rw------- 1 root root 2096 Dec 26 19:12 /var/log/secure-20171226
[root@oldboyedu43-lnb ~]# #日誌切割 日誌輪詢
[root@oldboyedu43-lnb ~]# ll /etc/cron.daily/
total 24
-rwx------. 1 root root 180 Jul 10 2003 logrotate
-rwx------. 1 root root 927 Mar 22 2017 makewhatis.cron
-rwx------. 1 root root 189 Jan 26 2015 mlocate.cron
-rwxr-xr-x. 1 root root 2126 Jul 19 2013 prelink
-rwxr-xr-x. 1 root root 563 Nov 23 2013 readahead.cron
-rwxr-xr-x. 1 root root 433 Nov 7 2015 tmpwatch
[root@oldboyedu43-lnb ~]# cat /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
crontab -l (list) 列表 查看用戶的定時任務 從容 table
crontab -e (edit) 編輯用戶的定時任務
/var/spool/cron/root (root是用戶名 root用戶的定時任務)
一個命令 crontab
查看當前系統用戶的定時任務 crontab -l list列表
[root@oldboy oldboy]# crontab -l
no crontab for root root用戶沒有定時任務
添加一個定時任務 crontab -e edit 編輯
注意:crontab 命令直接做用在配置文件中 不是臨時
一個文件/var/spool/cron/root
鬧鐘是否有電
1&2如今能用,重啓以後也可用
查看定時任務 當前是否在運行 ---看鬧鐘是否有電
[root@oldboy /]# ps -ef |grep crond
root 1589 1 0 Jan02 ? 00:00:04 crond
root 11128 7879 0 19:12 pts/8 00:00:00 grep --color=auto crond
經常使用
[root@oldboy /]# /etc/init.d/crond status
crond (pid 1589) is running...
pid ===process id 進程號碼
特色:每一個正在運行的進程都有
每一個進程的pid都不相同
查看定時任務 重啓服務器以後是否生效 (是否開機自啓動)
[root@oldboy /]# chkconfig |grep cron
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
crontab -e ====== vim /var/spool/cron/root root設置定時任務
crontab -l ======cat /var/spool/cron/root
1.有簡單的語法檢查功能
2.方便
1. head/tail
2. grep
3. less/more
less快捷鍵和vi類似
more 不支持快捷鍵 只能向下 最後直接退出 (廢了的)
定時任務日誌格式
/var/spool/cron/ 定時任務的配置文件所在目錄
/var/log/cron 定時任務的日誌文件 運行過程的一個記錄
/etc/cron.deny 哪些用戶禁止使用定時任務 -定時任務黑名單(瞭解 -不多用)
du -sh 查看某個文件/目錄大小
實例4-1 例:每三分鐘同步一下系統時間
第1個里程碑-命令
[root@oldboy oldboy]# which ntpdate
/usr/sbin/ntpdate
[root@oldboy oldboy]# /usr/sbin/ntpdate ntp1.aliyun.com 命令儘可能絕對路徑
3 Jan 10:34:49 ntpdate[8624]: adjust time server 182.92.12.11 offset -0.087505 sec
#第2個里程碑-寫入定時任務 crontab -e
[root@oldboy oldboy]# crontab -l 查看定時任務
#sync time by oldboy at 20180101 添加註釋,爲了之後方便管理
*/3 * * * * /usr/sbin/ntpdate ntp1.aliyun.com sync 同步
#第3個里程碑-檢查
##1.看日誌 2.修改下時間
[root@oldboy oldboy]# date
Wed Jan 3 10:38:27 CST 2018
[root@oldboy oldboy]# date -s "1day"
Thu Jan 4 10:38:41 CST 2018
[root@oldboy oldboy]# tail -f /var/log/cron 查看日誌文件的實時更新
Jan 4 10:39:01 oldboyedu43-lnb CROND[8657]: (root) CMD (/usr/sbin/ntpdate ntp1.aliyun.com)
Jan 3 10:39:01 oldboyedu43-lnb CROND[8662]: (root) CMD (/usr/sbin/ntpdate ntp1
注意:(技巧)
星期幾和日期不要同時加上 ---執行機會渺茫
1.涉及到命令,如今命令行確認正確,在複製粘貼到配置文件或腳本中
2.定時任務報錯不明顯,必定要檢查
3.You have new mail in /var/spool/mail/root 會致使一種故障 inode滿了
定時任務寫配置文件用絕對路徑
永遠不要在分鐘上設置*(新號)
* 每
/n */10 * * * * 每10分鐘
- * 07-08 * * * 7點到8點
,(逗號) 分隔 * 23,00-07 * * * 23點和0點到7點 不能寫23-07
實例4-1 天天上午7點到11點 每個小時運行CMD命令
00 07-11 * * * CMD
坑:永遠不要在分鐘上設置*(新號)
表示小時的時候注意分鐘
實例4-2 跨兩天計劃任務的書寫
* 23,00-07/1 * * * /application/nginx/sbin/nginx -s reload
23點 和 0點到7點 ,每小時的每分鐘執行一次
00 23,00-07/1 * * * /application/nginx/sbin/nginx -s reload
23點和0點-7點,每小時執行一次
實例4-1 把當前系統時間按年-月-日的形式追加到/tmp/time.log ,每分鐘自動執行一次
流程:
1. 命令行測試 --把命令放入到腳本中
2. 把命令行放入到腳本中 ---name.sh
3. 測試下腳本是否能夠用 ---腳本的絕對路徑 / bin/sh
4. 寫定時任務
5. 檢查結果 --1)查看定時任務的日誌 2)命令執行是否成功
步驟:
1在命令行測試命令
[root@oldboyedu43-lnb oldboy]# date +%F_%w
2018-01-03_3
[root@oldboyedu43-lnb oldboy]# date +%F_%w >>/tmp/time.log
#2.寫入腳本
# mkdir -p /server/scripts 把命令寫進腳本並查看
[root@oldboyedu43-lnb oldboy]# cat /server/scripts/date.sh
date +%F_%w
[root@oldboyedu43-lnb oldboy]# sh /server/scripts/date.sh sh命令執行腳本
2018-01-03_3
#3.寫入定時任務
[root@oldboyedu43-lnb oldboy]# crontab -l |tail -2
#print time xxxx
* * * * * /bin/sh /server/scripts/date.sh >>/tmp/time.log 命令,腳本都寫絕對路徑
#4.檢查結果 --1.實施查看定時任務日誌更新 2.效果
[root@oldboyedu43-lnb oldboy]# tail -f /var/log/cron
Jan 3 12:15:01 oldboyedu43-lnb CROND[9151]: (root) CMD (/bin/sh /server/scripts/date.sh >>/tmp/time.log)
Jan 3 12:16:01 oldboyedu43-lnb CROND[9236]: (root) CMD (/bin/sh /server/scripts/date.sh >>/tmp/time.log)
[root@oldboyedu43-lnb ~]# tail -f /tmp/time.log
2018-01-03_3
2018-01-03_3
1.經過 sh命令運行腳本 腳本沒必要有x權限
2.追加,重定向等儘可能不要寫到腳本中,在定時任務中寫 由於之後腳本中命令一大堆,一條條追加麻煩
3.命令的絕對路徑(儘可能) +腳本的絕對路徑(必須)
C vim中刪除光標到行尾內容
錯誤:
在定時任務中%有特殊含義,至關於回車
能夠加轉義符解決
總結:
1. 定時任務分類
2. 用戶定時任務與系統定時任務
3. 定時任務書寫流程
4. 定時任務同步系統時間,追加名字或時間到文件
5. 定時任務九句箴言