bob*_*les 5 linux bash inline date systemd
我正在尝试执行一个systemd计时器,并希望每个日期将执行的脚本的输出保存在文件中.这是我ExecStart在.service文件中的脚本:
ExecStart=/bin/bash -c 'echo $(date +%Y-%m-%d) >> /home/username/test_output_$(date +%Y-%m-%d).log'
Run Code Online (Sandbox Code Playgroud)
这会创建文件,但会添加"哈希"而不是月份名称:
~/test_output_2017-ea3c0c2dd56c499a93412641e41008db-01.log
Run Code Online (Sandbox Code Playgroud)
内容是一样的:
2017-ea3c0c2dd56c499a93412641e41008db-01
Run Code Online (Sandbox Code Playgroud)
如果我/bin/bash -c 'echo $(date +%Y-%m-%d)'在shell中运行而不通过systemd服务传递它,它会按预期工作.印刷品:
2017-09-01.
%m除了systemd环境中的月份数之外,它代表什么?
知道如何设置systemd服务以将脚本的标准输出放入具有当前日期的文件中吗?预期结果:
test_output_2017-09-01.log
谢谢.
您需要通过将它们加倍来逃避$和%符号才能使其工作.
如下所述:
要传递文字美元符号,请使用"$$"
ExecStart=/bin/bash -c 'echo $$(date +%%Y-%%m-%%d) >> /home/username/test_output_$$(date +%%Y-%%m-%%d).log'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2625 次 |
| 最近记录: |