Dove si trova / perché non esiste un registro per i normali servizi di sistema dell'utente?


26

Sto cercando di imparare l'utilizzo di base del sistema e ho riscontrato un problema confuso con le unità di servizio utente.

Quando eseguo servizi ordinari con systemctl avvia some.service Posso trovare il registro completo per questo servizio (incluso ciò che ha stampato su stdout / stderr, come ho capito) eseguendo sudo journalctl --unit some.service .

Considera l'esempio servicefile chatty.service :

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

Quando inserisco questo file di servizio in ~ / .config / systemd / user / chatty.service ed eseguo con systemctl - l'utente avvia chatty.service non riesco a trovare l'output inviato a stdout in journalctl, né con journalctl normale né con journalctl - -utente . Ottengo solo il seguente output in entrambi:

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.

E journalctl --unit chatty.service non restituisce nulla (con o senza --user non fa alcuna differenza).

Mentre se sposto lo stesso file di servizio in / etc / systemd / system e lo eseguo con sudo systemd avvia chatty.service, quando eseguo sudo journalctl --unit chatty.service ottengo il seguente output :

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

Sembra che l'unità di servizio utente non sia così ben integrata in qualche modo, è previsto, mi sto perdendo qualcosa o è un bug?

Sto eseguendo openSUSE 13.1 x86-64, con systemd 208 (installazione predefinita).


Lo stesso sistema 208 qui su Arch Linux. È possibile utilizzare journalctl --user --user-unit chattyper ottenere quei messaggi di avvio / arresto da systemd, ma non ciò che viene emesso dal processo di eco, almeno nel mio caso. È possibile ottenere il messaggio con l'eco journalctl --usero utilizzare qualche altro filtro.
lilydjwg,

Risposte:


20

Usa l' --user-unitopzione, e nel tuo caso ...

journalctl --user-unit chatty

Stai ricevendo il messaggio stdout "test from chatty.service" anche nell'output del registro, oppure solo "Avvio chatty.service ..." e "Avvia chatty.service". messaggi?
Quantumboredom

Sì, sono stato in grado di ottenere anche l'output dal processo (ovvero il messaggio "test from chatty.service").
elynnaie

È quello che mi aspettavo anche questo, ma non lo vedo qui. Posso chiederti quale sistema operativo (con versione) stai utilizzando?
Quantumboredom

Arch Linux 3.13.7-1. versione di sistema 212.
elynnaie

2
Vedo l'output nel journalctl principale ora. Ma quando provo a correre journalctl --userottengo No journal files were found.E il journalctl --user-unit chattynon ha funzionato per me.
CMCDragonkai,

6

Necroposting, ma oggi ho affrontato e risolto lo stesso problema. Molto probabilmente journalctl --user-unit chattynon ha funzionato per te perché lo esegui da root. Tuttavia, per man journalctl, --user-unitfiltra le voci di registro non solo per _SYSTEMD_USER_UNIT=, ma anche per _UID=, e non esiste alcun chattyservizio con uid di root, quindi non vengono trovate voci.

È probabile che tu abbia anche provato a correre journalctl --user-unit chattydal tuo solito utente, ma hai ottenuto No journal files were found. Ciò accade perché (e a Tutti gli utenti viene concesso l'accesso ai loro diari privati ​​per utente da man journalctlqui può essere fonte di confusione) nel 2018 sul mio journalctl Debian 9 non è ancora persistente per impostazione predefinita ( Storage=autoin /etc/systemd/journald.confe /var/log/journal/non esiste), e in non la modalità persistente journaldnon supporta la suddivisione dei registri, quindi tutti i registri finiscono in un'unica posizione /run/log/journalnonostante il fatto che la suddivisione sia attivata per impostazione predefinita, vedere SplitModein man journald.conf. L'abilitazione della persistenza risolve questo problema.

TL; DR: abilitazione persistenza mettendo Storage=persistenta /etc/systemd/journald.confe ricaricare journald con sudo systemctl restart systemd-journald.

In alternativa, cerca con sudo journalctl _SYSTEMD_USER_UNIT=chatty.service

Alcuni maggiori dettagli sono disponibili su https://lists.freedesktop.org/archives/systemd-devel/2016-October/037554.html


2
Grazie. Stavo ottenendo No journal files were opened due to insufficient permissions.un "suggerimento" confuso sull'impostazione delle autorizzazioni, ma non avrei dovuto impostare le autorizzazioni perché sto provando ad accedere ai registri utente, non ai registri di sistema. La tua correzione ha funzionato. Grazie molto.
Rolf,

3

Fino a systemd v230 , è stato necessario utilizzare il --user-unitflag meno intuitivo per visualizzare i registri per l'unità dell'utente:

journalctl --user-unit chatty

Da systemd v230, ora puoi combinare i flag --usere --unitcome ti aspetteresti:

journalctl --user --unit chatty

La --user --unitsintassi è supportata da Ubuntu 17.10.


2
Non sono sicuro che la funzione "--user --unit" funzioni su v230 ... eseguendo v232 qui, e questa funzione non funziona
LeGEC
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.