カイワレの大冒険 Third

技術的なことや他愛もないことをたまに書いてます

今春サーバを触っていくのにびくびくしてる人が1週間ですべき7のこと

今春“プロ”グラマーになる人が、あと1週間ですべき7のこと | Act as Professional2011-03-27といったエントリがあって、自分でも書いてみたかったので書いてみる。

時間はない。されど必要最低限のことは押さえられるはず

今春入社する人でエンジニア職などに就くことが決まっているんだけど、サーバ触れることになってびくびくしてる人もいるかもしれない。
覚えられることも時間も限られているけど、これだけは覚えて欲しいってものがあるので、あくまで主観的な判断で抜粋してみる。

1. 何よりもまずログイン

DCにあるサーバでも、クラウドでも、まずログインできなきゃ始まらない。ただ、使うマシンもWindowsなのかMacなのか分からないので、まずそこを押さえる。

Windowsなら「putty」や「TeraTerm」があるし、Macだったらデフォルトで「ターミナル」を立ち上げればよいし、「iterm」などのアプリケーションを使ってもよい。

とりあえず、何十台も扱う可能性があるので、設定を多く残しておけるアプリケーションを使おう。
使うアプリが決まったら、ログインしてみる。

パスワードでログインできたら、今度は公開鍵認証にチャレンジしてみる。
まずはそこから。

2. ファイルを扱おう

GUIを使っていたらメモ帳含めエディタやプレビューなどダブルクリックでファイルが開けるような環境が整っているけど、CUIになるとそうもいかない。
ファイルを開くときは「vi」、閲覧するときは「cat」「less」など。

$ vi test.txt
$ cat test.txt
$ less test.txt

ファイル名を指定して、編集したり中身を見てみよう。
画面いっぱいに収まらない場合は、「more」や「less」を使って画面遷移したり、「grep」や「awk」「head」「tail」で絞り込むことを覚えよう。

$ cat test.txt | less (タブキーで遷移)
$ cat test.txt | grep target(targetという文字列を含む行のみ表示)
$ awk '{print $1,$3}' test.txt(※~~1行目と3行目~~1フィールド目と3フィールド目を表示。カンマとかタブとかに区切られたファイルに使うよ)
$ cat test.txt | head (text.txtの冒頭のみ)
$ tail test.txt(text.txtの末尾のみ)
> ※間違えました!!すいません!ご指摘頂きありがとうございます!

設定ファイルをいじったり、簡単なテキスト処理することは多いから、ここもはずせない。

3. ディレクトリを把握しよう

ファイルをいじれたら、今度は自分がどの場所にいて、どこの場所にあるファイルでもいじれるようにならなければならない。

そういうときに便利なのが、ディレクトリの移動ができる「cd」や、ディレクトリ内のファイル等を一覧表示してくれる「ls」、自分がどのディレクトリを操作してるか示してくれる「pwd」。

$ pwd /home/username/work
$ ls testdir dir2 test.dat
$ cd testdir
$ ls
$ cd .. (一つ上の階層に行く)

自分の好きな場所に移動して、好きなファイルを編集できるようコマンドを駆使しよう。

4. サーバの状態を把握してみよう

インフラ周りを見ることになったり、なんか処理が終わらないなと思ったら、現在のサーバの状況を把握しなければならない。

そういうときに便利なのが、どのプロセスがリソースを食ってる把握できる「top」、メモリの使用量等を把握できる「free」、秒指定してサーバの状態を見られる「vmstat」。どのプロセスが立ち上がっているか把握できる「ps」、どのポートが開放されて、セッションが維持されているのか把握できる「netstat」。

$ top
$ free
$ vmstat 1 (秒を指定する。これは1秒ごと)
$ ps aux | less (立ち上がってるプロセス表示。auxを指定することで、自分が使っている端末以外も含めて全て詳細に表示)
$ netstat -na | less(ESTABLISH含めた開放されてるポート表示。IPアドレスのままで表示する)



5. 権限をいじってみよう

色々ファイルを作っていくと、自分だけにしか表示させてはいけないファイルだったり、webサーバを実行しているユーザに所有者を変えなければいけなかったりする。
そういうときに活躍するのが、自分のユーザ名を表示する「whoami」「who」、所有者所有グループを変える「chown」、読み込み書き込み実行権限を変える「chmod」。

$ whoami testuser
$ who
testuser pts/0 Jan 1 00:00 (192.168.0.5)
$ chown user:group test.dat
$ chmod 644 test.dat
$ chmod u+r test.dat
$ ls -alF (権限等確認)

サーバにあるパスワードやログファイルなどは非常にコンフィデンシャルな情報なので、常にユーザを意識して、余分な権限などを与えないようにしよう。

6. VPSを借りる

ここまでかなり選定してコマンドなどを紹介してきたけど、やはり自らコマンドを打って覚えていくのが一番だと思う。

昔は遊んだりするためのサーバを一台用意するのも手間がかかったけど、今ならVPSがある。ひと月500~1000円ぐらいで借りられるのだから、勉強代だと思って、一台借りてみるのがいいと思う。会社が用意してくれるかもしれないし、どういうふうになるか分からないけど、社外に一つ自分が扱うサーバを持っておく、監視することはいい経験になるし、制限が少ないので、本当に色々できる。そういう投資はどんどんしていこう。

7. 人に会う準備を。しかも貪欲に。

今の時代、ぐぐったり、RSSや良書を読んでいけば、確かに情報は入ってくる。それを否定するつもりは毛頭ないし、それはやっていかなかなければならないと、他人事ではなく思う。

ただし、それ以上に重要なのが、自分がやっていく・やっていきたい分野にどういう人がいて、どういう人がゲートキーパーになっているかということを把握することだと思う。

今はかなり多くの、しかも参加しやすい勉強会が多く開かれてるし、色々な人がtwitter、ust含めたソーシャルストリームで情報発信をしている。
そんな恵まれた環境があるのだから、どんどんそういうのを活かして、実際にその人の言葉や顔を見ていくことが重要だと思う。

もちろん一週間で誰がゲートキーパーなのかを把握して、どんどん会っていくというのは無理だと思う。
それでも、自分が進むべき分野には誰がいて、どういう勉強会が開かれているのか、それぐらいは把握していこう。

そうして積極的に動いていけば必ず多くの縁ができてくるし、その分野でどういう技術が流行っているのかも分かってくる。
そうやってアンテナをはっていく準備を今のうちにしておこう。

終わりに

正直言って、上述したことをひと通りやっても、負荷対策やセキュリティ対策ができるわけではないし、ミドルウェアが動くとは思えない。
エンジニア職に就くぐらいだから、上に書いたことは全てもうやっていて、もっと詳しいことを書かないと意味ないのかもしれない。

でも、不安に思ってる人は絶対いると思うし、本当に最低限の最低限だけどこれだけはさすがに覚えておこうというのを書いたつもりだったりする。
実際業務で触っていければ否が応でも、身体に染み付いていくし、自分なりにカスタマイズして、どんどん使いやすくしていくものだと思う。
それぐらい仕事で学べることはかなり大きいと思う。

ただ、その経験を素早く吸収する意味でも自分でストレスを溜めないためにも、心の準備をしていく上でも、不安だったらちょっとやってみようよというものを書いてみました。

P.S.
コマンドはちゃんとman読んで、理解していくのが一番だよ!と自分にも言い聞かせてみる。


以下の記事もおすすめです。
インフラエンジニアがアプリエンジニアに転身するにはこの3冊を勉強すれば十分だ - カイワレの大冒険 Third