J'essaie d'exécuter une minuterie systemd
et souhaite conserver la sortie du script exécuté dans un fichier par date. Voici mon script ExecStart
dans le fichier .service
:
ExecStart=/bin/bash -c 'echo $(date +%Y-%m-%d) >> /home/username/test_output_$(date +%Y-%m-%d).log'
Cela crée le fichier, mais ajoute un « hachage » au lieu du nom du mois:
~/test_output_2017-ea3c0c2dd56c499a93412641e41008db-01.log
Le contenu est le même:
2017-ea3c0c2dd56c499a93412641e41008db-01
Si je cours /bin/bash -c 'echo $(date +%Y-%m-%d)'
dans le shell sans passer par le service systemd, cela fonctionne comme prévu. Impressions: 2017-09-01
.
Est-ce que %m
représente autre chose qu'un numéro de mois dans l'environnement systemd
?
Une idée de comment définir le service systemd pour mettre la sortie standard du script dans un fichier avec la date actuelle? Résultat attendu: test_output_2017-09-01.log
Merci.
vous a fait tr ied '\' date +% Y-% m-% d' \ 'au lieu de' $ (date +% Y-% m-% d) '? – user3336433
'$ (...)' évalue la commande. Sinon, si nous l'omettons, il affichera 'date +% Y-% m-% d' comme une chaîne et rien de plus. –
'...' c'est comme $ (...) .. appelé substitution de commande => https://www.gnu.org/software/bash/manual/html_node/Command-Substitution.html#Command-Substitution – user3336433