Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Print ne fonctionne pas dans le log du systemd

+1 vote

Systemctl status n'affiche pas les prints de mon programme python (un long programme que je peux mettre ici si nécéssaire)
pourtant, il le fait très bien lorsque mon programme correspond à un simple while True: print("ok")

Quel raison peut-il y avoir à cela ?

demandé 25-Nov par Andy (334 points)

J'imagine qu'il s'agit de systemd.service. Il faudrait savoir par quelle méthode tu lance ton script (simple, forking,etc).

Oui, il s'agit bien de systemd.service.
Voici comment je lance le script :


[Unit]
Description=Ma raspberrypi joue à fourmizzz
[Service]
Type=idle
ExecStart=/usr/bin/python3 /home/pi/mes-projets/fourmizzz/fourmizzzing.py
[Install]
WantedBy=multi-user.target

Son problème semble être l'état de son script qui passe de "activer" à "désactiver" presque tout de suite.
Dans mon cas, mon programme reste activé longtemps, mais je n'ai accès au log que lorsque mon script fini par bugger et à devenir désactiver.
En fait j'ai un log mais il n'est pas complet :


pi@raspberrypi:~/mes-projets $ sudo systemctl status fourmizzzing.service
● fourmizzzing.service - Ma raspberrypi joue à fourmizzz
Loaded: loaded (/etc/systemd/system/fourmizzzing.service; enabled)
Active: active (running) since jeu. 2017-11-30 02:31:48 UTC; 25s ago
Main PID: 2081 (python3)
CGroup: /system.slice/fourmizzzing.service
└─2081 /usr/bin/python3 /home/pi/mes-projets/fourmizzz/fourmizzzing.py nov. 30 02:31:48 raspberrypi systemd[1]: Started Ma raspberrypi joue à fourmizzz.
pi@raspberrypi:~/mes-projets $

Il devrait y avoir un tas d'autre message puisque j'ai mis des prints dans mon code. Sans systemd, tout les prints fonctionne très bien.

systemd c'est trop de la daube ;)

1 Réponse

+1 vote
 
Meilleure réponse

Je soupçonne un problème de buffering. Essaie comme ceci :

ExecStart=/usr/bin/python3 -u /home/pi/mes-projets/fourmizzz/fourmizzzing.py

Je crois qu'il est normal que tu ne voies que les derniers messages. Si tu veux avoir toute la sortie, utilises journalctl -u UNIT.

Tu peux aussi jouer avec les options StandardOutput et StandardError (cf. ici) pour décider ou vont tes flux de sortie.

répondu 30-Nov par yoch (2,170 points)
sélectionné 30-Nov par Andy
...