J'essaie d'apprendre l'utilisation de base de systemd et j'ai rencontré un problème déroutant avec les unités de service utilisateur.
Lorsque vous exécutez des services ordinaires avec systemctl, lancez some.service Je peux trouver le journal complet de ce service (y compris ce qu'il a imprimé sur stdout / stderr, si je comprends bien) en exécutant sudo journalctl --unit some.service .
Considérez l'exemple de servicefile chatty.service :
[Service]
ExecStart=/usr/bin/echo "test from chatty.service"
Lorsque je place ce fichier de service dans ~ / .config / systemd / user / chatty.service et l'exécute avec systemctl --user start chatty.service, je ne trouve pas sa sortie envoyée à stdout dans journalctl, ni avec plain journalctl ni avec journalctl - -utilisateur . J'obtiens uniquement la sortie suivante dans les deux:
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.
Et journalctl --unit chatty.service ne renvoie rien du tout (avec ou sans --user ne fait aucune différence).
Alors que si je déplace le même fichier de service vers / etc / systemd / system et l'exécute avec sudo systemd start chatty.service, j'obtiens la sortie suivante lorsque j'exécute 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
Il semble que l'unité de service aux utilisateurs ne soit pas aussi bien intégrée d'une manière ou d'une autre, est-ce prévu, est-ce que je manque quelque chose ou est-ce un bug?
J'utilise openSUSE 13.1 x86-64, avec systemd 208 (installation par défaut).
journalctl --user --user-unit chatty
pour obtenir ces messages de démarrage / d'arrêt de systemd, mais pas ce que le processus d'écho génère, du moins dans mon cas. Vous pouvez obtenir le message en écho avecjournalctl --user
ou utiliser un autre filtre.Réponses:
Utilisez l'
--user-unit
option, et dans votre cas ...la source
journalctl --user
je reçoisNo journal files were found.
Et çajournalctl --user-unit chatty
n'a pas marché pour moi.Nécropostage, mais j'ai fait face et résolu le même problème aujourd'hui. Très probablement
journalctl --user-unit chatty
ne fonctionnait pas pour vous car vous l'exécutez à partir de root. Cependant, parman journalctl
, les--user-unit
filtres des entrées de journal non seulement par_SYSTEMD_USER_UNIT=
, mais aussi par_UID=
, et il n'y a pas dechatty
service avec uid root, donc pas d' entrées se trouvent.Il est probable que vous ayez également essayé d'exécuter à
journalctl --user-unit chatty
partir de votre utilisateur habituel, mais vous avez réussiNo journal files were found
. Cela se produit parce que (et tous les utilisateurs ont accès à leurs revues privées par utilisateur deman journalctl
peut être source de confusion ici) en 2018 sur mon Debian 9 journalctl est toujours pas persistante par défaut (Storage=auto
en/etc/systemd/journald.conf
et/var/log/journal/
n'existe pas), et non le mode persistantjournald
ne prend pas en charge le fractionnement des journaux, de sorte que tous les journaux se retrouvent au même endroit/run/log/journal
malgré le fait que le fractionnement est activé par défaut - voirSplitMode
dansman journald.conf
. L'activation de la persistance résout ce problème.TL; DR: permettre la persistance en mettant
Storage=persistent
à/etc/systemd/journald.conf
et le rechargement avec journaldsudo systemctl restart systemd-journald
.Vous pouvez également rechercher avec
sudo journalctl _SYSTEMD_USER_UNIT=chatty.service
D'autres détails sont disponibles sur https://lists.freedesktop.org/archives/systemd-devel/2016-October/037554.html
la source
No journal files were opened due to insufficient permissions.
un "indice" déroutant sur la définition des autorisations, mais je ne devrais pas avoir à définir des autorisations car j'essaie d'accéder aux journaux utilisateur, pas aux journaux système. Votre solution a fonctionné. Merci beaucoup.Jusqu'à systemd v230 , vous deviez utiliser l'
--user-unit
indicateur moins intuitif pour afficher les journaux de l'unité de votre utilisateur:Depuis systemd v230, vous pouvez maintenant combiner les indicateurs
--user
et--unit
comme vous vous y attendez:La
--user --unit
syntaxe est prise en charge depuis Ubuntu 17.10.la source