ちょっとLinuxのサーバーログを調べるときに使うコマンド
Linuxのログファイルで主になるのが/var/log/messages
になります。
リアルタイムでログを監視
tail -f
を使用することで確認できます。
tail -f /var/log/messages
終了はCtrl+c
で行います。
ログファイルから特定のメッセージのみを調査したい
grep
を使用することで確認できます。
下記の例はoom-killer
によりプロセスが強制終了したときのログのみを表示させています。
[root@server ~]# grep oom-killer /var/log/messages Sep 7 09:05:47 server kernel: SysMonMgr invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0 Sep 7 09:35:57 server kernel: SysMonMgr invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0 Sep 7 09:45:42 server kernel: SysMonMgr invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0 Sep 7 09:58:31 server kernel: SysMonMgr invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0 Sep 7 09:58:33 server kernel: postgres invoked oom-killer: gfp_mask=0x200da, order=0, oom_score_adj=0
oom-killer
により強制終了した09:05:47
のログを抽出して見ます。
[root@server ~]# grep 09:05:47 /var/log/messages Sep 7 09:05:47 server kernel: SysMonMgr invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0 Sep 7 09:05:47 server kernel: SysMonMgr cpuset=/ mems_allowed=0 Sep 7 09:05:47 server kernel: CPU: 2 PID: 230184 Comm: SysMonMgr Not tainted 3.10.0-327.el7.x86_64 #1 Sep 7 09:05:47 server kernel: Hardware name: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS Hyper-V UEFI Release v4.0 12/17/2019 Sep 7 09:05:47 server kernel: ffff880b78b42280 00000000fdacee5d ffff88070ccdbb00 ffffffff816351f1 Sep 7 09:05:47 server kernel: ffff88070ccdbb90 ffffffff81630191 ffff880a372069f0 ffff880a37206a08 Sep 7 09:05:47 server kernel: ffffffff00000202 fffeefff00000000 0000000000000001 ffffffff81128803 Sep 7 09:05:47 server kernel: Call Trace: Sep 7 09:05:47 server kernel: [<ffffffff816351f1>] dump_stack+0x19/0x1b Sep 7 09:05:47 server kernel: [<ffffffff81630191>] dump_header+0x8e/0x214 Sep 7 09:05:47 server kernel: [<ffffffff81128803>] ? delayacct_end+0x63/0xb0
強制終了の原因は、SysMonMgr cpuset=/ mems_allowed=0
より、メモリ不足によるものだとわかります。