การหมุนเวียนบันทึกและการล้างข้อมูลอัตโนมัติ
ดูแลดิสก์ให้มีพื้นที่พร้อมใช้งานด้วยการหมุนเวียนบันทึกและล้างไฟล์เก่าโดยอัตโนมัติด้วย logrotate และสคริปต์ที่ใช้ find ตามกำหนดเวลา
การหมุนเวียนบันทึกและการล้างข้อมูลอัตโนมัติ เป็นบทเรียน Linux Command Line & Bash Scripting Mastery ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Linux Command Line & Bash Scripting Mastery และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Linux Command Line & Bash Scripting Mastery มีบทเรียนทั้งหมด 4 บทเรียน
ปัญหาของบันทึกที่เพิ่มขึ้นเรื่อย ๆ
บริการที่ทำงานเป็นเวลานานจะเขียนบันทึกไปเรื่อย ๆ หากไม่มีการจัดการ บันทึกจะใช้พื้นที่ดิสก์จนเต็มและทำให้ระบบล้มเหลว การหมุนเวียนและเก็บกวาดจะช่วยควบคุมปัญหานี้
du -sh /var/log/*การหมุนเวียนบันทึกทำอะไร
การหมุนเวียนจะเปลี่ยนชื่อบันทึกปัจจุบัน สร้างบันทึกใหม่ที่ว่างเปล่า และเก็บสำเนาเก่าที่บีบอัดไว้จำนวนจำกัด
- app.log จะกลายเป็น app.log.1
- สำเนาเก่าจะถูกบีบอัดด้วย gzip
- สำเนาที่เก่าที่สุดจะถูกลบ
แนะนำ logrotate
logrotate เป็นเครื่องมือมาตรฐานของ Linux ที่ทำให้การหมุนเวียนเป็นอัตโนมัติตามขนาดหรืออายุ โดยกำหนดค่าไว้ภายใต้ /etc/logrotate.d/
cat /etc/logrotate.confการกำหนดค่า logrotate เบื้องต้น
บล็อกการกำหนดค่าจะระบุชื่อไฟล์บันทึกและนโยบายการหมุนเวียน
/var/log/myapp/*.log {
daily
rotate 7
compress
missingok
notifempty
}ทำความเข้าใจคำสั่งกำกับ
คำสั่งกำกับที่ใช้บ่อย:
dailyหมุนเวียนทุกวันrotate 7เก็บไฟล์เก่าไว้ 7 ไฟล์compressบีบอัดบันทึกที่หมุนเวียนแล้วด้วย gzipmissingokข้ามหากไม่มีไฟล์
ทดสอบโดยไม่ต้องรอ
บังคับให้ทำงานด้วย -f หรือทดลองทำงานด้วย -d เพื่อตรวจสอบการกำหนดค่าก่อนวางใจให้ตารางเวลาทำงาน
logrotate -d /etc/logrotate.d/myapp
logrotate -f /etc/logrotate.d/myappสคริปต์ postrotate
บริการจำนวนมากยังคงเปิดตัวจัดการไฟล์เก่าไว้ บล็อก postrotate จะส่งสัญญาณให้บริการเปิดบันทึกอีกครั้งหลังการหมุนเวียน
/var/log/myapp/*.log {
daily
postrotate
systemctl reload myapp
endscript
}ลบไฟล์เก่าด้วย find
สำหรับการเก็บกวาดเฉพาะกิจ ใช้ find ร่วมกับ -mtime เพื่อค้นหาไฟล์ที่เก่ากว่า N วันและลบไฟล์เหล่านั้น
find /var/log/myapp -name "*.log" -mtime +30 -deleteสคริปต์เก็บกวาดที่ปลอดภัย
รวมการเก็บกวาดไว้ในสคริปต์ที่บันทึกสิ่งที่ลบ เพื่อให้มีหลักฐานการตรวจสอบย้อนหลัง
#!/bin/bash
DIR=/var/backups
find "$DIR" -name "*.tar.gz" -mtime +14 -print -delete \
>> /var/log/cleanup.log 2>&1กำหนดเวลาการเก็บกวาด
จัดการการหมุนเวียนผ่าน logrotate ซึ่งขับเคลื่อนด้วย cron อยู่แล้ว และกำหนดเวลาสคริปต์เก็บกวาดที่กำหนดเองด้วยรายการ crontab ของคุณ
# crontab -e
30 2 * * * /usr/local/bin/cleanup.shตรวจสอบการใช้ดิสก์
เพิ่มกลไกป้องกันที่แจ้งเตือนเมื่อพาร์ทิชันใช้พื้นที่เกินเกณฑ์ เพื่อไม่ให้การเก็บกวาดล่าช้าเกินไป
USAGE=$(df --output=pcent / | tr -dc "0-9")
[ "$USAGE" -gt 90 ] && echo "Disk over 90%" | mail -s alert rootตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความรู้เกี่ยวกับการทำงานอัตโนมัติ
สรุปทบทวน
คุณทำให้การดูแลบันทึกเป็นอัตโนมัติแล้ว:
- logrotate หมุนเวียนตามอายุหรือขนาดด้วย
rotate,compress,postrotate - ตรวจสอบความถูกต้องด้วย
-d/-f - ใช้
find -mtime +N -deleteสำหรับการเก็บกวาดแบบกำหนดเอง - กำหนดเวลาด้วย cron และใช้การแจ้งเตือนการใช้ดิสก์เป็นกลไกป้องกัน
คำถามที่พบบ่อย
บทเรียน “การหมุนเวียนบันทึกและการล้างข้อมูลอัตโนมัติ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การหมุนเวียนบันทึกและการล้างข้อมูลอัตโนมัติ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Linux Command Line & Bash Scripting Mastery ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Linux Command Line & Bash Scripting Mastery มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การหมุนเวียนบันทึกและการล้างข้อมูลอัตโนมัติ”
ดูแลดิสก์ให้มีพื้นที่พร้อมใช้งานด้วยการหมุนเวียนบันทึกและล้างไฟล์เก่าโดยอัตโนมัติด้วย logrotate และสคริปต์ที่ใช้ find ตามกำหนดเวลา คุณปฏิบัติ Linux Command Line & Bash Scripting Mastery ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Linux Command Line & Bash Scripting Mastery หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Linux Command Line & Bash Scripting Mastery บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การหมุนเวียนบันทึกและการล้างข้อมูลอัตโนมัติ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Linux Command Line & Bash Scripting Mastery นี้ได้ไหม
ได้ บทเรียน Linux Command Line & Bash Scripting Mastery ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การตั้งเวลางานด้วย Cron
- การทำงานดูแลระบบให้เป็นอัตโนมัติ
- โครงงานการเขียนสคริปต์ขั้นสูง
- การหมุนเวียนบันทึกและการล้างข้อมูลอัตโนมัติ