J'ai du mal à diriger le STDOUT & STDERR vers un fichier lors de l'exécution d'un programme en tant que service systemd. J'ai essayé d'ajouter ce qui suit au .service
fichier:
ExecStart=/apppath/appname > /filepath/filename 2>&1
Mais ça ne marche pas. La sortie se termine dans/var/log/messages et est visible à l'aide de journalctl mais j'aimerais un fichier séparé.
J'ai également essayé de définir StdOutput=tty
mais ne trouve pas de moyen de le rediriger vers un fichier.
Toute aide serait appréciée.
systemd.service(5)
dit:
ExecStart =
Commandes avec leurs arguments qui sont exécutées au démarrage de ce service.
Ainsi, systemd
exécute votre /apppath/appname
avec args >
, /filepath/filename
, 2>&1
Essayer:
ExecStart=/bin/sh -c '/apppath/appname > /filepath/filename 2>&1'
Essayer:
ExecStart=/usr/bin/sh -c "/apppath/appname > /filepath/filename 2>&1"
ExecStart requiert que le premier argument soit un binaire (sans exception) et n'autorise pas les canaux ou la redirection. Par conséquent, utilisez ExecStart pour démarrer un shell dans lequel vous pouvez faire toutes les choses sophistiquées requises.