いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.028 / 読者数:477名

こんばんは,うすだです.

私は普段,家でも会社でも,ThinkPad をメインに使っています.
今どきのなでるマウス(タッチパッドって言うんですかね)は, どうしても馴染めません.ぽちっとしている,トラックポイントが好きなのです.
(その理由は,なでるマウスだと,絵が描きにくいからです.)

しかし,最近,トラックポイントの反応が,異様に悪くなってきました.
力いっぱい押さないと動いてくれません.移動量もいまいちです.
いつものように動かそうとすると,人差指がだんだん痛くなってきます.

なんでかなーと思って,トラックポイントのキャップを外して中を確認しようとしたら, なんと,キャップが割れていました.
今までいくつかの ThinkPad を使い続けてきましたが,キャップが割れたのは, はじめてです.

しかし,普段当たり前に存在するものが,急に使えなくなると, そのありがたみを認識することができますね. 下痢をしてトイレと仲良しになったとき, 数時間に1回トイレにいくだけの健常者をうらやましく思うのに, ちょっと似ている気がします.

というわけですので,今週は,トラックポイントのすばらしさを再認識しながら, お送りしたいと思います. (幸い,古い ThinkPad のカバーを拝借することで,今は普通に使えています.)

それでは,今日も,はりきってまいりましょう!

今週のお題 - ランレベルを理解する

まあ,特に前ふりもないまま,今週はランレベルです.(きっぱり)

ランレベルとは,OS の実行モードを表す数字です.
ランレベルには 0〜6 があり,それぞれ以下のようになっています.

  0 : 停止
  1 : シングルユーザモード(root のみ)
  2 : マルチユーザモード(ネットワークなし)
  3 : マルチユーザモード(テキストのみ)
  4 : 未使用
  5 : マルチユーザモード(X11)
  6 : 再起動

どのランレベルで実行するか,それぞれのランレベルで何を実行するか, などを決めるのは,init というプログラムです.
init は,Linux が動き出すとき,一番最初に実行されるひとです.

最初のランレベルは,/etc/inittab の最初のエントリにある,

  #
  # inittab       This file describes how the INIT process should
  #               set up the system in a certain run-level.
  (中略)
  # 
  id:5:initdefault:
     ↑ココ

これで決まります.(上記の場合,5 です)
各ランレベルで実行される処理は, /etc/rc.d/rcランレベル.d 以下にあるスクリプトで決まります. …が,ここでは説明を割愛します.
(このあたりに細工を施すと,5 なのに X が動かないようにするなどの, カスタマイズを行うことができます.
…そんな設定に意味はなさそうですが….)

さて,起動時のランレベルは /etc/inittab で決まりますが, ランレベルを変更するには,telinit コマンドを使います.

  # telinit ランレベル

例えば,今のランレベルが 5 で,GNOME 端末上で 3 にしようとして,

  # telinit 3

と実行すると,あれよあれよという間に X が終了し,3 へ移行します.

現在のランレベルを確認するには,runlevel コマンドを実行します.

  # runlevel
  N 5

2つ文字が出力されますが,前者が変更前のランレベル,後者が今のランレベルです. N は,前のランレベルが存在しないことを表します.

ところで,ランレベルは,どこに記録されているのでしょうか.
実は,/var/run/utmp のとあるエントリに記録されています.
先週ご紹介したプログラムで確認すると,

  % ./utmpshow
  (前略)
  type=1 pid=20021 line=~ id=~~ user=runlevel
          host= exit=0/0 session=0
          time=1126097148.884858 (Wed Sep  7 21:45:48 2005)
  (後略)

ut_type が 1 のエントリがあります.これです.(1 は RUN_LVL です)
このエントリの ut_pid の値に,ランレベルが記録されています.
上記の場合,20021 ですが,これを16進数に変換すると 4e35h です.
上位1バイトと下位1バイトを文字に変換すると,それぞれ N と 5 になります. runlevel の出力結果と一致しますね.

というわけで,ランレベルのご紹介でした.
普通の紹介だけでは書籍などにも載っていますので, utmp のところまでご説明してみました.
普段は役に立たない知識かもしれませんが,後輩などにうんちくをたれてみると, あなたを見る目が変わる…かもしれませんよ.(^ε^)

宿題の答え

先週の宿題は,

  utmp 構造体のメンバ ut_line に記録されるモノはなんでしょう?

でした.

はい,ひとことで言えば,端末名です.

端末とは,もともと,メインフレームなどのホストコンピュータを, 離れたところから使用するための, モニタやキーボードなどによって構成される装置です.

GNOME 端末や xterm なども,仮想的なモニタとキーボードを備えていますので, 端末と言えます.ただ,本物の端末ではありませんので, 疑似端末と呼ばれるものを使用しています.

  % who
  usu      :0       Sep  7 21:57
  usu      pts/0    Sep  7 21:58
  usu      pts/2    Sep 10 01:10
  usu      pts/4    Sep  7 23:29

who コマンドを実行したとき,2番目に出力される値が ut_line ですが, ここが pts/数字 となっているエントリが,疑似端末を使用しています.

なんだか大雑把な説明ですみません.
もっと詳しく知りたい方は,以下の,JF の Text-Terminal-HOWTO などをご覧ください.

Text-Terminal-HOWTO
http://www.linux.or.jp/JF/JFdocs/Text-Terminal-HOWTO.html

今週の宿題

今週の宿題は,こちらです.

  シングルユーザモードとマルチユーザモードの違いはなんでしょうか?

です.

今週のお題では,特に説明もなくさらっと書いてしまいましたので, ここで補足しておこうかなという魂胆です.(^ε^;

あとがき

このメルマガは,自分が今までに経験してきた, Linux のシステム管理に関するちょっとしたノウハウを, みなさんにお伝えすることを目的としています.

ですが,やはり,おぼろげにしか理解してない面というのもあるわけで, わからないときは,その都度調べてから書いています.

大抵は,Google で検索したり,man を見たり, RFC や JF のドキュメントを斜め読んだりすれば,解決します.

しかし,どうしてもわからない,ということもあります.
特に,コマンドの細かい動作などは, ドキュメントにも書いていないことが多いです.
そんなときは,ソースを見るようにしています.
例えば,runlevel コマンドのソースコードを見たいときは,以下のように, SRPM から取り出します.
(厳密には,spec ファイルを見てパッチを当てるなどすべきですが, 動作の概略を確認するだけなら,大元のソースだけで十分だと思います.)

  % rpm2cpio /foo/bar/SysVinit-2.85-5vl2.src.rpm | cpio -i
  268 blocks
  % tar xfz sysvinit-2.85.tar.gz
  % less sysvinit-2.85/src/runlevel.c

C言語なんてわからん,という方にとっては有効な手段ではありませんが, ある程度わかる方は,ひとのソースコードを見るのも勉強になりますので, 一度やってみてください.
(ちなみに,runlevel.c は,44行しかないので,わかりやすいです.)

さて,今週来週と,連休が続きますね.
納期が近いんだよー,なんて嘆かずに,せっかくの連休を満喫しましょう!
(↑あ,わたしのことでした…)

ちなみに,わたくし,来週の連休は,ひるがの高原に行く予定です.
日曜日には帰ってきていますので,来週も発行しますね.

今週も,ここまで読んでいただき,ありがとうございました.
それでは,また来週,お会いしましょう!

「いますぐ実践! Linux システム管理」の解除は,以下からどうぞ.
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは,こちらにほぼ全部そろっています.
http://www.usupi.org/sysad/backno.html

「栗日記」−旬だからか、好調に描き続けています。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本