मैं CentOS 7 के तहत पिछले बूट से लॉग संदेश कैसे प्रदर्शित करूं?


78

journalctlएक CentOS 7 प्रणाली के तहत निष्पादन केवल अंतिम बूट के बाद उत्पन्न संदेशों को प्रिंट करता है।

आदेश

# journalctl --boot=-1

प्रिंट

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

और स्थिति 1 से बाहर निकलता है।

इसकी तुलना एक वर्तमान फेडोरा प्रणाली से करता हूं, मैं देखता हूं कि CentOS 7 के पास /var/log/journal(और journalctlप्रदान नहीं करता है --list-boots)।

इस प्रकार मेरा प्रश्न लॉग संदेशों को प्रदर्शित करना है जो अंतिम बूट तिथि से पहले लिखे गए थे।

या, शायद यह कार्यक्षमता CentOS 7 पर सक्षम होना चाहिए?

( journalctlमैन पेज संस्करण संख्या के रूप में 'systemd 208' को सूचीबद्ध करता है।)

जवाबों:


99

tl; डॉ

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

कहाँ journald.conf आदमी पेज बताते हैं autoके रूप में:

एक "अस्थिर", "लगातार", "ऑटो" और "कोई नहीं"। यदि "वाष्पशील", जर्नल लॉग डेटा केवल मेमोरी में संग्रहीत किया जाएगा, अर्थात / रन / लॉग / जर्नल पदानुक्रम के नीचे (जो आवश्यक हो तो बनाया जाता है)। यदि "लगातार", डेटा अधिमानतः डिस्क पर संग्रहीत किया जाएगा, अर्थात / var / लॉग / जर्नल पदानुक्रम के नीचे (जो यदि आवश्यक हो तो बनाया जाता है), के साथ एक कमबैक / रन / लॉग / जर्नल (जो यदि आवश्यक हो तो बनाया जाता है), के दौरान शुरुआती बूट और अगर डिस्क में लिखने योग्य नहीं है। " ऑटो " "लगातार" के समान है, लेकिन निर्देशिका / var / लॉग / जर्नल की आवश्यकता होने पर नहीं बनाया जाता है, ताकि इसका अस्तित्व नियंत्रित हो जाए कि लॉग डेटा कहां जाता है

(मेरा जोर दें)

Systemd-journald.service आदमी पेज इस प्रकार कहा गया है कि:

डिफ़ॉल्ट रूप से, जर्नल डेटा लॉग / रन / लॉग / जर्नल / में संग्रहीत करता है। चूंकि / रन / अस्थिर है, रिबूट पर लॉग डेटा खो जाता है। डेटा को लगातार बनाए रखने के लिए, यह / var / log / journal / बनाने के लिए पर्याप्त है, जहां systemd-journald फिर डेटा स्टोर करेगा।

जाहिरा तौर पर, फेडोरा 19 में डिफ़ॉल्ट को बदल दिया गया था (लगातार भंडारण के लिए) और चूंकि CentOS 7 फेडोरा 18 से प्राप्त हुआ है - यह अभी भी डिफ़ॉल्ट रूप से वहां पर नहीं है। दृढ़ता को जर्नल के बाहर डिफ़ॉल्ट रूप से लागू किया जाता है /var/log/messagesऔर घुमाए गए संस्करण /var/log/messages-YYYYMMDDजो rsyslogd (जो डिफ़ॉल्ट रूप से चलता है और जर्नल से इसका इनपुट मिलता है) द्वारा लिखे गए हैं।

इस प्रकार, RHEL / CentOS 7 के तहत जर्नल के साथ लगातार लॉगिंग को सक्षम करना है

# mkdir /var/log/journal

और फिर अनुमतियाँ ठीक करें और पुनः आरंभ करें, जैसे कि माध्यम से

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

6
A systemctl restart systemd-journaldको करना चाहिए। इसलिए रिबूट की आवश्यकता नहीं है।
xx4h

@ xx4h, ने उत्तर को अपडेट किया
मैक्स्लेपज़िग

9
डेबियन में इस पर दर्ज है /usr/share/doc/systemd/README.Debian: install -d -g systemd-journal /var/log/journal
पिविक

@pevik, मैंने एक CentOS 7 सिस्टम (जहां मैंने अभी-अभी mkdir का उपयोग किया है) को देखा है और वर्तमान अनुमतियाँ हैं drwxr-sr-x. 3 root systemd-journal- शायद जर्नल प्रारंभ के दौरान अनुमतियों / स्वामित्व को ठीक करता है।
maxschlepzig

8
एक साफ-सुथरी चाल सीखी: यदि आप USR1पुनः आरंभ करने के बजाय संकेत भेजते हैं , तो आप वर्तमान जर्नल सामग्री को नहीं खोते। killall -USR1 systemd-journald
जेम्स बी

1
systemctl restart systemd-journald

आप अपने लॉग खो सकते हैं: https://github.com/systemd/systemd/issues/2236 देखें

mkdir /var/log/journal

इसमें एक बदलाव है v208:

systemd-journald अब "systemd-journal" समूह के लिए बनाने वाली जर्नल फ़ाइलों के समूह को समायोजित नहीं करेगा। इसके बजाय हम "systemd-journal" समूह के स्वामित्व वाली जर्नल निर्देशिका पर भरोसा करते हैं, और इसका सेट बिट बिट सेट करते हैं, ताकि कर्नेल फ़ाइल सिस्टम परत स्वचालित रूप से उस जर्नल फ़ाइलों को लागू कर देगी जो इस समूह असाइनमेंट को इनहेरिट करती है।

एक tmpfiles.d (5) सिस्टमपैड में शामिल स्निपेट यह सुनिश्चित करेगा कि सेटगिड बिट और समूह जर्नल निर्देशिका पर ठीक से सेट हो अगर यह हर बूट पर मौजूद है।

तो, आप के systemd-tmpfiles --create --prefix /var/log/journalबाद कुछ चलाना चाहिएmkdir /var/log/journal

यह भी देखें :


हम्म, या `chmod 4755 / var / लॉग / जर्नल; chown root: systemd-journal !: 2 '- या सिर्फ रिबूट करें। मैं अपना जवाब अपडेट करूंगा।
maxschlepzig

@maxschlepzig, बस रिबूट काम नहीं करता: github.com/systemd/systemd/pull/1398#issuecomment-144247498
एव्जेनी Vereshchagin

chmod 4755 /var/log/journal; chown root:systemd-journal !:2ठीक काम करता है। लेकिन tmpfiles: पत्रिका निर्देशिकाओं पर ACL जादू का उपयोग करें
एवगेनी

ठीक है, एक और बग :) - मैंने अपना जवाब अपडेट कर दिया है।
मैक्सचेलपिजिग सेप
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.