2017-10-05 5 views
0

Journalctl semble ignorer une partie de la sortie du processus que le service correspondant émet. Comment cela se passe-t-il?Systemd abandonnant des parties aléatoires de stdout

Voici un petit exemple: j'ai appelé le script suivant tester.py

import time 
count = 0 
while True: 
    time.sleep(.001) 
    count += 1 
    print count 

Et j'ai le service suivant appelé tester.service

[Unit] 
Description=lots of output 
After=network.target 

[Service] 
User=django 
Group=django 
WorkingDirectory=/home/django 
ExecStart=/usr/bin/python -u tester.py 
Restart=always 
RestartSec=3 

[Install] 
WantedBy=multi-user.target 

Après l'exécution de sudo systemctl start tester et d'attendre quelques secondes, Je cours ensuite sudo journalctl -u tester. Je remarque que la sortie saute de gros morceaux de nombres. Par exemple, voici un extrait:

Oct 05 23:44:00 staging python[23185]: 999 
Oct 05 23:44:00 staging python[23185]: 1000 
Oct 05 23:44:00 staging python[23185]: 1001 
Oct 05 23:44:29 staging python[23185]: 26829 
Oct 05 23:44:29 staging python[23185]: 26830 
Oct 05 23:44:29 staging python[23185]: 26831 
Oct 05 23:44:29 staging python[23185]: 26832 
Oct 05 23:44:29 staging python[23185]: 26833 
+0

Incluez la version de 'systemd' que vous utilisez. –

+0

Si vous regardez la sortie 'journalctl' complète, y a-t-il aussi des espaces? –

+2

Oh mon dieu, c'est un tarif limité! Journalctl sans aucun argument affiche 'Suppressed xxx messages from/system.slice/tester.service'. La valeur par défaut est 1000 messages par 30s. Merci @MarkStosberg – theicfire

Répondre

1

Systemd est le débit limitant votre sortie! La valeur par défaut est 1000 lignes de sortie pendant 30 secondes. Vous pouvez changer cela en /etc/systemd/journald.conf

Vous pouvez vérifier cela est le problème en exécutant journalctl par lui-même. Vous verrez des messages de la forme Suppressed xxx messages from /system.slice/tester.service