logrotate「後回転」構成

logrotate「後回転」構成

以下は、2 つの同じ logrotate 構成例です。唯一の違いは、postroate2番目の例では欠落しているブロックです。>/dev/null 2>&1 || true

/var/log/nftables.log {
  size +10M
  maxage 30
  sharedscripts
  postrotate
    /usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true
  endscript
}

/var/log/nftables.log {
  size +10M
  maxage 30
  sharedscripts
  postrotate
    /usr/bin/systemctl kill -s HUP rsyslog.service
  endscript
}


>/dev/null 2>&1 || true2番目の例がなぜ悪いのだろうか。 (私の考えでは悪いようです。)それが何であるかを説明してもらえますか?

各文字の意味は>/dev/null2>&1のとおり||です。true

答え1

これが基本bash構文です。man bashLinux Shellのチュートリアルや本を読んで、また読んでください。

しかし、ここにあります:

>/dev/nullSTDOUTストリームを無限データシンク(NULL)デバイスにリダイレクトして削除します。

2>&1STDERRストリームをSTDOUTにリダイレクトします(にリダイレクトされます/dev/null)。

||論理OR演算子です。左式が||失敗した場合にのみ(ゼロ以外の値を返す$STATUS)、右式が評価され、式||全体の結果として返されます。

trueSUCCESSのみを返すプログラムです$STATUS

概して次のことを/usr/bin/systemctl kill -s HUP rsyslog.service >/dev/null 2>&1 || true意味します。

コマンドを実行し、出力およびエラーメッセージを削除します。コマンドが成功すると、SUCCESS が返されます。コマンドが失敗すると、SUCCESS が返されます。

注:このコマンドは非解釈postrotateと解釈されるため、bash拡張機能は機能しません。/bin/sh/bin/bash

関連情報