古いサーバーの手順書に「ランレベル3で起動」「/etc/init.d/httpd restart」って書いてある
今の systemctl と何が違うん?
【疑問】古いサーバーで「ランレベル3」って言われた。SysVinit のランレベル、/etc/inittab・telinit・/etc/init.d と rc の番号【LPICレベル1】
前提のおさらい。起動の最後に、カーネルが最初のプロセス init を動かして、init がサービスを順に起動する。init には SysVinit・Upstart・systemd がある
>>1
SysVinit では、どのサービスを動かすかの組み合わせを0〜6のランレベルで表す
>>3
よく問われるもの
0:停止
1(S):シングルユーザー(保守用、root だけ、ネットワークなし)
2〜5:マルチユーザー
6:再起動
>>4
2〜5の使い分けは?
>>5
ディストリビューションで違う。Red Hat 系は3がテキストのマルチユーザー、5がグラフィカル。Debian は2〜5が既定では同じ中身。試験では Red Hat 系の3と5がよく出る
>>3
起動したときのランレベルはどこで決めるん?
>>7/etc/inittab の initdefault の行。1行は id:ランレベル:動作:プロセス の形で、既定を3にするなら id:3:initdefault:
>>8
sysvinit の inittab の man の例には、ほかに si::sysinit:/etc/init.d/rcS(起動時の初期化)、l3:3:wait:/etc/init.d/rc 3(ランレベル3に入ったら rc を動かす)、ca::ctrlaltdel:/sbin/shutdown -t1 -h now(Ctrl+Alt+Del のとき)みたいな行がある。respawn は終わったらまた起動(getty など)
>>3
今のランレベルを見たり変えたりするのは?
>>10runlevel で「前 今」が出る(N 3 なら前はなしで今は3)。変えるのは telinit 1 か init 1。telinit q で inittab を読み直す
>>11
ランレベルを変えると、新しいランレベルで要らないプロセスは、まず SIGTERM、それでも残れば SIGKILL で止められる(inittab の man)
>>1
/etc/init.d/httpd restart は?
>>13
/etc/init.d/ の下にサービスごとのスクリプトがあって、start・stop・restart・status を引数に取る。service httpd restart も同じことをする
>>14
ランレベルごとに /etc/rc0.d 〜 /etc/rc6.d(Red Hat 系は /etc/rc.d/rc3.d など)があって、中は /etc/init.d/ へのシンボリックリンク。S で始まるものが start、K で始まるものが stop で呼ばれて、数字の順に動く
Debian 13 の /etc/rc2.d にも S01dbus -> ../init.d/dbus があった。スクリプトの先頭の Default-Start: 2 3 4 5 がリンクを作る目安
>>2
Upstart は?
>>16
イベントで起動する仕組みで、昔の Ubuntu などで使われてた。設定は /etc/init/ の .conf、操作は initctl。今は systemd に置き換わってる
>>2
systemd ではランレベルはどうなったん?
>>18
ターゲットが代わりをしてる。Debian 13 の systemd には runlevel3.target -> multi-user.target、runlevel5.target -> graphical.target のような別名のリンクが入ってた。0 は poweroff、1 は rescue、6 は reboot
>>15
0停止・1シングル・6再起動、既定は inittab の initdefault、変えるのは telinit、サービスは /etc/init.d と rc の S と K。systemd ではターゲットに読み替える
管理人のひとこと
- ランレベル:0 停止、1(S)シングルユーザー、2〜5 マルチユーザー(Red Hat 系は3がテキスト、5がグラフィカル。Debian は2〜5が同じ)、6 再起動。
- /etc/inittab は
id:ランレベル:動作:プロセス。既定はid:3:initdefault:。動作には initdefault・sysinit・wait・respawn・ctrlaltdel など。 runlevelは「前 今」を表示(前がなければ N)。telinit 番号かinit 番号で切り替え、telinit qで inittab を読み直す。- /etc/init.d/ のスクリプトは start・stop・restart・status を取る(
serviceコマンドでも可)。/etc/rcN.d/ の S(起動)・K(停止)+数字のリンクで順番を決める。 - Upstart は /etc/init/ と initctl。systemd ではランレベルの代わりにターゲット(runlevel3.target → multi-user.target など)。