crontab執行任務的時候希望輸出日志,但是日志之需要保留一段時間會自動清理掉,不然會把磁盤裝滿的。因此,就希望系統自動去删除。幸好,tmpwatch這個服務會自動清理/tmp目錄(主要文件不要放/tmp目錄),隻要安裝好tmpwatch這個包就可以了,這個依賴crontab執行的。那現在就需要把crontab日志輸出到帶日期的文件名中就可以了。
使用crontab -e進行任務編輯,不推薦直接編輯/var/spool/cron/下的文件,有些錯誤不提示
crontab -e
* * * * * /home/linuxyunweicai/job.sh >> /tmp/job.log.$(date %Y%m%d) 2>&1
新建的job等2分鐘才會開始執行,如果需要馬上執行,直接重啟一下crond服務就可以了。
發現沒有日志生成,看下cron的日志/var/log/cron
Jun 2 13:44:01 linuxop CROND[23261]: (root) CMD (home/linuxyunweicai/job.sh >> /tmp/job.log.$(date )
後面的東西就沒了,因此應該是%的原因:在crontab中%是有特殊含義的,表示換行的意思。如果要用的話必須進行轉義\%,如經常用的date %Y%m%d在crontab裡是不會執行的,應該換成date \%Y\%m\%d。
修改任務
* * * * * /home/linuxyunweicai/job.sh >> /tmp/job.log.$(date \%Y\%m\%d) 2>&1
這樣子就可以了,在/tmp目錄下會生成job.log.20180602的日志文件,tmpwatch默認是清理10天前的文件,這樣子就不怕日志文件沒有清除導緻磁盤爆滿。
tmpwatch的配置文件是放到 /etc/cron.daily/tmpwatch,這個目錄的腳本,cron每天會執行一次,這裡就是一個shell腳本,如果需要修改日志保留時間可以修改這個腳本。
#! /bin/sh
flags=-umc
/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \
-x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \
-X '/tmp/hsperfdata_*' -X '/tmp/.hdb*lock' -X '/tmp/.sapstartsrv*.log' \
-X '/tmp/pymp-*' 10d /tmp
/usr/sbin/tmpwatch "$flags" 30d /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
if [ -d "$d" ]; then
/usr/sbin/tmpwatch "$flags" -f 30d "$d"
fi
done
Linux是不是很簡單而強大呢!
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!