Gdzie jest / dlaczego nie ma dziennika dla usług systemowych zwykłych użytkowników?

26

Próbuję nauczyć się podstawowej obsługi systemu i napotkałem mylący problem z jednostkami obsługi użytkowników.

Kiedy uruchamiam zwykłe usługi z systememctl, uruchom some.service. Mogę znaleźć pełny dziennik dla tej usługi (włączając to, co wydrukowałem do stdout / stderr, tak jak rozumiem), uruchamiając sudo journalctl --unit some.service .

Rozważ przykładowy plik usługi chatty.service :

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

Kiedy umieszczam ten plik usługi w ~ / .config / systemd / user / chatty.service i uruchamiam go za pomocą systemctl --user start chatty.service, nie mogę znaleźć jego danych wyjściowych wysyłanych do standardowego wejścia w dzienniku, ani zwykłym dziennikiem, ani dziennikiem - -user . W obu przypadkach otrzymuję tylko następujące dane wyjściowe:

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.

I journalctl --unit chatty.service ogóle nic nie zwraca (z lub bez --user nie robi różnicy).

Chociaż jeśli przeniosę ten sam plik usługi do / etc / systemd / system i uruchomię go za pomocą sudo systemd, uruchom chatty.service , a następnie uruchomię 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

Wygląda na to, że jednostka obsługi użytkownika nie jest w jakiś sposób tak dobrze zintegrowana, czy jest to oczekiwane, czy coś mi brakuje, czy to błąd?

Korzystam z openSUSE 13.1 x86-64 z systememd 208 (instalacja domyślna).

Quantumboredom
źródło
Ten sam systemd 208 tutaj w Arch Linux. Możesz użyć, journalctl --user --user-unit chattyaby uzyskać te komunikaty start / stop z systemd, ale nie to, co generuje proces echa, przynajmniej w moim przypadku. Możesz otrzymać echo wiadomości za pomocą journalctl --userlub użyć innego filtra.
lilydjwg

Odpowiedzi:

20

Użyj --user-unitopcji, aw twoim przypadku ...

journalctl --user-unit chatty
elynnaie
źródło
Czy otrzymujesz również komunikat wyjściowy „test z chatty.service” na wyjściu dziennika, czy tylko „Uruchamianie chatty.service ...” i „Rozpoczęto chatty.service”. wiadomości?
Quantumboredom
Tak, byłem również w stanie uzyskać dane wyjściowe z procesu (tj. Komunikat „test z chatty.service”).
elynnaie
Tego też się spodziewałem, ale nie widzę tego tutaj. Czy mogę zapytać, jakiego systemu operacyjnego (z wersją) używasz?
Quantumboredom
Arch Linux 3.13.7-1. wersja systemowa 212.
elynnaie
2
Widzę teraz wyniki w głównym dzienniku. Ale kiedy próbuję biegać journalctl --user, dostaję No journal files were found.I journalctl --user-unit chattyto nie działa dla mnie.
CMCDragonkai
6

Necroposting, ale dzisiaj zmierzyłem się z tym samym problemem. Najprawdopodobniej journalctl --user-unit chattynie działał dla ciebie, ponieważ uruchamiasz go z poziomu roota. Jednak za man journalctl, --user-unitfiltry wpisy nie tylko się zalogować _SYSTEMD_USER_UNIT=, ale także _UID=, a tam nie machatty usługi z uid roota, więc są nie znaleziono żadnych wpisów.

Możliwe, że próbowałeś również uruchomić journalctl --user-unit chattyzwykłego użytkownika, ale dostałeś No journal files were found. Dzieje się tak, ponieważ (i wszyscy użytkownicy mają dostęp do swoich czasopism prywatny poszczególnych użytkowników ze man journalctlmożna tu mylące) w 2018 roku na moim Debianie 9 journalctl jeszcze nie jest trwały domyślnie ( Storage=autow /etc/systemd/journald.conf, i /var/log/journal/nie istnieje), w nie- tryb trwały journaldnie obsługuje dzielenia dzienników, więc wszystkie dzienniki kończą się w jednym miejscu, /run/log/journalmimo że dzielenie jest domyślnie włączone - patrz SplitModewman journald.conf . Włączenie trwałości rozwiązuje ten problem.

TL; DR: enable wytrwałość poprzez umieszczenie Storage=persistentna /etc/systemd/journald.confprzeładunek journald zsudo systemctl restart systemd-journald .

Alternatywnie wyszukaj za pomocą sudo journalctl _SYSTEMD_USER_UNIT=chatty.service

Więcej informacji można znaleźć na stronie https://lists.freedesktop.org/archives/systemd-devel/2016-October/037554.html

ars
źródło
2
Dziękuję Ci. Otrzymałem No journal files were opened due to insufficient permissions.mylącą „wskazówkę” dotyczącą ustawiania uprawnień, ale nie powinienem ustawiać uprawnień, ponieważ próbuję uzyskać dostęp do dzienników użytkowników, a nie dzienników systemowych. Twoja poprawka zadziałała. Wielkie dzięki.
Rolf
3

Do czasu systemd v230 trzeba było używać mniej intuicyjnej --user-unitflagi, aby wyświetlić dzienniki jednostki użytkownika:

journalctl --user-unit chatty

Od wersji systemd v230 możesz teraz łączyć flagi --useri --unitzgodnie z oczekiwaniami:

journalctl --user --unit chatty

--user --unitSkładnia jest obsługiwana od Ubuntu 17.10.

Mark Stosberg
źródło
2
Nie jestem pewien, że funkcja „--user --unit” działa na v230 ... tutaj działa v232, a ta funkcja nie działa
LeGEC