log apache ใหญ่ ก้อเขียน script ทำ archive ซะ
#!/bin/bash |
ตั้ง 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)
น่าจะดูดีกว่า และเข้าใจได้ง่ายกว่าครับ