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に「不明なシーケンスを無視する」ダンプを停止するように指示する方法です。スクリプトをそのまま実行しますか?

ベストアンサー1

各バックスラッシュを別のバックスラッシュにエスケープする必要があります。

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

man systemd.serviceセクションを参照してくださいコマンドラインまたは最新バージョンsystemd.syntax

おすすめ記事