序章

Linuxシステム管理者は、トラブルシューティングの目的でログファイルを確認する必要があることがよくあります。 実際、これはシステム管理者が最初に行うことです。

Linuxとその上で実行されるアプリケーションは、さまざまな種類のメッセージを生成でき、さまざまなログファイルに記録されます。 Linuxは、一連の構成ファイル、ディレクトリ、プログラム、コマンド、およびデーモンを使用して、これらのログメッセージを作成、保存、およびリサイクルします。 したがって、システムがログファイルを保持する場所と、関連するコマンドの使用方法を知ることは、トラブルシューティング中の貴重な時間を節約するのに役立ちます。

このチュートリアルでは、Linuxのロギングメカニズムのさまざまな部分を見ていきます。

免責事項

このチュートリアルのコマンドは、CentOS 6.4、Ubuntu 12、Debian7のプレーンバニラインストールでテストされました。

デフォルトのログファイルの場所

Linuxでのログファイルのデフォルトの場所は/var/logです。

単純なls-l/ var / logコマンドを使用して、このディレクトリ内のログファイルのリストを表示できます。

これは私のCentOSシステムで見たものです:

[root@TestLinux ~]# ls -l /var/log  

total 1472  
-rw-------. 1 root root   4524 Nov 15 16:04 anaconda.ifcfg.log  
-rw-------. 1 root root  59041 Nov 15 16:04 anaconda.log  
-rw-------. 1 root root  42763 Nov 15 16:04 anaconda.program.log  
-rw-------. 1 root root 299910 Nov 15 16:04 anaconda.storage.log  
-rw-------. 1 root root  40669 Nov 15 16:04 anaconda.syslog  
-rw-------. 1 root root  57061 Nov 15 16:04 anaconda.xlog 
-rw-------. 1 root root   1829 Nov 15 16:04 anaconda.yum.log  
drwxr-x---. 2 root root   4096 Nov 15 16:11 audit 
-rw-r--r--  1 root root   2252 Dec  9 10:27 boot.log  
-rw-------  1 root utmp    384 Dec  9 10:31 btmp  
-rw-------. 1 root utmp   1920 Nov 28 09:28 btmp-20131202  
drwxr-xr-x  2 root root   4096 Nov 29 15:47 ConsoleKit
-rw-------  1 root root   2288 Dec  9 11:01 cron
-rw-------. 1 root root   8809 Dec  2 17:09 cron-20131202  
-rw-r--r--  1 root root  21510 Dec  9 10:27 dmesg
-rw-r--r--  1 root root  21351 Dec  6 16:37 dmesg.old  
-rw-r--r--. 1 root root 165665 Nov 15 16:04 dracut.log  
-rw-r--r--. 1 root root 146876 Dec  9 10:44 lastlog 
-rw-------  1 root root    950 Dec  9 10:27 maillog  
-rw-------. 1 root root   4609 Dec  2 17:00 maillog-20131202  
-rw-------  1 root root 123174 Dec  9 10:27 messages
-rw-------. 1 root root 458481 Dec  2 17:00 messages-20131202  
-rw-------  1 root root   2644 Dec  9 10:44 secure 
-rw-------. 1 root root  15984 Dec  2 17:00 secure-20131202  
-rw-------  1 root root      0 Dec  2 17:09 spooler  
-rw-------. 1 root root      0 Nov 15 16:02 spooler-20131202  
-rw-------. 1 root root      0 Nov 15 16:02 tallylog
-rw-rw-r--. 1 root utmp  89856 Dec  9 10:44 wtmp
-rw-------  1 root root   3778 Dec  6 16:48 yum.log  

ログファイルの内容の表示

/ var/logの下にある一般的なログファイルは次のとおりです。

  • wtmp

  • utmp

  • dmesg

  • メッセージ

  • maillogまたはmail.log

  • スプーラ

  • auth.logまたはsecure

wtmpファイルとutmpファイルは、システムにログインおよびログアウトするユーザーを追跡します。 catを使用してこれらのファイルの内容を直接読み取ることはできません。そのための特定のコマンドがあります。

これらのコマンドのいくつかを使用します。

Linuxサーバーに現在ログインしているユーザーを確認するには、whoコマンドを使用するだけです。 このコマンドは、/ var / run / utmpファイル(CentOSおよびDebianの場合)または/ run / utmp(Ubuntuの場合)から値を取得します。

CentOSの例を次に示します。

[root@TestLinux ~]# who  

root     tty1         2013-12-09 10:44  
root	  pts/0        2013-12-09 10:29 (10.0.2.2)  
sysadmin pts/1        2013-12-09 10:31 (10.0.2.2)  
joeblog  pts/2        2013-12-09 10:39 (10.0.2.2)  

この特定のケースでは、私がシステムの唯一のユーザーです。 Oracle VirtualBoxからサーバーを実行し、コンソールとSSHセッションの両方からrootとしてサーバーにアクセスしていました。 他の2つのユーザーアカウント(sysadminとjoebolg)もシステムにアクセスしていました。

最後のコマンドは、ユーザーのログイン履歴を示します。

[root@TestLinux ~]# last | grep sysadmin 

sysadmin pts/1        10.0.2.2         Mon Dec  9 10:31   still logged in
sysadmin pts/0        10.0.2.2         Fri Nov 29 15:42 - crash  (00:01)  
sysadmin pts/0        10.0.2.2         Thu Nov 28 17:06 - 17:13  (00:06)  
sysadmin pts/0        10.0.2.2         Thu Nov 28 16:17 - 17:05  (00:48)  
sysadmin pts/0        10.0.2.2         Thu Nov 28 09:29 - crash  (06:04)  
sysadmin pts/0        10.0.2.2         Wed Nov 27 16:37 - down   (00:29)  
sysadmin tty1                          Wed Nov 27 14:05 - down   (00:36)  
sysadmin tty1                          Wed Nov 27 13:49 - 14:04  (00:15)  

この例では、ユーザーsysadminのログイン履歴を検索しようとしています。 ご覧のとおり、彼がなんとかシステムをクラッシュさせた例がいくつかありました。

システムが最後に再起動されたのはいつかを確認するには、次のコマンドを実行します。

[root@TestLinux ~]# last reboot  

結果は次のようになります

reboot   system boot  2.6.32-358.el6.x Mon Dec  9 10:27 - 10:47  (00:19)
reboot   system boot  2.6.32-358.el6.x Fri Dec  6 16:37 - 10:47 (2+18:10)
reboot   system boot  2.6.32-358.el6.x Fri Dec  6 16:28 - 16:36  (00:08)	reboot   system boot  2.6.32-358.el6.x Fri Dec  6 11:06 - 16:36  (05:29)
reboot   system boot  2.6.32-358.el6.x Mon Dec  2 17:00 - 16:36 (3+23:36)
reboot   system boot  2.6.32-358.el6.x Fri Nov 29 16:01 - 16:36 (7+00:34)
reboot   system boot  2.6.32-358.el6.x Fri Nov 29 15:43 - 16:36 (7+00:53)
...  
...  
wtmp begins Fri Nov 15 16:11:54 2013  

誰かがシステムに最後にログインしたのはいつかを確認するには、lastlogを使用します。

[root@TestLinux ~]# lastlog 

私のシステムでは、出力は次のようになりました。

Username		Port		From			Latest  
root			tty1						Mon Dec  9 10:44:30 +1100 2013
bin                                        **Never logged in**
daemon                                     **Never logged in**  
adm                                        **Never logged in**  
lp                                         **Never logged in**  
sync                                       **Never logged in**  
shutdown                                   **Never logged in**  
halt                                       **Never logged in**  
mail                                       **Never logged in**  
uucp                                       **Never logged in**  
operator                                   **Never logged in**  
games                                      **Never logged in**  
gopher                                     **Never logged in**  
ftp                                        **Never logged in**  
nobody                                     **Never logged in**  
vcsa                                       **Never logged in**  
saslauth                                   **Never logged in**  
postfix                                    **Never logged in**  
sshd                                       **Never logged in**  
sysadmin         pts/1    10.0.2.2         Mon Dec  9 10:31:50 +1100 2013  
dbus                                       **Never logged in**  
joeblog          pts/2    10.0.2.2         Mon Dec  9 10:39:24 +1100 2013  

その他のテキストベースのログファイルの場合は、cat、head、またはtailコマンドを使用して内容を読み取ることができます。

以下の例では、Debianボックス内の/ var / log/messagesファイルの最後の10行を調べようとしています。

debian@debian:~$ sudo tail /var/log/messages

出力:

Dec 16 01:21:08 debian kernel: [    9.584074] Bluetooth: BNEP (Ethernet Emulation) ver 1.3  
Dec 16 01:21:08 debian kernel: [    9.584074] Bluetooth: BNEP filters: protocol multicast  
Dec 16 01:21:08 debian kernel: [    9.648220] Bridge firewalling registered
Dec 16 01:21:08 debian kernel: [    9.696728] Bluetooth: SCO (Voice Link) ver 0.6 
Dec 16 01:21:08 debian kernel: [    9.696728] Bluetooth: SCO socket layer initialized  
Dec 16 01:21:08 debian kernel: [    9.832215] lp: driver loaded but no devices found  
Dec 16 01:21:08 debian kernel: [    9.868897] ppdev: user-space parallel port driver  
Dec 16 01:21:11 debian kernel: [   12.748833] [drm] Initialized drm 1.1.0 20060810
Dec 16 01:21:11 debian kernel: [   12.754412] pci 0000:00:02.0: PCI INT A -> Link[LNKB] -> GSI 11 (level, low) -> IRQ 11  
Dec 16 01:21:11 debian kernel: [   12.754412] [drm] Initialized vboxvideo 1.0.0 20090303 for 0000:00:02.0 on minor 0

rsyslogデーモン

ロギングメカニズムの中心は、rsyslogデーモンです。 このサービスは、Linuxシステムのさまざまな部分からのログメッセージをリッスンし、メッセージを/ var/logディレクトリ内の適切なログファイルにルーティングする役割を果たします。 また、ログメッセージを別のLinuxサーバーに転送することもできます。

rsyslog構成ファイル

rsyslogデーモンは、構成情報を rsyslog.conf ファイル。 このファイルは/etcディレクトリの下にあります。

基本的に、rsyslog.confファイルは、ログメッセージを保存する場所をrsyslogデーモンに指示します。 この命令は、ファイル内の一連の2部構成の行から取得されます。

このファイルは次の場所にあります。 rsyslog.d/50-default.conf Ubuntuで。

2つの部分からなる命令は、セレクターアクションで構成されています。 2つの部分は空白で区切られています。

セレクター部分はログメッセージのソースと重要度を指定し、アクション部分はメッセージをどう処理するかを示します。

セレクター自体も、ドット(。)で区切られた2つの部分に分割されます。 ドットの前の最初の部分は*acility(メッセージの発信元)と呼ばれ、ドットの後の2番目の部分はpriority(メッセージの重大度)と呼ばれます。

ファシリティ/優先度とアクションのペアが一緒になって、基準に一致するログメッセージが生成されたときに何をすべきかをrsyslogに指示します。

CentOSrsyslog.confファイルからの抜粋を次に示します。

# rsyslog v5 configuration file
...  
...    
# Include all config files in /etc/rsyslog.d/  
IncludeConfig /etc/rsyslog.d/*.conf  

#### RULES ####  
# Log all kernel messages to the console.  
# Logging much else clutters up the screen.  
#kern.*  /dev/console  

# Log anything (except mail) of level info or higher.  
# Don't log private authentication messages!  
*.info;mail.none;authpriv.none;cron.none                /var/log/messages  

# The authpriv file has restricted access.  
authpriv.*                                              /var/log/secure  

# Log all the mail messages in one place.  
mail.*                                                  -/var/log/maillog  


# Log cron stuff  
cron.*                                                  /var/log/cron  

# Everybody gets emergency messages  
*.emerg                                                 *  

# Save news errors of level crit and higher in a special file.  
uucp,news.crit                                          /var/log/spooler  

# Save boot messages also to boot.log  
local7.*                                                /var/log/boot.log  
...  
...  

これが何を意味するのかを理解するために、Linuxで認識されているさまざまなタイプの機能について考えてみましょう。 リストは次のとおりです。

  • authまたはauthpriv:承認およびセキュリティ関連のイベントからのメッセージ
  • kern :Linuxカーネルからのメッセージ
  • mail :メールサブシステムによって生成されたメッセージ
  • cron :cronデーモン関連のメッセージ
  • デーモン:デーモンからのメッセージ
  • news :ネットワークニュースサブシステムからのメッセージ
  • lpr :関連するログメッセージの印刷
  • user :ユーザープログラムからのメッセージをログに記録します
  • local0からlocal7:ローカルで使用するために予約済み

そして、ここに昇順の優先順位のリストがあります:

  • debug :プログラムからのデバッグ情報
  • info :簡単な情報メッセージ-介入は必要ありません
  • 通知:注意が必要な状態
  • 警告:警告
  • err :エラー
  • クリティカル:重大な状態
  • アラート:早急な介入が必要な状態
  • emerg :緊急事態

それでは、ファイルの次の行について考えてみましょう。

cron.*				/var/log/cron    

これは、cronデーモンからのすべてのメッセージを/ var / log/cronというファイルに保存するようにrsyslogデーモンに指示するだけです。 ドット(。)の後のアステリックス(*)は、すべての優先順位のメッセージがログに記録されることを意味します。 同様に、施設がアスタリスクとして指定されている場合、それはすべてのソースを意味します。

施設と優先順位は、さまざまな方法で関連付けることができます。

デフォルトの形式では、ドットの後に指定された優先度が1つしかない場合、その優先度以上のすべてのイベントがトラップされることを意味します。 したがって、次のディレクティブを使用すると、警告以上の優先度を持つメールサブシステムからのメッセージが/ var/logの下の特定のファイルに記録されます。

mail.warn			/var/log/mail.warn  

これにより、警告の優先度以上のすべてのメッセージがログに記録されますが、その下にはすべてが残ります。 したがって、err、crit、alert、またはemergを含むメッセージもこのファイルに記録されます。

ドット(。)の後に等号(=)を使用すると、指定された優先度のみがログに記録されます。 したがって、メールサブシステムからの情報メッセージのみをトラップする場合、仕様は次のようになります。

mail.=info			/var/log/mail.info

繰り返しますが、情報メッセージを除くすべてをメールサブシステムからトラップしたい場合、仕様は次のようになります。

mail.!info			/var/log/mail.info  

また

mail.!=info			/var/log/mail.info  

最初のケースでは、mail.infoファイルにはinfoよりも低い優先度のすべてが含まれます。 2番目のケースでは、ファイルには、情報よりも優先度の高いすべてのメッセージが含まれます。

同じ行にある複数のファシリティは、コンマで区切ることができます。

同じ行にある複数のソース( facility.priority )は、セミコロンで区切られています。

アクションがアスタリスク(*)としてマークされている場合、それはすべてのユーザーを意味します。 私のCentOSrsyslog.confファイルのこのエントリは、まさに次のように言っています。

# Everybody gets emergency messages    
*.emerg                                                 *    

Linuxシステムでrsyslog.confが何を言っているかを確認してください。 これが私が実行しているDebianサーバーからの抜粋です:

#  /etc/rsyslog.conf	Configuration file for rsyslog.  
#  
#			For more information see  
#			/usr/share/doc/rsyslog-doc/html/rsyslog_conf.html  
...  
...  
auth,authpriv.*			/var/log/auth.log  
*.*;auth,authpriv.none		-/var/log/syslog  
#cron.*				/var/log/cron.log  
daemon.*			-/var/log/daemon.log  
kern.*				-/var/log/kern.log  
lpr.*				-/var/log/lpr.log  
mail.*				-/var/log/mail.log  
user.*				-/var/log/user.log  

#
# Logging for the mail system.  Split it up so that  
# it is easy to write scripts to parse these files.  
#  
mail.info			-/var/log/mail.info  
mail.warn			-/var/log/mail.warn  
mail.err			/var/log/mail.err  
#  
# Logging for INN news system.  
#  
news.crit			/var/log/news/news.crit  
news.err			/var/log/news/news.err  
news.notice			-/var/log/news/news.notice  

ご覧のとおり、Debianはすべてのセキュリティ/承認レベルのメッセージをに保存します /var/log/auth.log CentOSはそれを下に保存します /var/log/secure.

rsyslogの構成は、他のカスタムファイルから取得することもできます。 これらのカスタム構成ファイルは通常、/ etc/rsyslog.dの下の異なるディレクトリにあります。 rsyslog.confファイルには、$IncludeConfigディレクティブを使用してこれらのディレクトリが含まれています。

Ubuntuでは次のようになります。

#  Default logging rules can be found in /etc/rsyslog.d/50-default.conf  
....  
....    
$IncludeConfig /etc/rsyslog.d/*.conf  

/etc/rsyslog.dディレクトリの下の内容は次のようになります。

-rw-r--r-- 1 root root  311 Mar 17  2012 20-ufw.conf  
-rw-r--r-- 1 root root  252 Apr 11  2012 21-cloudinit.conf  
-rw-r--r-- 1 root root 1655 Mar 30  2012 50-default.conf  

これで、ログメッセージの宛先は必ずしもログファイルである必要はありません。 メッセージはユーザーのコンソールに送信できます。 この場合、アクションフィールドにはユーザー名が含まれます。 複数のユーザーがメッセージを受信する必要がある場合、それらのユーザー名はコンマで区切られます。 メッセージをすべてのユーザーにブロードキャストする必要がある場合は、アクションフィールドのアステリックス(*)で指定します。

rsyslogデーモンはネットワークオペレーティングシステムの一部であるため、ログメッセージをローカルに保存できるだけでなく、ネットワーク内の別のLinuxサーバーに転送したり、他のシステムのリポジトリとして機能したりすることもできます。 デーモンは、UDPポート514でログメッセージをリッスンします。 以下の例では、カーネルクリティカルメッセージを「texas」と呼ばれるサーバーに転送します。

kern.crit			@texas  

独自のログメッセージの作成とテスト

それでは、独自のログファイルを作成するときが来ました。

これをテストするために、次のことを行います

  • /etc/rsyslog.confファイルにログファイルの仕様を追加します

  • rsyslogデーモンを再起動します

  • ロガーユーティリティを使用して構成をテストします

次の例では、CentOSLinuxシステムのrsyslog.confファイルに2つの新しい行を追加しています。 ご覧のとおり、それぞれがlocal4という施設から来ており、優先順位が異なります。

[root@TestLinux ~]# vi /etc/rsyslog.conf  

....  
....  
  
# New lines added for testing log message generation  
   
local4.crit                                             /var/log/local4crit.log  
local4.=info                                            /var/log/local4info.log  

次に、サービスが再起動され、構成ファイルのデータが再ロードされます。

[root@TestLinux ~]# /etc/init.d/rsyslog restart  
Shutting down system logger:                               [  OK  ]  
Starting system logger:                                    [  OK  ]  
[root@TestLinux ~]#    

ここでログメッセージを生成するために、loggerアプリケーションが呼び出されます。

[root@TestLinux ~]# logger -p local4.info " This is a info message from local 4"  

/ var / logディレクトリの下を見ると、2つの新しいファイルが表示されます。

...  
...  
-rw-------  1 root root      0 Dec  9 11:21 local4crit.log  
-rw-------  1 root root     72 Dec  9 11:22 local4info.log  

local4info.logのサイズはゼロ以外です。 それで、それが開かれるとき、私はメッセージが記録されているのを見る:

[root@TestLinux ~]# cat /var/log/local4info.log  

Dec  9 11:22:32 TestLinux root:  This is a info message from local 4  

ログファイルの回転

ログファイルに書き込まれる情報が増えるにつれて、ログファイルはどんどん大きくなります。 これは明らかに潜在的なパフォーマンスの問題を引き起こします。 また、ファイルの管理が面倒になります。

Linuxは、ログファイルをパージまたは削除するのではなく、「ローテーション」するという概念を使用しています。 ログがローテーションされると、新しいログファイルが作成され、古いログファイルの名前が変更され、オプションで圧縮されます。 したがって、ログファイルには複数の古いバージョンをオンラインのままにしておくことができます。 これらのファイルは一定期間前に戻り、バックログを表します。 一定数のバックログが生成されると、新しいログローテーションによって最も古いログファイルが削除されます。

回転は、logrotateユーティリティを介して開始されます。

ログローテーション構成ファイル

rsyslogと同様に、logrotateも構成ファイルに依存し、このファイルの名前はlogrotate.confです。 /etcの下にあります。

これが私のDebianサーバーのlogrotate.confファイルにあるものです:

debian@debian:~$ cat /etc/logrotate.conf  

# see "man logrotate" for details  
# rotate log files weekly  
weekly  

# keep 4 weeks worth of backlogs  
rotate 4  

# create new (empty) log files after rotating old ones  
create  

# uncomment this if you want your log files compressed  
#compress  

# packages drop log rotation information into this directory  
include /etc/logrotate.d  

# no packages own wtmp, or btmp -- we'll rotate them here  
/var/log/wtmp {  
    missingok  
    monthly  
    create 0664 root utmp  
    rotate 1  
}  

/var/log/btmp {  
    missingok  
    monthly  
    create 0660 root utmp  
    rotate 1  
}  

# system-specific logs may be configured here  

線はかなり自明です。 デフォルトでは、ログファイルは毎週ローテーションされ、一度に4つのバックログがオンラインのままになります。 プログラムが実行されると、新しい空のログファイルが生成され、オプションで古いログファイルが圧縮されます。

唯一の例外は、wtmpファイルとbtmpファイルです。 wtmpはシステムログインを追跡し、btmpは不正なログイン試行を追跡します。 これらのログファイルは両方とも毎月ローテーションされ、以前のwtmpまたはbtmpファイルが見つかった場合でもエラーは返されません。

カスタムログローテーション構成は、etc/logrotate.dディレクトリに保持されます。 これらは、includeディレクティブとともにlogrotate.confにも含まれています。 Debianのインストールでは、このディレクトリの内容が表示されます。

debian@debian:~$ ls -l /etc/logrotate.d  

total 44  
-rw-r--r-- 1 root root 173 Apr 15  2011 apt  
-rw-r--r-- 1 root root  79 Aug 12  2011 aptitude  
-rw-r--r-- 1 root root 135 Feb 24  2010 consolekit  
-rw-r--r-- 1 root root 248 Nov 28  2011 cups  
-rw-r--r-- 1 root root 232 Sep 19  2012 dpkg  
-rw-r--r-- 1 root root 146 May 12  2011 exim4-base  
-rw-r--r-- 1 root root 126 May 12  2011 exim4-paniclog  
-rw-r--r-- 1 root root 157 Nov 16  2010 pm-utils  
-rw-r--r-- 1 root root  94 Aug  8  2010 ppp  
-rw-r--r-- 1 root root 515 Nov 30  2010 rsyslog  
-rw-r--r-- 1 root root 114 Nov 26  2008 unattended-upgrades  

rsyslogの内容は、多数のログファイルをリサイクルする方法を示しています。

debian@debian:~$ cat /etc/logrotate.d/rsyslog

/var/log/syslog  
{  
	rotate 7  
	daily  
	missingok  
	notifempty  
	delaycompress  
	compress  
	postrotate  
		invoke-rc.d rsyslog reload > /dev/null  
	endscript  
}  

/var/log/mail.info  
/var/log/mail.warn  
/var/log/mail.err  
/var/log/mail.log  
/var/log/daemon.log  
/var/log/kern.log  
/var/log/auth.log  
/var/log/user.log  
/var/log/lpr.log  
/var/log/cron.log  
/var/log/debug  
/var/log/messages  
{  
	rotate 4  
	weekly  
	missingok  
	notifempty  
	compress  
	delaycompress  
	sharedscripts  
	postrotate  
		invoke-rc.d rsyslog reload > /dev/null  
	endscript  
}  

ご覧のとおり、syslogファイルは毎日再初期化され、7日分のログがオンラインに保持されます。 他のログファイルは毎週ローテーションされます。

また、postrotateディレクティブも注目に値します。 これは、ログローテーション全体が完了した後に発生するアクションを指定します。

回転のテスト

Logrotateを手動で実行して、1つ以上のファイルをリサイクルできます。 そのためには、関連する構成ファイルをコマンドの引数として指定するだけです。

これがどのように機能するかを確認するために、テストCentOSサーバーの/ var/logディレクトリにあるログファイルの部分的なリストを次に示します。

[root@TestLinux ~]# ls -l /var/log  

total 800    
...  
-rw-------  1 root root    359 Dec 17 18:25 maillog  
-rw-------. 1 root root   1830 Dec 16 16:35 maillog-20131216  
-rw-------  1 root root  30554 Dec 17 18:25 messages  
-rw-------. 1 root root 180429 Dec 16 16:35 messages-20131216  
-rw-------  1 root root    591 Dec 17 18:28 secure  
-rw-------. 1 root root   4187 Dec 16 16:41 secure-20131216  
...  
...  

logrotate.confファイルの部分的な内容は次のようになります。

[root@TestLinux ~]# cat /etc/logrotate.conf

# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs 
rotate 4  

# create new (empty) log files after rotating old ones
create  
...  
...  

次に、logrotateコマンドを実行します。

[root@TestLinux ~]# logrotate -fv /etc/logrotate.conf    

新しいファイルが生成されたり、エラーが発生したりすると、メッセージがスクロールします。 ほこりが落ち着くと、新着メール、セキュリティで保護されたファイル、またはメッセージファイルをチェックしようとします。

[root@TestLinux ~]# ls -l /var/log/mail* 
-rw-------  1 root root    0 Dec 17 18:34 /var/log/maillog 
-rw-------. 1 root root 1830 Dec 16 16:35 /var/log/maillog-20131216  
-rw-------  1 root root  359 Dec 17 18:25 /var/log/maillog-20131217  

  
[root@TestLinux ~]# ls -l /var/log/messages*  
-rw-------  1 root root    148 Dec 17 18:34 /var/log/messages
-rw-------. 1 root root 180429 Dec 16 16:35 /var/log/messages-20131216 
-rw-------  1 root root  30554 Dec 17 18:25 /var/log/messages-20131217 


[root@TestLinux ~]# ls -l /var/log/secure*  
-rw-------  1 root root    0 Dec 17 18:34 /var/log/secure
-rw-------. 1 root root 4187 Dec 16 16:41 /var/log/secure-20131216 
-rw-------  1 root root  591 Dec 17 18:28 /var/log/secure-20131217 
[root@TestLinux ~]#  

ご覧のとおり、3つの新しいログファイルがすべて作成されています。 メールログとセキュアファイルはまだ空ですが、新しいメッセージファイルにはすでにいくつかのデータが含まれています。

最後の言葉

このチュートリアルで、Linuxロギングに関するいくつかのアイデアが得られたと思います。 自分の開発システムやテストシステムを調べて、より良いアイデアを得ることができます。 ログファイルの場所とその構成設定に慣れたら、その知識を使用して実稼働システムをサポートします。 また、これらのファイルを指すエイリアスを作成して、入力時間を節約することもできます。

提出者:Sadequl Hussain