コース一覧
Linux道場 商店街サーバー障害対応の10問
迷子のファイルを探し出せ

Linux道場 商店街サーバー障害対応の10問

Linux入門で身に付けた技を、商店街事務局のサーバー当番として試す演習専用コースです。解説はありません。障害の報告と復旧条件だけを読み、原因を自分で突き止めて直します。手が止まったときのために、方針・使うコマンド・部分解の3段階のヒントを各問に用意しています。他の道場と違い、白紙から書き始めるのではなく、すでに壊れている機械の前に座るところから始まります。ブラウザの中で本物の Debian が動いていて、打ったコマンドはそのまま本物の機械に効きます。迷子のファイル探しから始まり、ログからの原因特定、権限、ディスク不足、暴走プロセス、PATH、スクリプトの起動失敗、定期実行の停止、バックアップからの復元と進み、最後は複数の障害が同時に起きたサーバーを健全な状態まで戻します。1問15分から45分、全10問で約5時間です。Linux入門を終えて「コマンドは知っているが、壊れた機械を前にすると手が止まる」と感じている方に向いています。

1
初段
01. 迷子のファイルを探し出せ15分
02. ログから犯人を特定せよ20分
03. 開けないファイルを開けろ20分
04. ディスクを空けろ25分
2
中段
01. 暴走プロセスを止めろ25分
02. コマンドが見つからない30分
03. 動かないスクリプトを直せ30分
3
師範
01. 定期実行が動かない理由を突き止めろ30分
02. バックアップから復元せよ35分
03. 総合 サーバー健全化ミッション45分

迷子のファイルを探し出せ

初段 / 目安 15分

ゆめさく商店街の事務局には、一台だけサーバーが置いてあります。町内会の会計から店舗一覧まで、商店街のこまごました書類がぜんぶこの中に入っています。面倒を見ているのは、電器店を畳んでから事務局に流れ着いた 鴫原さん です。歳のわりに端末の扱いが速く、口数は少なく、聞けばだいたい答えが返ってきます。

その鴫原さんが、今日は困った顔で椅子ごと振り返りました。

「明日の総会で配る店舗一覧、tenpo-ichiran.csv っていうんだが、置いた場所を忘れてしまった。バックアップを取ったときに整理したはずなんだが、/root にも /home にも無い。悪いが、探してくれんか」

サーバーの中は広いように見えて、書類が入りうる場所はそう多くありません。しかし「そう多くない」場所を一つずつ cd して ls して回ると、それだけで昼が終わります。全体を一度に見に行く道具があります。

障害対応の考え方

この道場は、他の道場と作りが違います。白紙から書くのではなく、すでに壊れている機械を渡されます。あなたがやることは、まず何が起きているかを調べ、それから直すことです。実務の順番そのものです。

調べるときの原則は次の通りです。手を動かす前に、今どこにいるのかを確かめること。pwd は地味ですが、迷ったときに立ち返る場所を教えてくれます。そして探すときは、当てずっぽうで潜っていくのではなく、探索そのものを機械にやらせることです。

find は、指定した場所から下を全部たどって、条件に合うものを教えてくれます。どこから探すか、何を探すかの2つを渡します。名前で探すなら -name を使います。

ターミナル

find /etc -name "hosts"

ルートから探せば取りこぼしはありませんが、/proc や /sys のような機械の内部を写した場所まで舐めるので、警告が大量に流れます。読みたいものが流れて消えるときは、エラーだけ捨ててしまう手があります。

ターミナル

find / -name "探したい名前" 2>/dev/null

2> は、エラーの出力先を変える書き方です。/dev/null はどこにも繋がっていない捨て場で、そこへ流したものは消えます。エラーを捨てるのは、原因を調べる場面では危険な癖ですが、探し物の最中に警告で画面が埋まるのを避けるぶんには構いません。捨ててよいのかどうかを毎回考えるのが、雑にならないコツです。

見つかったら、それが本当に探し物かを一度確かめてください。同じ名前の別のファイルが混じっていることは珍しくありません。ls -l で日付と大きさを見て、head で中身を数行だけ覗けば、たいてい見分けが付きます。

完成条件

  1. tenpo-ichiran.csv がサーバーのどこにあるかを突き止めること
  2. 見つけたファイルを /root/tenpo-ichiran.csv に置くこと。元の場所から移動しても、写しを作ってもかまいません
  3. 見つけた場所そのものを、絶対パスで /root/basho.txt に書き残すこと。総会のあとで鴫原さんが同じ整理をやり直すための記録です

/root/basho.txt に書くのは、ファイルを見つけた元のディレクトリ、または元のファイルの絶対パスです。/root に写したあとの場所ではありません。

進め方

まず調べてください。直すのはそのあとです。手が止まったらヒントを開けます。ヒントは3段階で、①方針、②使うコマンド、③部分解の順に出ます。1つも開けずに通せたら、その問題は自分のものです。

開かずに10分粘って進まないなら、①だけ開けてください。粘る時間そのものには価値がありません。価値があるのは、自分が打ったコマンドが本当の答えを返した瞬間です。

課題

  1. tenpo-ichiran.csv がどこにあるかを find で突き止めること
  2. 見つけたファイルを /root/tenpo-ichiran.csv に置くこと
  3. 元あった場所の絶対パスを /root/basho.txt に書き残すこと
  4. 中身は元のまま。作り直しては総会の資料になりません

ヒント

前のヒントを開くと次が開きます。開かずに解けると未開封クリアです

①方針 当てずっぽうに cd で潜らず、探索そのものをコマンドにやらせます。ルートから下を全部たどれば取りこぼしはありません

ヒント 2ヒント 1 を開くと読めます
ヒント 3ヒント 2 を開くと読めます
  • 1. pwd で今いる場所を確かめる
  • 2. find でサーバー全体から tenpo-ichiran.csv を探す
  • 3. 見つけたディレクトリを ls -l で覗いて、本物かどうか確かめる
  • 4. ファイルを /root/tenpo-ichiran.csv に置く
  • 5. 元あった場所の絶対パスを /root/basho.txt に書き残す

3 項目で採点します