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
如果我在shell中运行/ bin / bash -c’echo $(date%Y-%m-%d)’而不通过systemd服务传递它,它会按预期工作.打印:
2017年9月1日.
%m是否代表系统环境中的月份数以外的其他数字?
知道如何设置systemd服务以将脚本的标准输出放入具有当前日期的文件中吗?
预期结果:
test_output_2017-09-01.log
谢谢.
解决方法 您需要通过将它们加倍来逃避$和%符号才能使其工作.如下所述:
> https://github.com/systemd/systemd/issues/2146
> https://www.freedesktop.org/software/systemd/man/systemd.service.html#Command%20lines
To pass a literal dollar sign,use “$$”
ExecStart=/bin/bash -c 'echo $$(date +%%Y-%%m-%%d) >> /home/username/test_output_$$(date +%%Y-%%m-%%d).log'总结
以上是内存溢出为你收集整理的linux – 从systemd bash内联脚本创建文件名_ $(日期%Y-%m-%d)全部内容,希望文章能够帮你解决linux – 从systemd bash内联脚本创建文件名_ $(日期%Y-%m-%d)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)