クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

毎日使う Linux 3:ログとプロセス

レッスン全文をここで読めます。無料アカウントを作成すると、実際のラボで実践できます。

仮想マシンラボ読了目安 11分コマンド8個

答えはログにある

お店の支払いが、夜中の12時に動かなくなりました。だれも何もさわっていません。エンジニアが最初にするのは、支払いのプログラムが何をしたかを書いたファイルの、終わりのほうを読むことです。そこには、何が悪かったかが、時刻つきで書いてあります。

このレッスンが終わると

メモ

ログを読み、おかしな動きをするプロセスを止めることができる。

キーワード

  • ログ:プログラムが何をしたかを書き残すファイル。
  • パイプ:|。1つめのコマンドの答えを、次のコマンドに渡す。
  • プロセス:いま動いているプログラム。
  • PID:プロセスにつく番号。
  • シグナル:プロセスに送るメッセージ。たとえば「止まれ」。

ウォームアップ:すでに知っていること

メモ

頭の中で答えてみましょう。1. >> はファイルに何をしますか。2. パスとは何ですか。3. ファイルを丸ごと表示するコマンドはどれですか。このレッスンでは、ファイルの終わりだけを見るコマンドが出てきます。

はじめる前に

メモ

このレッスンの上にあるバーのラボを起動を押してください。このラボは、あなた専用の Ubuntu のマシンまるごとです。コンテナよりも、立ち上がるまで少し時間がかかります。実行ボタンを押すと、コマンドが順番にマシンのターミナルへ入力されます。「マシンはまだ起動中です」と出たら、数秒待ってからもう一度押してください。自分で入力と書かれたコマンドは、自然には終わらなかったり、途中で何かを聞いてきたりします。そのときは、バーのターミナルを開くを押して、自分で打ち込みます。

ログの終わりを読み、探す

ログの終わりが、いちばん新しい部分です。tail -n 5 は最後の5行を表示します。grep は、ある言葉を含む行だけを表示し、-c を付けると数を数えます。最後のコマンドは、パイプで3つをつなぎます。ログ全体を読み、hello の行だけを残し、新しい3行を見せます。

コマンド
tail -n 5 /var/log/test.log

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

コマンド
grep 'hello' /var/log/test.log

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

コマンド
grep -c ERROR /var/log/test.log

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

コマンド
cat /var/log/test.log | grep 'hello' | tail -n 3

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

自分で入力:ログが増えるのを見ていく

ターミナルで tail -f /var/log/test.log と打ちます。新しい行が、書かれるたびに現れます。止めるときは Ctrl+C を押します。実行ボタンは Ctrl+C を押せないので、これは自分で打ちます。ほかの人のメモで tail -200f を見かけることもあります。最後の200行を先に見せてから、続きを追います。

チェック

ヒント

ファイルの終わりだけを見るコマンドと、ある言葉を含む行だけを残すコマンドは、どれですか。答え: tail と grep です。パイプでつなぐと、ログについてのたいていの疑問に答えられます。

ファイルとコマンドを探す

find / -name 'test.log' は、マシン全体を探します。あなたが入れない場所もあるので、2>/dev/null でそのエラーメッセージを捨てます。which ls は、コマンドがどこにあるかを教えます。

コマンド
find / -name 'test.log' 2>/dev/null

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

コマンド
which ls

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

プロセスを探す

動いているプログラムをプロセスといい、番号(PID)があります。ps -ef で全部を並べ、| grep worker で、その言葉を含む行だけを残します。2行出ます。ワーカーと、いま実行した grep 自身です。pgrep -f lab-worker は番号だけを表示します。

コマンド
ps -ef | grep worker

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

コマンド
pgrep -f lab-worker

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

自分で入力:止める

上の答えから番号を読み取ります。ターミナルで、自分の番号を使って kill 1234 と打ち、もう一度 ps -ef | grep worker を実行します。ワーカーは消えています。次に、2つめのプロセスを ps -ef | grep stubborn で探し、kill と番号を打って、もう一度見ます。まだ残っています。ていねいなお願いを無視するからです。kill -9 と番号を打つと、止まります。top は、いちばん忙しいプロセスをその場で見せます。終わるときは q を押します。

よくある間違い

注意

kill -9 は、ただ強い kill だと思って、最初から使う人がよくいます。kill は、プログラムに「終わって」とお願いするので、プログラムは作業を保存して後片づけができます。kill -9 は、後片づけをさせずに、すぐに取り上げます。書きかけのファイルが残ることもあります。まず kill を使い、数秒待って、それでも止まらないときにだけ -9 を使います。

最後のチェック

ヒント

前に戻らずに答えましょう。1. tail -f はどうやって止めますか。2. 2>/dev/null は何をしますか。3. kill と kill -9 のうち、先に試すのはどちらですか。答え: Ctrl+C。エラーメッセージを捨てる。kill。

先生へ

ヒント

このレッスンは VM ラボで進めます。生徒一人ひとりに専用の Ubuntu マシンがあり、実行ボタンはそのターミナルに入力して、表示された結果を見せます。学習のポイント:1. tail と grep でログを読みます。2. find と which でものを探します。3. ps でプロセスを見つけ、kill で止めます。 よくある間違い:最初から kill -9 を使うこと。 必要なもの:ラボとブラウザー。ヒント:先生の画面で tail -f を動かして、次の行がいつ出るかをクラスに言わせましょう。 このラボにはチェックがなく、採点はしません。提出物がほしいときは、先生が自分で用意してください。

このラボとソースについて: 毎日使う Linux コマンドのラボ:エンジニアが暗記している30のコマンド

授業で教えていますか?これらのレッスンを生徒に割り当て、採点と生徒ごとのラボを使えます。