ログの回転はどのように機能しますか?

ログの回転はどのように機能しますか?

logrotate私のシェルファイルからコマンドを実行すると、これがどのように機能するのか、それがどのように機能しないのかを理解するのは本当に難しいです。

問題のコマンドは次のとおりです。

rclone -L -vv --log-file "/home/mike/tmp/qqq.log"  sync "/media/mike/W10 D drive/My Documents/"  remote:MyDocuments_M17A_from_Linux

私が欲しいもの:

qqq.logファイルを頻繁に(たとえば10分ごとに)確認し、そのファイルが指定されたサイズ(たとえば1MB)を超えることを確認したいと思います。その場合、ファイルは回転されます。rcloneこの-vvオプションを使用すると、意図的に多くの出力が生成されます(つまり、logrotateがこのユースケースに適した理由を理解しようとします)。

かなり役に立つチュートリアルがありますここしかし、まだ私に手がかりはありません。

  1. 独自の非システムプロセスのログ循環をどのように設定する予定ですか?床に線を付けることを意味しますか/etc/logrotate.conf?これが私がしたことです(「#システムごとのログはここで設定できます」)。

    /home/mike/tmp/qqq.log {
      notifempty
      size 1M
      daily
      create 0664 root root
      rotate 3
    }
    

    後:今、別のファイルを置くことができることに気づきました。/etc/logrotate.dそこでは複雑ではありません。

  2. デフォルトでは、logrotateこのファイルは1日1回だけ実行されますか/etc/cron.daily/logrotate

  3. これは、より頻繁に確認したい場合は、cronこのタスクを10分ごとに実行(この場合)するように設定する必要があるという意味ですか?

  4. rootとして実行しますかlogrotate <config file>?ルートとユーザーの両方で試してみたので、この質問をします。ユーザーが仕事をしていないようです。

このタイプの設定(まれではない)への初心者ガイドへのリンクが役立ちます。検索してみましたが、私が見つけたほとんどのコンテンツにはステップバイステップのガイドはありません。

ベストアンサー1

logrotateそのユーザーのログを回転させるために、管理者権限を持たずに通常のユーザーとして実行できます。

# Create a local per-user configuration file
cat >.logrotate.conf <<'X'
/home/mike/tmp/qqq.log {
    notifempty
    missingok
    size 1M
    rotate 3
}
X

# Run logrotate with that configuration file
/usr/sbin/logrotate -v -s .logrotate.state .logrotate.conf

daily可能なタスクを1日1回に制限する純粋にサイズベースのチェックを望んでいたので、基準を削除しました(logrotate状況に応じて1日に最初に実行)。ではなく、実際のジョブで出力ファイルが生成されるようにcreate置き換えました。missingokrclonelogrotate

次に、logrotateユーザーcrontabファイルにコマンドを入力します。

# Capture any existing crontab entries
crontab -l >.crontab

# Append ours to the list
echo '0 * * * * /usr/sbin/logrotate -s .logrotate.state .logrotate.conf >>.crontab.log 2>&1' >>.crontab

# Reload crontab
crontab .crontab

この例では、コマンド出力がに書き込まれます。毎月アイテムを繰り返すかリセット.crontab.logできます。logrotate

おすすめ記事