
これは私のサービスです。
[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に「不明なシーケンスを無視する」ダンプを停止するように指示する方法です。スクリプトをそのまま実行しますか?
答え1
各バックスラッシュを別のバックスラッシュにエスケープする必要があります。
... ".*/*.[0-9]\\{4\\}-[0-9]\\{2\\}- ...
man systemd.service
セクションを参照してくださいコマンドラインまたは最新バージョンsystemd.syntax。