迷子のファイルを探し出せ
初段 / 目安 15分
ゆめさく商店街の事務局には、一台だけサーバーが置いてあります。町内会の会計から店舗一覧まで、商店街のこまごました書類がぜんぶこの中に入っています。面倒を見ているのは、電器店を畳んでから事務局に流れ着いた 鴫原さん です。歳のわりに端末の扱いが速く、口数は少なく、聞けばだいたい答えが返ってきます。
その鴫原さんが、今日は困った顔で椅子ごと振り返りました。
「明日の総会で配る店舗一覧、tenpo-ichiran.csv っていうんだが、置いた場所を忘れてしまった。バックアップを取ったときに整理したはずなんだが、/root にも /home にも無い。悪いが、探してくれんか」
サーバーの中は広いように見えて、書類が入りうる場所はそう多くありません。しかし「そう多くない」場所を一つずつ cd して ls して回ると、それだけで昼が終わります。全体を一度に見に行く道具があります。
障害対応の考え方
この道場は、他の道場と作りが違います。白紙から書くのではなく、すでに壊れている機械を渡されます。あなたがやることは、まず何が起きているかを調べ、それから直すことです。実務の順番そのものです。
調べるときの原則は次の通りです。手を動かす前に、今どこにいるのかを確かめること。pwd は地味ですが、迷ったときに立ち返る場所を教えてくれます。そして探すときは、当てずっぽうで潜っていくのではなく、探索そのものを機械にやらせることです。
find は、指定した場所から下を全部たどって、条件に合うものを教えてくれます。どこから探すか、何を探すかの2つを渡します。名前で探すなら -name を使います。
ターミナル
find /etc -name "hosts"ルートから探せば取りこぼしはありませんが、/proc や /sys のような機械の内部を写した場所まで舐めるので、警告が大量に流れます。読みたいものが流れて消えるときは、エラーだけ捨ててしまう手があります。
ターミナル
find / -name "探したい名前" 2>/dev/null2> は、エラーの出力先を変える書き方です。/dev/null はどこにも繋がっていない捨て場で、そこへ流したものは消えます。エラーを捨てるのは、原因を調べる場面では危険な癖ですが、探し物の最中に警告で画面が埋まるのを避けるぶんには構いません。捨ててよいのかどうかを毎回考えるのが、雑にならないコツです。
見つかったら、それが本当に探し物かを一度確かめてください。同じ名前の別のファイルが混じっていることは珍しくありません。ls -l で日付と大きさを見て、head で中身を数行だけ覗けば、たいてい見分けが付きます。
完成条件
tenpo-ichiran.csvがサーバーのどこにあるかを突き止めること- 見つけたファイルを
/root/tenpo-ichiran.csvに置くこと。元の場所から移動しても、写しを作ってもかまいません - 見つけた場所そのものを、絶対パスで
/root/basho.txtに書き残すこと。総会のあとで鴫原さんが同じ整理をやり直すための記録です
/root/basho.txt に書くのは、ファイルを見つけた元のディレクトリ、または元のファイルの絶対パスです。/root に写したあとの場所ではありません。
進め方
まず調べてください。直すのはそのあとです。手が止まったらヒントを開けます。ヒントは3段階で、①方針、②使うコマンド、③部分解の順に出ます。1つも開けずに通せたら、その問題は自分のものです。
開かずに10分粘って進まないなら、①だけ開けてください。粘る時間そのものには価値がありません。価値があるのは、自分が打ったコマンドが本当の答えを返した瞬間です。
課題
- tenpo-ichiran.csv がどこにあるかを find で突き止めること
- 見つけたファイルを /root/tenpo-ichiran.csv に置くこと
- 元あった場所の絶対パスを /root/basho.txt に書き残すこと
- 中身は元のまま。作り直しては総会の資料になりません
ヒント
前のヒントを開くと次が開きます。開かずに解けると未開封クリアです