使用“忽略未知转义序列”阻止 systemd 淹没日志

使用“忽略未知转义序列”阻止 systemd 淹没日志

这是我的服务

[Unit]
Description=Cleanup service I made

[Service]
ExecStart=/home/me/scripts/cleanup.sh -d /home/me/scripts/testfolder/ -f ".*/*.[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{2\}.*.log"
User=root
Group=root

该服务正在运行,但我的日志被淹没了

/lib/systemd/system/cleanup.service:5: Ignoring unknown escape sequences: ".*/*.[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{2\}.*.log"

我已经测试了该脚本,我知道它有效。我知道它在 crontab 中也有效。

我尝试过的:

  • 尝试将所有内容放在双引号中
  • 将 ExecStart 更改为“/bin/bash -c”
  • 尝试使用 systemd-escape 字符作为目录路径(用“-”替换“/”)。然而,这是针对路径而不是正则表达式。

该条目是一个正则表达式,我无法真正更改它的条目。我需要以不同的方式逃脱吗?或者更简单,我如何告诉 systemd 忽略该问题并停止将“忽略未知序列”转储到系统日志中。就按原样运行脚本吗?

答案1

您需要用另一个反斜杠转义每个反斜杠。

... ".*/*.[0-9]\\{4\\}-[0-9]\\{2\\}- ...

参见man systemd.service部分命令行,或在更新的版本中systemd.语法

相关内容