加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 00:54:21 所属栏目:Linux 来源:网络整理
导读:我正在尝试执行systemd计时器,并希望每个日期将执行脚本的输出保存在文件中.这是.service文件中的ExecStart脚本: ExecStart=/bin/bash -c 'echo $(date +%Y-%m-%d) /home/username/test_output_$(date +%Y-%m-%d).log' 这会创建文件,但会添加“哈希”而不是
我正在尝试执行systemd计时器,并希望每个日期将执行脚本的输出保存在文件中.这是.service文件中的ExecStart脚本:

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'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读