2017-09-01 6 views
2

systemdタイマーを実行しようとしていて、実行されたスクリプトの出力を日付ごとにファイルに保存します。ここに私のExecStartスクリプトは.serviceファイルである:

​​

これは、ファイルが作成されますが、代わりに月名の「ハッシュ」を追加します。

~/test_output_2017-ea3c0c2dd56c499a93412641e41008db-01.log 

内容は同じです:

2017-ea3c0c2dd56c499a93412641e41008db-01 

/bin/bash -c 'echo $(date +%Y-%m-%d)'をsystemdサービスに渡さずにシェルで実行すると、期待通りに機能します。印刷物: 2017-09-01

systemd環境では、%mは月番号以外の何かを表していますか?

スクリプトからの標準出力を現在の日付のファイルに入れるためのsystemdサービスの設定方法はありますか? 予想される結果: test_output_2017-09-01.log

ありがとうございます。

+1

を渡すためにあなたがTRました'$(date +%Y-%m-%d)'の代わりに '' '' 'date +%Y-%m-%d' \ – user3336433

+1

'$(...)'はコマンドを評価します。それ以外の場合、省略すると 'date +%Y-%m-%d'が文字列として出力されます。 –

+0

'...'のような$(...)..コマンド置換=> https://www.gnu.org/software/bash/manual/html_node/Command-Substitution.html#Command-Substitution – user3336433

答えて

3

あなたはこの作品を作るためにそれらの両方を2倍にすることにより、$兆候を、エスケープする必要があります。

ここで説明したように:

リテラルのドル記号、使用 "$$"

ExecStart=/bin/bash -c 'echo $$(date +%%Y-%%m-%%d) >> /home/username/test_output_$$(date +%%Y-%%m-%%d).log' 
関連する問題