Linuxエンジニア

Hadoop仕事するようになってからLinux触る機会が増えた気がしていて、オレもちょっとしたLinuxエンジニアになってきたかなあと思い始めた今日この頃です。

普段仕事で使っているマシンは現場は変わっても入社以来ずっとWindows XPだし、Eclipse立ち上げてJavaをピヨピヨ書いてる分にはLinuxはほとんど触らないです。

そういう環境だと結合試験環境にデプロイするときにLinuxをちょっと触るぐらいなので、cdとかlsとかその辺のコマンドだけ知っていればまあ事足りちゃうんですよね。

でもHadoop仕事の前辺りからviでシェルスクリプト書く機会があったり、Hadoopインフラの仕事ではkickstartファイルいじったりと以前より進んだことをやるようになりました。

現場によってはアプリケーション開発者を外注で集める場合にLinux使える開発者が少ないという話も聞きますがどうなんでしょうね。レベルにもよるか。

Linux使えるっていってもいろんなレベルがあると思うのでざっくり区分けするとこんな感じですかねー

・初級レベル
cd, lsといった基本的なコマンドは使える。viでの簡単なファイル編集作業もできる。シェルスクリプトもまあ書ける。パーミションも理解しているので、Permission deniedと言われても落ち着いて対処できる。SSHも使える。

・中の下レベル
service ○○ start辺りのchkconfig、起動スクリプトの仕組みを理解している。EPELなどのyumリポジトリの追加ができる。

・中レベル
kickstartによる自動インストール環境の構築を行える。つまりDHCPサーバやyumリポジトリの構築もできる。DNSFTPなどのメジャーなサーバーソフトウェアの構築ができる。

・中の上レベル
パフォーマンスチューニング的なことができる。topコマンドやvmstatコマンドなどを用いて問題となっているプロセスを特定できCPUネックなのかIOネックなのかも判断できる。カーネルパラメータの調整もできる。起動スクリプトも書ける。

・上級レベル
カーネル再構築ができる。Linuxがどのように起動できるか語れる。vmlinuzとかinitrdが何なのかも語れる。いざとなったらカーネルのソースも読めちゃう。


僕自身は中レベルぐらいだと思います。長らく中の下レベルだったのがここ数ヶ月で中レベルに上がった感じですね。DBエンジニアとかインフラエンジニアの方は中の上レベルの人が多いのかなあという気がしてます。


仕事で使っているからという理由以外にLinuxに興味を持ったのはこの本の影響も少しありますね。4章は面白いです。Linuxカーネルのソース読んでtopコマンドのload averageが何かを解析しています。対象はカーネル2.6.23のソースです。

[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)

[24時間365日] サーバ/インフラを支える技術 ?スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)


この本に関連してLinuxカーネルのソースの読み方に関して下記スライドと動画が上がっています。こちらも参考になります。



ここでも紹介されている下記書籍はオライリーの半額キャンペーンのときに買ったきり積読だったのですがこの機会にちょっと読んでみました。ええ、よく眠れますw

詳解 Linuxカーネル 第3版

詳解 Linuxカーネル 第3版

ついでに下記2冊も見てみましたがどっちも難しいですねえ。Linuxカーネル解読室の方の対象はカーネル2.6.15のソースです。Linuxカーネル解析入門の方はctagsの使い方とか書いてありますがかなりハードウェア寄りな感じですね。こちらの対象はカーネル2.6.36のソースです。

Linuxカーネル2.6解読室

Linuxカーネル2.6解読室

Linuxカーネル解析入門 (I・O BOOKS)

Linuxカーネル解析入門 (I・O BOOKS)


入門書より一歩進んでいるけどカーネルソースには踏み込まない下記3冊もついでに眺めています。

Linuxエンジニア養成読本 [仕事で使うための必須知識&ノウハウ満載!] (Software Design plus)

Linuxエンジニア養成読本 [仕事で使うための必須知識&ノウハウ満載!] (Software Design plus)

プロのための Linuxシステム構築・運用技術 (Software Design plus)

プロのための Linuxシステム構築・運用技術 (Software Design plus)

Linuxカーネル Hacks ―パフォーマンス改善、開発効率向上、省電力化のためのテクニック

Linuxカーネル Hacks ―パフォーマンス改善、開発効率向上、省電力化のためのテクニック

Linuxは使う機会は多いと思うので知っていて損はしないだろうし、いろいろ調べようかなと思ってます。