微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 从systemd bash内联脚本创建文件名_ $(日期%Y-%m-%d)

我正在尝试执行systemd计时器,并希望每个日期将执行脚本的输出保存在文件中.这是.service文件中的ExecStart脚本:

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

这会@R_502_5843@,但会添加“哈希”而不是月份名称

~/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'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐