【问题标题】:Creating filename_$(date %Y-%m-%d) from systemd bash inline script从 systemd bash 内联脚本创建 filename_$(date %Y-%m-%d)
【发布时间】:2018-02-10 10:57:42
【问题描述】:

我正在尝试执行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-09-01.

%msystemd 环境中代表的不是月份数字吗?

知道如何设置 systemd 服务以将脚本的标准输出放入具有当前日期的文件中吗? 预期结果: test_output_2017-09-01.log

谢谢。

【问题讨论】:

标签: linux bash date inline systemd


【解决方案1】:

您需要避开 $% 符号,将它们加倍以使这项工作正常进行。

如此处所述:

要传递文字美元符号,请使用“$$”

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

【讨论】:

    猜你喜欢
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 2023-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多