2017-09-01 2 views
2

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.

+1

vous a fait tr ied '\' date +% Y-% m-% d' \ 'au lieu de' $ (date +% Y-% m-% d) '? – user3336433

+1

'$ (...)' évalue la commande. Sinon, si nous l'omettons, il affichera 'date +% Y-% m-% d' comme une chaîne et rien de plus. –

+0

'...' c'est comme $ (...) .. appelé substitution de commande => https://www.gnu.org/software/bash/manual/html_node/Command-Substitution.html#Command-Substitution – user3336433

Répondre