Як відображати повідомлення журналу з попередніх завантажувальних програм під 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/journaljournalctlне надає --list-boots).

Таким чином, моє питання, як відобразити повідомлення журналу, написані до останньої дати завантаження.

Або, можливо, цю функціональність потрібно включити в CentOS 7?

(Сторінка " journalctlman" містить список "systemd 208" як номер версії.)

Відповіді:


99

тл; д-р

У 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як:

Один з "непостійних", "стійких", "авто" та "жодних". Якщо "мінливі", дані журналу журналу зберігатимуться лише в пам'яті, тобто нижче ієрархії / run / log / journal (яка створюється за потреби). Якщо "стійкий", дані зберігатимуться бажано на диску, тобто нижче ієрархії / var / log / журналу (яка створюється у разі потреби), із запасом до / run / log / journal (який створюється при необхідності) протягом раннє завантаження і якщо диск не піддається запису. " auto " схожий на "persistent", але каталог / var / log / journal не створюється за потреби, так що його існування контролює, куди йдуть дані журналу .

(підкресли моє)

Таким чином, на веб -сторінці systemd-journald.service вказується, що:

За замовчуванням журнал зберігає дані журналу в / run / log / journal /. Оскільки / run / є нестабільним, дані журналу втрачаються при перезавантаженні. Щоб зробити дані стійкими, достатньо створити / var / log / journal /, де потім зберігатиме дані systemd-journald.

Мабуть, у Fedora 19 (для постійного зберігання) було змінено типовий стандарт, і оскільки CentOS 7 походить від Fedora 18 - він за умовчанням все ще не існує. Постійність реалізована за замовчуванням за межами журналу через /var/log/messagesта повернутими версіями /var/log/messages-YYYYMMDD, написаними rsyslogd (який працює за замовчуванням і отримує свій внесок від 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
В Debian це описано в /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/isissue/2236

mkdir /var/log/journal

Відбуваються зміни в v208:

systemd-journald більше не буде коригувати створену ним групу журнальних файлів під групу "systemd-journal". Натомість ми покладаємось на каталог журналів, який належить групі "systemd-journal", та його встановленому жорсткому біту, так що рівень файлової системи ядра автоматично примусить примусити файли журналів успадкувати це групове призначення.

Фрагмент tmpfiles.d (5), включений у systemd, переконається, що біт і група setgid правильно встановлені в каталозі журналу, якщо він існує у кожному завантаженні.

Отже, вам слід запустити щось на кшталт systemd-tmpfiles --create --prefix /var/log/journalпісляmkdir /var/log/journal

Дивіться також :


Hm, або робіть `chmod 4755 / var / log / journal; chown root: systemd-journal!: 2 '- або просто перезавантажте. Я оновлю свою відповідь.
maxschlepzig

@maxschlepzig, просто перезавантаження не працює: github.com/systemd/systemd/pull/1398#issuecomment-144247498
Євгеній Верещагін

chmod 4755 /var/log/journal; chown root:systemd-journal !:2працює чудово. але tmpfiles: використовуйте ACL Magic у журналах каталогів
Євген Верещагін

добре, ще одна помилка :) - Я оновив свою відповідь.
maxschlepzig
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.