¿Dónde está / por qué no hay registro para los servicios systemd de usuario normales?

26

Estoy tratando de aprender el uso básico del sistema y me he encontrado con un problema confuso con las unidades de servicio al usuario.

Al ejecutar servicios ordinarios con systemctl, inicie some.service. Puedo encontrar el registro completo de este servicio (incluido lo que se ha impreso en stdout / stderr, según tengo entendido) ejecutando sudo journalctl --unit some.service .

Considere el ejemplo servicefile chatty.service :

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

Cuando coloco este archivo de servicio en ~ / .config / systemd / user / chatty.service y lo ejecuto con systemctl --user start chatty.service no puedo encontrar su salida enviada a stdout en journalctl, ni con journalctl simple ni con journalctl - -usuario . Solo obtengo el siguiente resultado en ambos:

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.

Y journalctl --unit chatty.service no devuelve nada (con o sin --user no hace ninguna diferencia).

Mientras que si muevo el mismo archivo de servicio a / etc / systemd / system y lo ejecuto con sudo systemd start chatty.service , obtengo el siguiente resultado cuando ejecuto 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

Parece que la unidad de servicio al usuario no está tan bien integrada de alguna manera, ¿se espera esto, me falta algo o es un error?

Estoy ejecutando openSUSE 13.1 x86-64, con systemd 208 (instalación predeterminada).

Quantumboredom
fuente
El mismo systemd 208 aquí en Arch Linux. Puede usar journalctl --user --user-unit chattypara obtener esos mensajes de inicio / detención de systemd, pero no lo que genera el proceso de eco, al menos en mi caso. Puede obtener el mensaje repetido journalctl --usero utilizar algún otro filtro.
lilydjwg

Respuestas:

20

--user-unitOpción de uso , y en su caso ...

journalctl --user-unit chatty
elynnaie
fuente
¿Recibirá también el mensaje stdout "prueba de chatty.service" en la salida del registro, o simplemente "Iniciando chatty.service ..." y "Iniciado chatty.service". mensajes?
Quantumboredom
Sí, también pude obtener la salida del proceso (es decir, el mensaje "prueba de chatty.service").
elynnaie
Eso es lo que esperaba también, pero no lo veo aquí. ¿Puedo preguntar qué sistema operativo (con versión) está ejecutando?
Quantumboredom
Arch Linux 3.13.7-1. systemd versión 212.
elynnaie
2
Veo el resultado en el diario principal ahora. Pero cuando intento correr journalctl --userme sale No journal files were found.Y journalctl --user-unit chattyno funcionó para mí.
CMCDragonkai
6

Necroposting, pero hoy enfrenté y resolví el mismo problema. Probablemente journalctl --user-unit chattyno funcionó para usted porque lo ejecuta desde la raíz. Sin embargo, per man journalctl, --user-unitfiltra las entradas de registro no solo por _SYSTEMD_USER_UNIT=, sino también por _UID=, y no hay chattyservicio con root uid, por lo que no se encuentran entradas.

Es probable que también haya intentado huir journalctl --user-unit chattyde su usuario habitual, pero lo consiguió No journal files were found. Esto sucede porque (y todos los usuarios tienen acceso a sus diarios privados de cada usuario de man journalctlpuede ser confuso aquí) en el año 2018 en mi Debian 9 journalctl todavía no es persistente por defecto ( Storage=autoen /etc/systemd/journald.conf, y /var/log/journal/no existe), y en la no el modo persistente journaldno es compatible con la división de registros, por lo que todos los registros terminan en un solo lugar a /run/log/journalpesar de que la división está activada de forma predeterminada, ver SplitModeen man journald.conf. Habilitar la persistencia corrige esto.

TL; DR: habilitar la persistencia poniendo Storage=persistenta /etc/systemd/journald.confy recarga con journald sudo systemctl restart systemd-journald.

Alternativamente, busque con sudo journalctl _SYSTEMD_USER_UNIT=chatty.service

Algunos detalles más están en https://lists.freedesktop.org/archives/systemd-devel/2016-October/037554.html

ars
fuente
2
Gracias. Estaba recibiendo No journal files were opened due to insufficient permissions.una "pista" confusa sobre la configuración de permisos, pero no debería tener que establecer permisos porque estoy tratando de acceder a los registros de usuarios, no a los registros del sistema. Su arreglo funcionó. Muchas gracias.
Rolf
3

Hasta systemd v230 , tenía que usar el --user-unitindicador menos intuitivo para ver los registros de la unidad de su usuario:

journalctl --user-unit chatty

Desde systemd v230, ahora puede combinar las banderas --usery --unitcomo esperaría:

journalctl --user --unit chatty

La --user --unitsintaxis es compatible desde Ubuntu 17.10.

Mark Stosberg
fuente
2
No estoy seguro de que la función "--user --unit" funcione en v230 ... ejecutando v232 aquí, y esta función no funciona
LeGEC