第1章 定時任務
1.1 .定時任務的作用
定時任務相當於鬧鍾
在什么時間做什么事情(執行什么命令/腳本)
1.2 .定時任務分類
①atd 運行一次 僅一次。
②anacron 非7*24小時運行的服務器
③crond(crontab) 常用的定時任務軟件 軟件包cronie
如何檢查軟件是否安裝
.rpm Linux rpm軟件管理命令 -q --query 查詢 -a --all 所有 -l --list -qa 查看軟件是否安裝 -ql 顯示軟件里面的內容 -qf 查詢某個命令/配置文件屬於哪個軟件包
[root@lishichao ~]# which ip /sbin/ip [root@lishichao ~]# rpm -qf /sbin/ip iproute-2.6.32-54.el6.x86_64 [root@lishichao ~]# rpm -ql iproute rpm -ivh 軟件包.rpm 安裝rpm包
系統光盤中
1.3 CRON分類
1.3.1 系統定時任務
/etc/cron.hourly 系統定時任務每個小時運行目錄里面的內容
/etc/cron.daily 系統定時任務每天運行目錄里面的內容
/etc/cron.weekly 系統定時任務每周小時運行目錄里面的內容
/etc/cron.monthly 系統定時任務每月運行目錄里面的內容
系統會自動運行里面的內容, 系統中毒的時候查看這些系統文件
/etc/cron.deny
/etc/crontab 系統定時任務的配置文件之一
1.3.2 系統定時任務+logrotale命令 完成對日志切割/日志輪詢
/var/log/cron 定時任務文件
/var/log/messages 系統默認日志文件
/var/log/secure 用戶登錄信息
1.3.3用戶定時任務
crontab –l (list)列表 查看用戶的定時任務
crontab –e (edit)編輯 編輯用戶的定時任務
/var/spool/cron/root (root是用戶名 root用戶的定時任務) 一個命令+一個目錄
1.4 定時任務的使用
1. 定時任務依賴的軟件(服務)-是否能用
現在能用(crond進程正在運行),重啟后也能用(crond開機自啟動) pid 進程號碼
ps –ef |grep crond
2. crontab 命令怎么使用
crontab -e 編輯當前用戶的定時任務 相當於 vi /var/spool/cron/root crontab -l 顯示當前用戶的定時任務 相當於 cat /var/spool/cron/root 當前是 root用戶用 crontab命令 1.有語法檢查功能 格式不對有提示 2.方便
3. 定時任務相關文件
var/log/cron 定時任務的日志文件 運行過程的一個記錄 var/spool/cron/ 每個用戶的定時文件 /etc/cron.deny 那些用戶禁止使用定時任務-定時任務黑名單
4. 定時任務格式
* * * * * 口訣 什么時間做什么,然后想在下一次什么時間在執行
分時日月周 注意!! 不要把星期幾和日期同時加上
5. 定時任務常用符號
*每 * * * * * /n */10 * * * * 每隔10分鍾 - 07-09 , 分割 % 在定時任務中 % 有特殊含義 相當於回車 需要\轉義
##每天的上午8點30分
30 08 * * *
##每天晚上12
00 00 * * * go to bed
##每天的上午7點到上午11點 每一個小時運行CMD命令
00 07-11 * * * CMD
##每天 17點 19 點 20點
00 17,19,20 * * *
6. 定時任務書寫流程
01. 命令行測試 把你的名字顯示到文件中
02. 把命令放入到腳本中、測試是否可以使用 現在的統一腳本位置 /server/scripts
03. 寫定時任務 (1.先設置每分鍾執行 查看定時任務是否執行成功 2.成功后改為要求的時間)
##注意加上注釋 說明這個定時的內容
04. 檢查結果
tailf /var/log/cron 查看日志實時更新 cat /root/oldboy.txt 查看文件內容是否增加 命令是否執行成功
1.5 定向為空
/dev/nuli
把/dev/null看作"黑洞". 它非常等價於一個只寫文件. 所有寫入它的內容都會永遠丟失. /dev/null對命令行和腳本都非常的有用
定時任務中-命令或腳本結果(正確或錯誤)定向到黑洞或追加到文件
> /dev/null 2>&1 錯誤的正確的都存放進去
追加到文件中 >> /tmp/time.log 2>&1
故障案例
如果沒有定向到空 或追加到文件
1. postfix開啟的時候,系統會不斷的給你發郵件 /var/spool/mail/
You have new mail in /var/spool/mail/root 系統郵件目錄 創建一個用戶默認就創建一個郵件文件
etc/init.d/postfix stop(關閉) start(開啟) status查看
工作中發郵件的軟件 一般是關閉的 postfix(centos 6) sendmail(centos 5)
2. postfix關閉 郵件會存放在郵件的臨時目錄(/var/spool/postfix/maildrop)
如果定時任務規則結尾不加 >/dev/null 2>&1
或者追加到文件中 >>/tmp/oldboy 2>&1
一個郵件創建一個文件會造成大量的小文件,很容易導致硬盤inode空間被占滿,從而系統服務不正常
3. 如何刪除大量小文件
echo {1..450000}.txt ls *.txt |xargs rm Argument list too long 參數列表太長 系統忙不過來
01. 縮小范圍一點點刪除 ls 1*.txt|xargs rm 或 ls *.txt|xargs –n數字 rm
02. 刪除目錄 記錄好目錄權限和所有者
1.6 環境變量故障案列
http://blog.51cto.com/oldboy/1541515 inux定時任務生產java服務無法執行問題群友案例
1. 定時任務在運行腳本的時候,只認識很少的幾個路徑 /usr/bin /bin
定時任務腳本中的程序文件 要用絕對路徑
2. 在寫腳本時候 在開頭重新定義了環境變量 PATH 把定時任務不認識命令的絕對路徑寫進去
查詢腳本執行過程 -x
1.7 查看定時任務日志內容
1. head/tail 2. grep 3. less 查看文件 一頁一頁 顯示/查看 下一頁 空格 上一頁 b 退出 q 4. less/more 只能往下查看 不支持快捷鍵 到最后一行自動退出