【发布时间】: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.
%m 在systemd 环境中代表的不是月份数字吗?
知道如何设置 systemd 服务以将脚本的标准输出放入具有当前日期的文件中吗?
预期结果:
test_output_2017-09-01.log
谢谢。
【问题讨论】:
-
你试过用
`date +%Y-%m-%d`代替$(date +%Y-%m-%d)吗? -
$(...)评估命令。否则,如果我们省略它,它会将date +%Y-%m-%d打印为字符串,仅此而已。 -
` ... ` 就像 $(...) .. 称为命令替换 => gnu.org/software/bash/manual/html_node/…
标签: linux bash date inline systemd