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 忽略該問題並停止將“忽略未知序列”轉儲到 syslog 中。只是按原樣執行腳本?
您需要用另一個反斜杠轉義每個反斜杠。
... ".*/*.[0-9]\\{4\\}-[0-9]\\{2\\}- ...
請參閱COMMAND LINES
man systemd.service
部分,或更新版本的 systemd.syntax。