GNU/Linux >> Tutoriels Linux >  >> Linux

Comment rediriger la sortie du service systemd vers un fichier

Si vous avez une distribution plus récente avec un nouveau systemd (systemd version 236 ou plus récente), vous pouvez définir les valeurs de StandardOutput ou StandardError à file:YOUR_ABSPATH_FILENAME .

Longue histoire :

Dans les nouvelles versions de systemd il existe une option relativement nouvelle (la requête github date de 2016 et l'amélioration est fusionnée/fermée en 2017) où vous pouvez définir les valeurs de StandardOutput ou StandardError à file:YOUR_ABSPATH_FILENAME . Le file:path l'option est documentée dans le plus récent systemd.exec page de manuel.

Cette nouvelle fonctionnalité est relativement nouvelle et n'est donc pas disponible pour les anciennes distributions comme centos-7 (ou n'importe quel centos avant).


Je pense qu'il existe une manière plus élégante de résoudre le problème :envoyez stdout/stderr à syslog avec un identifiant et demandez à votre gestionnaire syslog de diviser sa sortie par nom de programme.

Utilisez les propriétés suivantes dans votre fichier d'unité de service systemd :

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=<your program identifier> # without any quote

Ensuite, en supposant que votre distribution utilise rsyslog pour gérer les syslogs, créez un fichier dans /etc/rsyslog.d/<new_file>.conf avec le contenu suivant :

if $programname == '<your program identifier>' then /path/to/log/file.log
& stop

Rendez maintenant le fichier journal accessible en écriture par syslog :

# ls -alth /var/log/syslog 
-rw-r----- 1 syslog adm 439K Mar  5 19:35 /var/log/syslog
# chown syslog:adm /path/to/log/file.log

Redémarrez rsyslog (sudo systemctl restart rsyslog ) et apprécie! Votre programme stdout/stderr sera toujours disponible via journalctl (sudo journalctl -u <your program identifier> ) mais ils seront également disponibles dans le fichier de votre choix.

Source via archive.org


Linux
  1. Gérer le démarrage à l'aide de systemd

  2. Comment enregistrer la sortie de la commande dans un fichier sous Linux

  3. Comment créer un service Systemd sous Linux

  4. Comment rediriger la sortie vers un fichier et stdout

  5. Comment rediriger la sortie de la commande time vers un fichier sous Linux ?

Comment rediriger stderr vers stdout dans Bash

Comment exécuter un script Shell en tant que service Systemd sous Linux

Comment rediriger la sortie de la commande shell

Comment rediriger la sortie de system() vers un fichier ?

Comment arrêter le service systemd

Dans le fichier de service systemd, comment puis-je dire une fois que l'USB est prêt ?