Linux システムでログを手動でスクロールする方法

Linux システムでログを手動でスクロールする方法

ログローテーションは、Linux システムでは非常に一般的な機能です。ログローテーションは、システムの監視とトラブルシューティングに必要なログコンテンツを保持しながら、ログが多すぎて 1 つのログファイルが大きくなりすぎるのを防ぎます。

ログ ローリング プロセスは、ログ ファイルのグループのうち、番号が最も大きい (最も古い) ログ ファイルが削除され、残りのログ ファイルに連続した番号が付けられて古いログ ファイルが置き換えられ、新しいファイルが現在のログ ファイルとして置き換えられます。このプロセスは簡単に自動化でき、必要に応じて詳細を微調整できます。

ログローテーション操作を手動で実行するには、 logrotateコマンドを使用します。この記事では、手動でログをローリングする方法と期待される結果を紹介します。

この記事の例は、Ubuntu などの Linux システムに適用されます。他の種類のシステムでは、ログ ファイルと構成ファイルが異なる場合がありますが、ログ ローリング プロセスは同様です。

なぜ丸太を転がす必要があるのでしょうか?

通常、ログ ファイルを手動でローテーションする必要はありません。 Linux システムは、1 日おき (またはそれ以上) に、またはログ ファイルのサイズに応じて、ログを自動的にローテーションします。ストレージ領域を解放するため、またはログの一部を現在のアクティビティから分離するためにログをローテーションする必要がある場合は、ファイル ローテーション ルールに応じて簡単に実行できます。

ちょっとした背景

Linux システムがインストールされると、ログローテーションの範囲に多くのログファイルが含まれるようになります。さらに、一部のアプリケーションでは、インストール時に生成されるログ ファイルのローテーション ルールも設定されます。一般的に、ログローテーション設定ファイルは/etc/logrotate.dに配置されます。ログローリングの詳細な実装を知りたい場合は、この以前の記事を参照してください。

ログのローリング中、アクティブ ログの名前は log.1 などの新しい名前に変更され、以前に log.1 という名前だったファイルは log.2 に名前が変更されます。このファイル セットでは、最も古いログ ファイル (たとえば、log.7) がシステムから削除されます。ログのローテーション時に保持されるログ ファイルの命名方法と数は、 /etc/logrotate.d logrotate.d ディレクトリ内の構成ファイルによって決まります。そのため、ログ ファイルによっては、数回のローテーションでのみ保持されるものもあれば、7 回以上ローテーションされるものもあります。

たとえば、ログのローテーション後、syslog は次のようになります (行末のコメントは、ローテーション プロセスがファイル名にどのように影響するかを示すためだけのものであることに注意してください)。

$ ls -l /var/log/syslog*
-rw-r----- 1 syslog adm 128674 Mar 10 08:00 /var/log/syslog <== 新しいファイル -rw-r----- 1 syslog adm 2405968 Mar 9 16:09 /var/log/syslog.1 <== 以前の syslog
-rw-r----- 1 syslog adm 206451 3月9日 00:00 /var/log/syslog.2.gz <== 前の syslog.1
-rw-r----- 1 syslog adm 216852 3月8日 00:00 /var/log/syslog.3.gz <== 以前の syslog.2.gz
-rw-r----- 1 syslog adm 212889 3月 7日 00:00 /var/log/syslog.4.gz <== 以前の syslog.3.gz
-rw-r----- 1 syslog adm 219106 3月 6日 00:00 /var/log/syslog.5.gz <== 以前の syslog.4.gz
-rw-r----- 1 syslog adm 218596 3月5日 00:00 /var/log/syslog.6.gz <== 以前の syslog.5.gz
-rw-r----- 1 syslog adm 211074 3月4日 00:00 /var/log/syslog.7.gz <== 以前の syslog.6.gz

現在アクティブなログと最後にロールされたログ ファイルを除き、他のすべてのファイルはストレージ スペースを節約するために圧縮されていることがわかります。この設計の理由は、ほとんどのシステム管理者は最新のログ ファイルのみをチェックすればよいからです。残りのログ ファイルは圧縮されており、必要に応じて解凍してチェックできます。これは良い妥協案です。

手動ログローテーション

logrotate コマンドを実行して、ログを手動でローテーションすることができます。

$ sudo logrotate -f /etc/logrotate.d/rsyslog

logrotateコマンドは設定ファイル/etc/logrotate.d/rsyslogを使用し、-f パラメータを通じて「強制ローテーション」を実装することに注意してください。したがって、全体のプロセスは次のようになります。

  • syslog.7.gzを削除します。
  • 元のsyslog.6.gzの名前をsyslog.7.gzに変更します。
  • 元のsyslog.5.gzの名前をsyslog.6.gzに変更します。
  • 元のsyslog.4.gzの名前をsyslog.5.gzに変更します。
  • 元のsyslog.3.gzの名前をsyslog.4.gzに変更します。
  • 元のsyslog.2.gzの名前をsyslog.3.gzに変更します。
  • 元のsyslog.1.gzの名前をsyslog.2.gzに変更します。
  • ただし、必ずしも新しい syslog ファイルを作成する必要はありません。

ファイルの所有権と権限が正しいことを確認するには、次のコマンドを実行します。

$ sudo touch /var/log/syslog
$ sudo chown syslog:adm /var/log/syslog
$ sudo chmod 640 /var/log/syslog

/etc/logrotate.d/rsyslogに次の行を追加して、 logrotate上記の 3 つのコマンドを実行させることもできます。

0640 syslog adm を作成

構成ファイル全体の内容は次のとおりです。

ログファイル
{
7回転
毎日
行方不明
空でない
0640 syslog adm を作成 <==
遅延圧縮
圧縮する
後回転
rsyslog は、次のディレクトリに格納されます。
終了スクリプト
}

以下は、ユーザーのログイン情報を記録する wtmp ログを手動でスクロールする例です。 /etc/logrotate.d/wtmp の rotate 2 の設定により、システムには wtmp ログ ファイルのコピーが 2 つだけ保持されます。

巻く前に:

$ ls -l wtmp*
-rw-r----- 1 ルート utmp 1152 3月12日 11:49 wtmp
-rw-r----- 1 ルート utmp 768 3月11日 17:04 wtmp.1

スクロールコマンドを実行します。

$ sudo logrotate -f /etc/logrotate.d/wtmp

スクロール後:

$ ls -l /var/log/wtmp*
-rw-r----- 1 ルート utmp 0 3月12日 11:52 /var/log/wtmp
-rw-r----- 1 ルート utmp 1152 3月12日 11:49 /var/log/wtmp.1
-rw-r----- 1 ルート adm 99726 2月 21 07:46 /var/log/wtmp.report

ログ ローリングが自動か手動かに関係なく、最新のローリング時間がlogrorateステータス ファイルに記録されることを知っておくことが重要です。

$ grep wtmp /var/lib/logrotate/status
「/var/log/wtmp」 2020-3-12-11:52:57

要約する

Linux システムでの手動ローリング ログに関するこの記事はこれで終わりです。Linux ローリング ログに関する関連コンテンツをさらにご覧になりたい場合は、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linux環境でログファイルを表示するコマンドの詳細な説明
  • Linux ログ表示方法 6 つのまとめ
  • Linux のタイムドログ削除を実装する簡単な方法
  • Linux環境でglogログライブラリを使用する方法
  • Linuxシステムのログの詳細な紹介

<<:  jQuery+h5 で 9 マス抽選特殊効果を実現 (フロントエンドとバックエンドのコード)

>>:  Navicat が MySQL にリモート接続するときに発生する 10060 不明エラーを解決する方法

ブログ    

推薦する

Centos7 に mysql と mysqlclient をインストールする際に遭遇する落とし穴の概要

1. MySQL Yumリポジトリを追加するMySQL公式サイト>ダウンロード>MySQ...

Nginx rtmp モジュールのコンパイル ARM バージョンの問題

目次1. 準備: 2. ソースコードのコンパイル1. 設定する2. コンパイルエラー3. ターゲット...

MySQL ユーザーのホスト属性を素早く変更する方法

MySQL にリモートでログインする場合、使用するアカウントには特別な要件があります。アカウントのデ...

ミニプログラムは左スライドのドロワーメニューをネイティブに実装します

目次WXS レスポンス イベントプランAページ構造とスタイルWXS イベントコールバック関数WXS ...

MySQL での外部キーの作成、制約、削除

序文MySQL バージョン 3.23.44 以降では、InnoDB エンジン タイプのテーブルは外部...

Docker マルチステージビルドを使用してイメージサイズを縮小する方法

この記事では、Docker のマルチステージ ビルド機能を使用してイメージ サイズを大幅に削減する方...

Angularコンポーネントのライフサイクルの詳しい説明(パート2)

目次1. ビューフック1. ngAfterViewInit および ngAfterViewCheck...

SQL文でのgroup byの使用について簡単に説明します

1. 概要Group by は、by の後の規則に従ってデータをグループ化することを意味します。いわ...

ボタンをクリックして画像を切り替える JavaScript

この記事の例では、ボタンをクリックすることで画像を切り替えることを実現するJavaScriptの具体...

ディレクトリスクロール効果を実現するネイティブJS

これはネイティブ JS で実装されたテキスト スクロール効果です。この効果は通常、ニュース、ダイナミ...

Vue2.0は適応解像度を実装する

この記事では、適応解像度を実現するためのVue2.0の具体的なコードを参考までに紹介します。具体的な...

最小限のルートファイルシステムを構築するためにbusyboxを移植するための詳細な手順

Busybox: 小さなコマンドが詰まったスイスアーミーナイフ。ステップ1: ディレクトリ構造を作成...

WindowsでcmdからDOSウィンドウに入り、MySQLデータベースにアクセスします。

1. win + R を押して cmd と入力し、DOS ウィンドウに入ります。 2. MySQL...

JS配列ループ方式と効率分析の比較

配列メソッドJavaScript には多くの配列メソッドが用意されています。次の図は、ほとんどの配列...

Vueはファイルのアップロードとダウンロードを実装します

この記事では、参考までにVueのファイルのアップロードとダウンロードの具体的なコードを紹介します。具...