linux上定時(shí)執(zhí)行某些腳本是管理服務(wù)器的時(shí)候比較常用的場(chǎng)景,比如定時(shí)檢查進(jìn)程是否存在,定時(shí)啟動(dòng)或關(guān)閉進(jìn)程,定時(shí)檢查日志刪除日志等。
當(dāng)我打開google百度crontab時(shí)長(zhǎng)篇大論的一大堆,詳細(xì)解釋的一大堆,各種抄來抄去,現(xiàn)在覺得資源多了未必是好事。
假設(shè)是定時(shí)執(zhí)行shell,來移動(dòng)log文件
找到個(gè)網(wǎng)上的腳本:
#!/bin/bashlog_path="" #此處定義你的日志文件夾路徑exPRied_time=7 #此處定義你的日志過期時(shí)間,如7天function mvLogs(){ # 獲取系統(tǒng)時(shí)間,所有時(shí)間格式都是秒 local currentDate=`date +%s` echo "current date: " $currentDate for file in `find $1 -name "*.log"` #此處定義文件名格式,避免誤刪 do local name=$file local modifyDate=$(stat -c %Y $file) #對(duì)比時(shí)間,算出日志存在時(shí)間,距離最近一次修改 local logExistTime=$(($currentDate - $modifyDate)) logExistTime=$(($logExistTime/86400)) if [ $logExistTime -gt $expried_time ]; then echo "File: " $name "Modify Date: " $modifyDate + "Exist Time: " $logExistTime + "Delete: yes" #rm -f $file else echo "File: " $name "Modify Date: " $modifyDate + "Exist Time: " $logExistTime + "Delete: no" fi done}mvLogs /home/admin/web-deploy/logs我的需求:線上有web1 web2 兩臺(tái)機(jī)器,后面是一臺(tái)發(fā)布機(jī)器。
需要檢查web1和web2的機(jī)器上的log文件,如果超出3天,就講這些文件移入mount的文件夾內(nèi),目錄區(qū)分web1,web2。
放在web機(jī)器上的腳本修改:
#!/bin/bash
#傳入?yún)?shù)為掃描文件夾路徑function mvLogs(){ echo "-----------------------------------------------------------" date +"%Y-%m-%d %H:%M" # 獲取系統(tǒng)時(shí)間,所有時(shí)間格式都是秒 local currentDate=`date +%s` echo "current date: " $currentDate for file in `find $1 -name "*.log.*"` #此處定義文件名格式,避免誤刪 do local name=$file local modifyDate=$(stat -c %Y $file) #對(duì)比時(shí)間,算出日志存在時(shí)間,距離最近一次修改 local logExistTime=$(($currentDate - $modifyDate)) logExistTime=$(($logExistTime/86400)) if [ $logExistTime -gt $expried_time ]; then echo "File: " $name "Modify Date: " $modifyDate + "Exist Time: " $logExistTime + "Delete: yes" cp $file /mnt/newlogs/$2/web #rm $file; else echo "File: " $name "Modify Date: " $modifyDate + "Exist Time: " $logExistTime + "Delete: no" fi done}mvLogs /home/admin/web-deploy/logs $machine_name那么我只需要在發(fā)布機(jī)器上調(diào)用web機(jī)器上的這個(gè)腳本,就可以檢查web機(jī)器本地log情況,并處理。需要傳機(jī)器代號(hào),如web1。
發(fā)布機(jī)上的腳本:
#!/bin/bash
expried_time=3;SERVERS="web1 web2";function mvLogs(){ for server in $SERVERS;do echo $server; local machine="svr_"$server; echo $machine; ssh admin@$machine "sh /home/admin/logcheck/mvlog.sh "$server" "$expried_timedone}mvLogs這樣就可以再發(fā)布機(jī)上控制比對(duì)時(shí)間了。
crontab
修改本用戶下的定時(shí)任務(wù):crontab -e查看本用戶下的定時(shí)任務(wù)
crontab -l
配置如下:
45 15 * * * sh /home/productscm/logcheck/mvlog.sh >> /home/productscm/logcheck/log/mvlog.log 2>&1
如此就會(huì)在每天的15點(diǎn)45分是執(zhí)行上面的邏輯。
*/1 * * * * sh /home/productscm/logcheck/mvlog.sh >> /home/productscm/logcheck/log/mvlog.log 2>&1
一分鐘執(zhí)行一次 用來測(cè)試 哈哈~
傳個(gè)圖片玩~

新聞熱點(diǎn)
疑難解答
圖片精選