Де / чому немає журналу для звичайних системних послуг користувачів?


26

Я намагаюся навчитися базовому системному використанню і зіткнувся з заплутаною проблемою з підрозділами обслуговування користувачів.

Під час запуску звичайних сервісів з systemctl запускайте some.service, я можу знайти повний журнал для цієї послуги (включаючи те, що він надрукував до stdout / stderr, наскільки я це розумію), запустивши sudo journalctl --unit some.service .

Розглянемо на прикладі службового файлу chatty.service :

[Service]
ExecStart=/usr/bin/echo "test from chatty.service"

Коли я розміщую цей сервісний файл у ~ / .config / systemd / user / chatty.service і запускаю його з systemctl --user start chatty.service, я не можу знайти його вихідний файл, відправлений на stdout в journalctl, ні з простим journalctl, ні з journalctl - -користувач . Я отримую тільки наступний вихід в обох:

Jan 15 19:16:52 qbd-x230-suse.site systemd[1168]: Starting chatty.service...
Jan 15 19:16:52 qbd-x230-suse.site systemd[1168]: Started chatty.service.

І journalctl - об'єднайте chatty.service взагалі нічого не повертає (з або без --користувач не має значення).

Хоча якщо я переміщу той самий сервісний файл до / etc / systemd / system і запускаю його за допомогою sudo systemd, запускайте chatty.service, тоді я отримую наступний вихід при запуску sudo journalctl - unit chatty.service :

Jan 15 19:28:08 qbd-x230-suse.site systemd[1]: Starting chatty.service...
Jan 15 19:28:08 qbd-x230-suse.site systemd[1]: Started chatty.service.
Jan 15 19:28:08 qbd-x230-suse.site echo[27098]: test from chatty.service

Здається, блок обслуговування користувачів не так добре інтегрований, це очікується, я щось пропускаю чи це помилка?

Я запускаю openSUSE 13.1 x86-64, з systemd 208 (встановлення за замовчуванням).


Те саме 208 тут у Arch Linux. Ви можете використовувати journalctl --user --user-unit chattyдля отримання цих повідомлень про старт / стоп з systemd, але не те, що дає ехо-процес, принаймні в моєму випадку. Ви можете отримати відлунне повідомлення за допомогою journalctl --userабо використовувати якийсь інший фільтр.
lilydjwg

Відповіді:


20

Використовуйте --user-unitваріант, і у вашому випадку ...

journalctl --user-unit chatty

Чи отримуєте повідомлення "тест із chatty.service" у вихідному журналі, або просто "Запуск chatty.service ..." та "Початок chatty.service." повідомлення?
Quantumboredom

Так, мені вдалося отримати також результат з процесу (тобто повідомлення "тест від chatty.service").
elynnaie

Це я і очікував, але я цього не бачу. Чи можу я запитати, яку операційну систему (з версією) ви працюєте?
Quantumboredom

Arch Linux 3.13.7-1. systemd версія 212.
elynnaie

2
Зараз я бачу вихід у головному журналі. Але коли я намагаюся бігати, journalctl --userя отримую No journal files were found.І мені це journalctl --user-unit chattyне вийшло.
CMCDragonkai

6

Некропостинг, але я зіткнувся і вирішив те саме питання сьогодні. Швидше за всеjournalctl --user-unit chatty , для вас це не працювало, оскільки ви запускаєте його з root. Однак per man journalctl, --user-unitфільтрує записи журналів не тільки за _SYSTEMD_USER_UNIT=, але й за _UID=, і немає chattyслужби з uid кореня, тому записів не знайдено.

Цілком ймовірно, що ви також намагалися запустити journalctl --user-unit chattyвід свого звичайного користувача, але отримали No journal files were found. Це трапляється тому, що (і всім користувачам надається доступ до їх приватних журналів на кожного користувача, звідси вони man journalctlможуть бути заплутаними) у 2018 році в моєму журналі Debian 9 досі не працює за замовчуванням ( Storage=autoу/etc/systemd/journald.conf та /var/log/journal/не існує), а також у не- стійкий режим journaldне підтримує розділення журналів, тому всі журнали опиняються на одному місці, /run/log/journalнезважаючи на те, що розщеплення увімкнено за замовчуванням - див. SplitModeуman journald.conf . Увімкнення стійкості виправляє це.

TL; DR: включити сталість, поставивши Storage=persistentдо /etc/systemd/journald.confі перевантажувальні journald зsudo systemctl restart systemd-journald .

Крім того, пошук за допомогою sudo journalctl _SYSTEMD_USER_UNIT=chatty.service

Ще деякі подробиці можна знайти на веб-сторінці https://lists.freedesktop.org/archives/systemd-devel/2016-O жовтня/037554.html


2
Дякую. Я отримував No journal files were opened due to insufficient permissions.заплутану "підказку" щодо налаштування дозволів, але мені не потрібно було встановлювати дозволи, оскільки я намагаюся отримати доступ до журналів користувачів, а не до системних журналів. Виправлення спрацювало. Велике дякую.
Рольф

3

До systemd v230 вам довелося використовувати менш інтуїтивний --user-unitпрапор для перегляду журналів для блоку вашого користувача:

journalctl --user-unit chatty

Оскільки systemd v230, тепер ви можете комбінувати --userта --unitпрапори так, як ви очікували:

journalctl --user --unit chatty

--user --unitСинтаксис підтримується починаючи з Ubuntu 17.10.


2
Я не переймаюся функцією "--user --unit" працює на v230 ... працює тут v232, і ця функція не працює
LeGEC
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.