我正在尝试执行systemd
计时器并希望将执行脚本的输出保存在每个日期的文件中。这是我的ExecStart
脚本中的.service
file:
ExecStart=/bin/bash -c 'echo $(date +%Y-%m-%d) >> /home/username/test_output_$(date +%Y-%m-%d).log'
这将创建文件,但添加“哈希”而不是月份名称:
~/test_output_2017-ea3c0c2dd56c499a93412641e41008db-01.log
内容是一样的:
2017-ea3c0c2dd56c499a93412641e41008db-01
如果我跑/bin/bash -c 'echo $(date +%Y-%m-%d)'
在 shell 中而不通过 systemd 服务传递它,它按预期工作。印刷:2017-09-01
.
Does %m
代表除月份数字之外的其他内容systemd
环境?
知道如何设置 systemd 服务以将脚本的标准输出放入具有当前日期的文件中吗?
预期结果:test_output_2017-09-01.log
谢谢。
你需要逃离$ and %符号,将它们加倍才能完成这项工作。
正如这里所描述的:
- https://github.com/systemd/systemd/issues/2146 https://github.com/systemd/systemd/issues/2146
- https://www.freedesktop.org/software/systemd/man/systemd.service.html#Command%20lines https://www.freedesktop.org/software/systemd/man/systemd.service.html#Command%20lines
要传递文字美元符号,请使用“$$”
ExecStart=/bin/bash -c 'echo $$(date +%%Y-%%m-%%d) >> /home/username/test_output_$$(date +%%Y-%%m-%%d).log'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)