log rotation บน solaris
เดี๋ยวนี้มีอะไรเกี่ยวกับ solaris มากเหลือเกิน วุ่นวายดี อันนี้จะเป้นเรื่องย้อนหลังหน่อย เกี่ยวกับ log rotation บน solaris นั้นล่ะ คือที่ผ่านมาได้จับงานอยู่งานหนึ่งเขียน application จากนั้นจะต้องทำ log rotation บน solaris ซึงมันเป็นเครื่องของคนอื่น แถมไ่ม่ได้ลง logrotate บนนั้นอีก (ทำไม ที่นั้นไม่ใช้ logrotate หว่า ไม่เข้าใจ) เลยต้องมาเขียนเอง
ขอเอา script มาแปะไว้กันหาย กันลืม และเผื่อคนอื่นๆ
#!/usr/bin/bash
archiveName=blabla
archiveBack=7
archivePath=/some/archive/log/path
logPath1=/where/path/log/for/archive/1
logPath2=/where/path/log/for/archive/2
#archiveDate=`date '+%Y-%m-%d'`
archiveDate=`getbefortoday`
# ---- begin make archive ----
archiveNo=0
n=$archiveBack
echo "starting archiving log file of $archiveDate ..."
cd $archivePath
for ((i = 0; i <= $archiveBack; i++)); do
if [ -w $archiveName.$n.tar.bz2 ] ; then
m=$(($n + 1))
mv -f $archiveName.$n.tar.bz2 $archiveName.$m.tar.bz2
fi
n=$(($n - 1))
done
# tar and compress log files
cd $archivePath
tar -cf $archiveName.0.tar $logPath1/$archiveDate.* $logPath2/$archiveDate.*
bzip2 -9f $archiveName.0.tar
echo "finish archive." ; echo " "
echo "starting delete old log files..."
rm -rf $logPath1/$archiveDate.* $logPath2/$archiveDate.*
echo "finish delete old log files" ; echo " "
# delete old archive log file
echo "starting delete old archive log files."
rm -f $archivePath/$archiveName.$((archiveBack + 1)).tar.bz2
จาก scirpt ดังกล่าวจะมีบรรทัดหนึ่ง คือ archiveDate=`getbefortoday` ตรงนี้จะไปเรียก java app เล็กๆ ที่หาวันย้อนหลังของเครื่องไป 1 วัน โดยมี format yyyy-mm-dd ซึ่งโดยปกติบน linux ผมจะใช้คำสั่ง date แล้วใส่ format เอา แต่บน solaris มันสั่งไม่เหมือนกัน แถมรีบๆ เขียน java app มันซะเลย
ปล. scipt ผมปัญญาอ่อนนิดหน่อยนะ หากใครคิดว่ามีทางไหนทำได้ดีกว่านี้ลองแนะนำหน่อย
- zendz's blog
- 1539 reads
Post new comment