ฉันจะตรวจสอบสิ่งที่ logrotate กำลังทำอยู่ได้อย่างไร


51

ฉันจะติดตามสิ่งที่ logrotate กำลังทำใน Ubuntu ได้อย่างไร สามารถติดตามกิจกรรมของ logrotate ได้หรือไม่?


ดีที่คุณสามารถไปและดูไฟล์อธิบายกระบวนการที่เปิด ... อาจพยายามที่จะอธิบายปัญหาที่แน่นอนคุณมี? คุณพยายามดีบักสคริปต์ของคุณเองหรือ ประสิทธิภาพของสคริปต์เริ่มต้น / บุคคลที่สามหรือไม่
Hubert Kario

คำตอบ:


55
cat /var/lib/logrotate/status 

หากต้องการตรวจสอบว่าบันทึกการหมุนเวียนนั้นกำลังหมุนอยู่หรือไม่และเพื่อตรวจสอบวันที่และเวลาล่าสุดของการหมุนให้ตรวจสอบไฟล์ / var / lib / logrotate / status นี่เป็นไฟล์ที่จัดรูปแบบเรียบร้อยที่มีชื่อไฟล์บันทึกและวันที่ซึ่งถูกหมุนครั้งล่าสุด

เอามาจาก:

https://www.digitalocean.com/community/articles/how-to-manage-log-files-with-logrotate-on-ubuntu-12-10


16
คุณจะพบไฟล์นี้/var/lib/logrotate.statusในระบบ Red Hat
Michael Hampton

1
นี่คือคำแนะนำที่สมบูรณ์เกี่ยวกับการแก้ไขปัญหา logrotate ในระบบ Red Hat: access.redhat.com/solutions/32831
Gaia

เมื่อพิจารณาจาก Ubuntu cat /var/lib/logrotate/status จะแสดงเฉพาะกิจกรรมที่เริ่มต้นโดยผู้ใช้รูท cronjobs ผู้ใช้คนอื่นอาจก่อให้เกิดกิจกรรม logrotate ของตัวเองเช่นเมื่อ crontab 0 0 * * * /usr/sbin/logrotate $HOME/logrotate/logrotate.conf --state $HOME/logrotate/logrotate-stateของพวกเขารวมถึงรายการเช่น กิจกรรม logrotate นั้นจะถูกเขียนลงไฟล์$HOME/logrotate/logrotate-stateโดย$HOMEเป็นไดเรกทอรีหลักของผู้ใช้นั้น
Abdull

ในระบบมากยิ่งขึ้น RedHat ล่าสุด (อย่างน้อยใน RHEL 7.6) /var/lib/logrotate/logrotate.statusไฟล์สถานะเป็นตอนที่
Richlv

13

คุณสามารถลองใช้ logrotate ในโหมด debug หรือ verbose:

-d     Turns  on  debug mode and implies -v.  In debug mode, no changes
          will be made to the logs or to the logrotate state file.

-v, --verbose
          Display messages during rotation.

สิ่งนี้ช่วยได้หรือไม่เมื่อ logrotate เริ่มเป็น cron ฉันหมายถึงมีความเป็นไปได้ที่จะเข้าสู่ระบบพฤติกรรมของ logrotate เพื่อ logfile หรือไม่?

2
/ usr / sbin / logrotate -v
/etc/logrotate.conf

sudo logrotate -v /etc/logrotate.conf &> /var/log/logrotate.log ทุบตี: /var/log/logrotate.log: การอนุญาตถูกปฏิเสธ

1
@dude: หากคุณพยายามที่จะทำจากบรรทัดคำสั่งและคุณได้รับข้อผิดพลาดคุณจะต้องทำเช่นนี้: sudo logrotate -v /etc/logrotate.conf 2>&1 | sudo tee -a /var/log/logrotate.log >/dev/null(ให้แน่ใจว่าคุณมี-a)
Dennis Williamson

@Dennis เมื่อฉันลองที่ i แม้ว่าจะสร้าง logrotate.log แต่มันมี 0KB และกระบวนการไม่ได้หยุดที่สถานีและรอด้วยเคอร์เซอร์กะพริบ

9

ใน Suse Linux distros เป็นเช่นนี้:

cat /var/lib/logrotate.status

AWS AMI Linux มีโครงสร้างสถานะของ logrotate ที่เหมือนกัน
Victor Perov

5

บันทึกต่างๆจะถูกหมุนตามความถี่ต่าง ๆ ตามไฟล์การกำหนดค่า (/etc/logrotate.conf) และ / หรือไดเรกทอรี (/etc/logrotate.d) ชื่ออาจแตกต่างกันไปตามการกระจายที่แตกต่างกัน การกำหนดค่าอาจระบุการกระทำก่อนและ / หรือหลังการหมุน ชื่อของไฟล์ที่หมุนและวันที่หมุนล่าสุดอยู่ในสถานะไฟล์ (/ var / lib / logrotate / state)

Logrotate ไม่มีระบบการบันทึก การดำเนินการโหลดซ้ำ / รีสตาร์ทที่เริ่มต้นจะถูกบันทึกตามการบันทึกสำหรับโปรแกรมที่กำลังทำอยู่

วิธีที่ง่ายที่สุดในการทำเช่นนั้นก็คือการแก้ไข/etc/cron.daily/logrotateเพื่อรวม-vตัวเลือก รายละเอียดเกี่ยวกับการกำหนดค่า logrotate man logrotateและตัวเลือกที่สามารถพบได้กับคำสั่ง


3

Dude คุณสามารถตรวจสอบการตั้งค่าของมักจะอยู่ในlogrotate/etc/logrotate.conf

Distros ที่ทันสมัยมีlogrotateไฟล์กำหนดค่าเฉพาะใน/etc/logrotate.dไดเรกทอรี

เช่นสำหรับ nginx

  /var/log/nginx/*.log {
    weekly
    missingok
    rotate 52

มันจะเก็บไฟล์เป็นเวลา 52 สัปดาห์ (ต่อปี) การหมุนเป็นรายสัปดาห์


หมายเหตุ: user56548เคยเป็น "Dude"

ป้อนคำอธิบายรูปภาพที่นี่


อาจเป็นคุณหมายหรือrotate 365 weeklyการหมุนเวียนรายวันด้วยrotate 52จะเก็บบันทึก 52 วันอย่างชัดเจน
temoto

@temoto ขอบคุณมันเป็นจริงweekly
แหวนØ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.