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).
journalctl --user --user-unit chatty
aby 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 --user
lub użyć innego filtra.Odpowiedzi:
Użyj
--user-unit
opcji, aw twoim przypadku ...źródło
journalctl --user
, dostajęNo journal files were found.
Ijournalctl --user-unit chatty
to nie działa dla mnie.Necroposting, ale dzisiaj zmierzyłem się z tym samym problemem. Najprawdopodobniej
journalctl --user-unit chatty
nie działał dla ciebie, ponieważ uruchamiasz go z poziomu roota. Jednak zaman journalctl
,--user-unit
filtry 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 chatty
zwykł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 zeman journalctl
można tu mylące) w 2018 roku na moim Debianie 9 journalctl jeszcze nie jest trwały domyślnie (Storage=auto
w/etc/systemd/journald.conf
, i/var/log/journal/
nie istnieje), w nie- tryb trwałyjournald
nie obsługuje dzielenia dzienników, więc wszystkie dzienniki kończą się w jednym miejscu,/run/log/journal
mimo że dzielenie jest domyślnie włączone - patrzSplitMode
wman journald.conf
. Włączenie trwałości rozwiązuje ten problem.TL; DR: enable wytrwałość poprzez umieszczenie
Storage=persistent
na/etc/systemd/journald.conf
przeł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
źródło
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.Do czasu systemd v230 trzeba było używać mniej intuicyjnej
--user-unit
flagi, aby wyświetlić dzienniki jednostki użytkownika:Od wersji systemd v230 możesz teraz łączyć flagi
--user
i--unit
zgodnie z oczekiwaniami:--user --unit
Składnia jest obsługiwana od Ubuntu 17.10.źródło