test.sh
#!/bin/bash
echo "Hello World"
test2.sh
#!/bin/bash
while true
do
sh test.sh >> /script_logs/test.log &
done
ฉันต้องการใช้ logrotate เพื่อควบคุมขนาดของไฟล์บันทึกดังนั้นวิธีการใช้ logrotate หากสถานการณ์เป็นเช่นนี้
test.sh
#!/bin/bash
echo "Hello World"
test2.sh
#!/bin/bash
while true
do
sh test.sh >> /script_logs/test.log &
done
ฉันต้องการใช้ logrotate เพื่อควบคุมขนาดของไฟล์บันทึกดังนั้นวิธีการใช้ logrotate หากสถานการณ์เป็นเช่นนี้
คำตอบ:
#!/bin/bash
touch /script_logs/test.log
MaxFileSize=2048
while true
do
sh test.sh >> /script_logs/test.log
#Get size in bytes**
file_size=`du -b /script_logs/test.log | tr -s '\t' ' ' | cut -d' ' -f1`
if [ $file_size -gt $MaxFileSize ];then
timestamp=`date +%s`
mv /script_logs/test.log /script_logs/test.log.$timestamp
touch /script_logs/test.log
fi
done
ฉันได้ลบ "&" เนื่องจากอาจทำให้เกิดปัญหา
cp
และmv
ฉันสามารถลบไฟล์บันทึกจากนั้นจะเป็นไฟล์บันทึกใหม่ที่มีชื่อเดียวกันได้หรือไม่ (ความต้องการของฉันคือถ้าไฟล์บันทึกถึงขีด จำกัด ฉันต้องการลบไฟล์บันทึกนั้นแล้วสร้างไฟล์ใหม่ )
>>
เพื่อผนวกเข้าสู่ไฟล์>
จะเขียนทับมันซ้ำแล้วซ้ำอีก
>
ฉันได้รับtail: test.log: file truncated Hello World!
.... ถ้าฉันใช้>>
ฉันจะได้รับข้อความบันทึกที่ถูกต้อง แต่ขนาดไฟล์เพิ่มขึ้น ไม่มีเงื่อนไขในการตรวจสอบเงื่อนไข ... ;-(
วิธีการเกี่ยวกับการใช้งานsavelog
?
มันมีอยู่ใน debian และ RH และลินุกซ์ distro อื่น ๆ ที่ฉันรู้จัก มันคือเชลล์สคริปต์ / bin / sh ดังนั้นควรรันยูนิกซ์อื่นด้วย
เช่นก่อนที่จะเขียนอะไรที่จะวิ่งtest.log
savelog -n -c 7 test.log
สิ่งนี้จะเก็บ test.log เวอร์ชันล่าสุดที่ไม่ว่างเปล่าไว้ 7 รายการ โดยค่าเริ่มต้นมันจะบีบอัดบันทึกที่หมุนเวียน (แต่สามารถปิดได้ด้วย-l
)
หากคุณต้องการคุณสามารถตรวจสอบขนาดtest.log
และเฉพาะsavelog
เมื่อมันเกินขนาดที่กำหนด
/usr/bin/savelog
เชลล์สคริปต์ที่sources.debian.net/src/debianutils/4.7
savelog
กล่อง RHEL / CentOS 5/6 ใด ๆ ของฉันดังนั้นฉันเพิ่งดาวน์โหลดมันเฉพาะกิจและดูเหมือนว่าจะทำงานได้ดีตามความต้องการของฉัน
savelog
มันคือการเปลี่ยนชื่อไฟล์ แต่ใช้เวลานานในการ gzip ไฟล์เก่าก่อนที่จะจบ ในขณะเดียวกันบันทึก. 0 จะได้รับรายการในวันถัดไป โดยทั่วไปแล้วเวลาระหว่างการหมุนบันทึกและการส่งสัญญาณกระบวนการเพื่อเปิดบันทึกควรน้อยที่สุด ฉันปิดการใช้งานsavelog
คุณสมบัติการบีบอัดเพราะสิ่งนี้
ขณะที่ผมยังไม่สามารถเพิ่มความคิดเห็นกับคำตอบที่ได้รับการยอมรับเป็นBusyBoxคำใบ้ที่du
ไม่ได้มี-b
ธง:
du /var/log/file | tr -s '\t' ' ' | cut -d' ' -f1