ทำ archive log


log apache ใหญ่ ก้อเขียน script ทำ archive ซะ

#!/bin/bash

MONTH="$((`date +%m`-1))"
YEAR=$(date +"%Y")

cd /var/www/

for f in $(ls /var/www | grep web); do
cd /var/www/$f/log
if [ -a $YEAR ];
then
cd $YEAR
if [ -a 0$MONTH ];
then
tar -zcvf 0$MONTH.tar.gz 0$MONTH
rm -rf /var/www/$f/log/$YEAR/0$MONTH
fi
fi
done

ตั้ง crontab

05 03 1 * * sh /root/logclean.sh

 

คำสำคัญ (Tags): #apache#archive#log
หมายเลขบันทึก: 231408เขียนเมื่อ 23 ธันวาคม 2008 14:35 น. ()แก้ไขเมื่อ 5 เมษายน 2012 15:02 น. ()สัญญาอนุญาต: จำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (2)

ถ้าจะให้ผมเดา สาเหตุที่ต้องใช้ 0$MONTH แทนที่จะเป็น $MONTH ก็เพราะว่าผลของ การหา 'เดือนที่ผ่านมา' จาก MONTH="$((`date +%m`-1))" มันให้ค่าออกมาเป็นเลขตัวเดียวใช่ใหมครับ? เลยต้องใส่ 0 ไว้ข้างหน้าให้เป็นเลข 2 หลัก

แต่สำหรับกรณีนี้ มันจะมีปัญหากับ ตค. พย. ธค. เพราะค่าที่ได้ ของ MONTH จะกลายเป็น 010, 011 และ 00 แทนที่จะเป็น 10, 11, 12 ตามลำดับ

ซึ่ง จาก crontab ถ้าเรารู้แน่ชัดอยู่แล้วว่า script นี้จะถูกเรียกใช้ เช้าวันที่ 1 ของเดือนถัดไป ผมว่าใช้

MONTH=$(date -d yesterday +%m)

น่าจะดูดีกว่า และเข้าใจได้ง่ายกว่าครับ

พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท