LinuCレベル1 101試験の例題と解説
1.03.2フィルタを使ったテキストストリームの処理
LinuCレベル1 101試験の出題範囲から、「1.03.2 フィルタを使ったテキストストリームの処理」についての例題を解いてみます。
ファイルへの出力の確認方法について学んでおきましょう。
例題
ログファイル「/var/log/message」への追記分を、リアルタイムに表示できるコマンドを選択してください。
- head -f /var/log/message
- less /var/log/message
- cat /var/log/message
- tail -f /var/log/message
※この例題は実際の試験問題とは異なります。
解答と解説
正解は、「4. tail -f /var/log/message」です。
tailコマンドは、ファイルの末尾から引数で指定された一部を出力するコマンドです。
デフォルトではファイルの末尾から10行分が出力されます。オプションを指定することで、出力する行数や文字数を指定することもできます。
利用できる主なオプションは以下の通りです。
-c | : | 引数に指定したバイト数を出力します |
-n | : | 引数に指定した行数を出力します |
-f | : | ファイルに追記されたデータを出力します |
-q | : | ファイル名を表示しません |
-v | : | 常にファイル名を表示します |
以下はtailコマンドでログを監視する例です。
# tail -f /var/log/messages
Dec 22 11:50:51 test systemd[153772]: Started Mark boot as successful after the user session has run 2 minutes.
Dec 22 11:50:51 test systemd[153772]: Reached target Timers.
Dec 22 11:50:51 test systemd[153772]: Starting D-Bus User Message Bus Socket.
Dec 22 11:50:51 test systemd[153772]: Listening on D-Bus User Message Bus Socket.
Dec 22 11:50:51 test systemd[153772]: Reached target Sockets.
Dec 22 11:50:51 test systemd[153772]: Reached target Basic System.
Dec 22 11:50:51 test systemd[153772]: Reached target Default.
Dec 22 11:50:51 test systemd[153772]: Startup finished in 32ms.
Dec 22 11:50:51 test systemd[1]: Started User Manager for UID 1002.
Dec 22 11:50:51 test systemd[1]: Started Session 54 of user test.
【※ コマンド実行時に↑ここまで(10行分)表示される】
【※ /var/log/messagesにログが追記されると以下のように出力される↓】
Dec 22 11:51:05 test systemd[1]: Created slice User Slice of UID 1000.
Dec 22 11:51:05 test systemd[1]: Starting User runtime directory /run/user/1000...
Dec 22 11:51:05 test systemd-logind[752]: New session 56 of user testuser.
Dec 22 11:51:05 test systemd[1]: Started User runtime directory /run/user/1000.
Dec 22 11:51:05 test systemd[1]: Starting User Manager for UID 1000...
Dec 22 11:51:05 test systemd[153819]: Reached target Paths.
:
:
以下はtailコマンド末尾2行だけ表示する例です。
# tail -n 2 /var/log/messages
Dec 22 11:53:39 test systemd[153819]: Started Mark boot as successful.
Dec 22 11:53:39 test systemd[153772]: Started Mark boot as successful.
このように、tailコマンドを利用することで、ファイルの末尾の情報を出力し確認することができます。
それでは、例題の選択肢について解説します。
1.head -f /var/log/message
不正解です。
headコマンドは、引数で指定されたファイルの最初の一部を出力するコマンドです。
tailコマンド同様、行数やバイト数を指定して出力することができますが、-fのオプションはありません。リアルタイムに追記された内容を表示することはできないため不正解です。
2.less /var/log/message
不正解です。
lessコマンドは、テキストを一画面ずつ表示するコマンドです。スペースキーを押すと一画面先の内容を表示できます。
しかし、追記された内容をリアルタイムに表示することはできないため不正解です。
3.cat /var/log/message
不正解です。
catコマンドは、引数に指定されたファイルの中身を出力するコマンドです。
catコマンドを実行した時点で書き込まれている中身を表示するだけで、追記された内容をリアルタイムに表示することはできないため不正解です。
4.tail -f /var/log/message
正解です。
tailコマンドに-fオプションを指定すると、ファイルに追記された内容が出力されます。これにより、ログの内容を監視したりすることができます。
ファイルの中を確認する方法は様々あります。状況に応じて使い分けられるようにしておきましょう。
例題作成者
株式会社デージーネット OSS研究室 橋本知里