Systemd

使用“忽略未知的轉義序列”阻止 systemd 淹沒日誌

  • June 28, 2021

這是我的服務

[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 忽略該問題並停止將“忽略未知序列”轉儲到 syslog 中。只是按原樣執行腳本?

您需要用另一個反斜杠轉義每個反斜杠。

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

請參閱COMMAND LINESman systemd.service部分,或更新版本的 systemd.syntax

引用自:https://unix.stackexchange.com/questions/656148