log apache ใหญ่ ก้อเขียน script ทำ archive ซะ #!/bin/bashMONTH="$((`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 fidone ตั้ง crontab 05 03 1 * * sh /root/logclean.sh
ถ้าจะให้ผมเดา สาเหตุที่ต้องใช้ 0$MONTH แทนที่จะเป็น $MONTH ก็เพราะว่าผลของ การหา 'เดือนที่ผ่านมา' จาก MONTH="$((`date +%m`-1))" มันให้ค่าออกมาเป็นเลขตัวเดียวใช่ใหมครับ? เลยต้องใส่ 0 ไว้ข้างหน้าให้เป็นเลข 2 หลัก
แต่สำหรับกรณีนี้ มันจะมีปัญหากับ ตค. พย. ธค. เพราะค่าที่ได้ ของ MONTH จะกลายเป็น 010, 011 และ 00 แทนที่จะเป็น 10, 11, 12 ตามลำดับ
ซึ่ง จาก crontab ถ้าเรารู้แน่ชัดอยู่แล้วว่า script นี้จะถูกเรียกใช้ เช้าวันที่ 1 ของเดือนถัดไป ผมว่าใช้
MONTH=$(date -d yesterday +%m)
น่าจะดูดีกว่า และเข้าใจได้ง่ายกว่าครับ
:)