ฉันจะแสดงข้อความบันทึกจากบูทก่อนหน้าภายใต้ CentOS 7 ได้อย่างไร


78

การดำเนินการjournalctlภายใต้ระบบ CentOS 7 เพียงพิมพ์ข้อความที่สร้างขึ้นหลังจากการบูตครั้งสุดท้าย

คำสั่ง

# journalctl --boot=-1

พิมพ์

Failed to look up boot -1: Cannot assign requested address

และออกด้วยสถานะ 1

เปรียบเทียบกับระบบ Fedora ปัจจุบันฉันสังเกตว่า CentOS 7 ไม่มี/var/log/journal(และjournalctlไม่มีให้--list-boots)

ดังนั้นคำถามของฉันวิธีการแสดงข้อความบันทึกที่เขียนก่อนวันบูตครั้งสุดท้าย

หรืออาจจะต้องเปิดใช้งานฟังก์ชั่นนี้ใน CentOS 7

( journalctlหน้ารายชื่อรายการ 'systemd 208' เป็นหมายเลขเวอร์ชั่น)

คำตอบ:


99

TL; DR

บน CentOS 7 คุณต้องเปิดใช้งานการจัดเก็บข้อมูลถาวรของข้อความบันทึก:

# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald

มิฉะนั้นข้อความบันทึกประจำวันจะไม่ถูกเก็บไว้ระหว่างการบูท

รายละเอียด

กำหนดว่าจะjournaldเก็บข้อความบันทึกจากการบู๊ตก่อนหน้านี้ไว้ผ่าน/etc/systemd/journald.confหรือไม่ การตั้งค่าเริ่มต้นภายใต้ CentOS 7 คือ:

[Journal]
Storage=auto

ที่หน้า man journald.confอธิบายautoดังนี้:

หนึ่งใน "ระเหย", "ถาวร", "อัตโนมัติ" และ "ไม่มี" หาก "เปลี่ยนแปลงได้" ข้อมูลบันทึกรายวันจะถูกเก็บไว้ในหน่วยความจำเท่านั้นเช่นใต้ / ลำดับชั้น / เรียกใช้ / บันทึก / สมุดรายวัน (ซึ่งถูกสร้างขึ้นหากจำเป็น) หาก "ถาวร" ข้อมูลจะถูกเก็บไว้บนดิสก์เช่นด้านล่างลำดับชั้น / var / log / journal (ซึ่งสร้างขึ้นหากจำเป็น) โดยมีทางเลือกย้อนกลับไปยัง / run / log / journal (ซึ่งสร้างขึ้นหากจำเป็น) ระหว่าง เริ่มต้นระบบและหากดิสก์ไม่สามารถเขียนได้ " รถยนต์ " คล้ายกับ "ถาวร" แต่ไดเรกทอรี/ var / log / วารสารไม่ได้สร้างขึ้นถ้าจำเป็นเพื่อให้การควบคุมการดำรงอยู่ของข้อมูลที่บันทึกไป

(เน้นที่เหมือง)

หน้าคน systemd-journald.serviceจึงกล่าวว่า:

ตามค่าดีฟอลต์แล้วเจอร์นัลจะเก็บข้อมูลบันทึกใน / run / log / journal / เนื่องจาก / run / มีความผันผวนข้อมูลบันทึกจะหายไปเมื่อรีบูต ในการทำให้ข้อมูลคงอยู่ก็เพียงพอที่จะสร้าง / var / log / journal / โดยที่ systemd-journald จะเก็บข้อมูลไว้

เห็นได้ชัดว่ามีการเปลี่ยนแปลงค่าเริ่มต้นใน Fedora 19 (เป็นพื้นที่จัดเก็บที่คงอยู่) และเนื่องจาก CentOS 7 นั้นได้มาจาก Fedora 18 - ซึ่งยังคงไม่คงอยู่ตามค่าเริ่มต้น ความคงทนจะดำเนินการตามค่าเริ่มต้นนอกเหนือจาก journald ผ่าน/var/log/messagesและเวอร์ชันที่หมุน/var/log/messages-YYYYMMDDซึ่งเขียนโดย rsyslogd (ซึ่งทำงานโดยค่าเริ่มต้นและรับอินพุตจาก journald)

ดังนั้นเพื่อเปิดใช้งานการบันทึกแบบถาวรด้วย journald ภายใต้ RHEL / CentOS 7 อย่างใดอย่างหนึ่ง

# mkdir /var/log/journal

จากนั้นแก้ไขสิทธิ์และเริ่มต้นวารสารเช่นผ่าน

# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald

6
systemctl restart systemd-journaldควรจะทำมัน ดังนั้นจึงไม่จำเป็นต้องรีบูต
xx4h

@ xx4h อัปเดตคำตอบ
maxschlepzig

9
ในเดเบียนเอกสารนี้มีไว้ที่/usr/share/doc/systemd/README.Debian: install -d -g systemd-journal /var/log/journal.
pevik

@pevik ฉันได้ดูระบบ CentOS 7 (ที่ฉันเพิ่งใช้ mkdir) และการอนุญาตปัจจุบันคือdrwxr-sr-x. 3 root systemd-journal- บางทีวารสารอาจแก้ไขสิทธิ์ / ความเป็นเจ้าของในระหว่างการเริ่มต้น
maxschlepzig

8
เรียนรู้เคล็ดลับที่เรียบร้อย: ถ้าคุณส่งUSR1สัญญาณแทนที่จะรีสตาร์ทคุณจะไม่สูญเสียเนื้อหาเจอร์นัลปัจจุบัน killall -USR1 systemd-journald
James B

1
systemctl restart systemd-journald

คุณอาจสูญเสียบันทึกของคุณ: ดูhttps://github.com/systemd/systemd/issues/2236

mkdir /var/log/journal

มีการเปลี่ยนแปลงในv208:

systemd-journald จะไม่ปรับกลุ่มของไฟล์เจอร์นัลที่สร้างเป็นกลุ่ม "systemd-journal" อีกต่อไป แต่เราพึ่งพาไดเรกทอรีสมุดรายวันที่จะเป็นเจ้าของโดยกลุ่ม "systemd-journal" และชุด setgid bit เพื่อให้ชั้นระบบไฟล์เคอร์เนลจะบังคับใช้โดยอัตโนมัติว่าไฟล์เจอร์นัลสืบทอดการกำหนดกลุ่มนี้

ตัวอย่าง tmpfiles.d (5) ที่รวมอยู่ใน systemd จะตรวจสอบให้แน่ใจว่า setgid บิตและกลุ่มได้รับการตั้งค่าอย่างถูกต้องในไดเรกทอรีสมุดรายวันหากมีอยู่ในทุกการบูต

ดังนั้นคุณควรเรียกใช้บางสิ่งบางอย่างsystemd-tmpfiles --create --prefix /var/log/journalหลังจากmkdir /var/log/journal

ดูเพิ่มเติมที่ :


หืมม, หรือทำ `chmod 4755 / var / log / journal; chown root: systemd-journal!: 2 '- หรือเพียงแค่ทำการรีบูต ฉันจะอัปเดตคำตอบของฉัน
maxschlepzig

@maxschlepzig เพิ่งรีบูตไม่ทำงาน: github.com/systemd/systemd/pull/1398#issuecomment-144247498
Evgeny Vereshchagin

chmod 4755 /var/log/journal; chown root:systemd-journal !:2ทำงานได้ดี แต่tmpfiles: ใช้เวทย์มนตร์ ACL ในสมุดรายวัน
Evgeny Vereshchagin

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