2016-10-09 12 views
-1

フォルダ/etc/rc.d/init.d/の下にたくさんのサービス(bashスクリプト)を書くことができます。そして、それらはすべて次のようになります。スクリプトを呼び出す誰が、私はちょうどカーネルがこれらの起動スクリプトを呼び出し、パラメータを渡し を「開始」またはサービスが死ぬ時にどのように、私は自分のコンピュータを起動、私たちを理解していないBash initスクリプトの開始/停止/再起動/

case "$1" in 
start) echo "start" ;; 
stop) echo "stop" ;; 
restart) echo "restart" ;; 
esac 

をし、パラメータ "再起動"

誰かが私にこれを説明できますか?

ありがとうございます。

+0

あなたのシステム管理者に尋ねるか、[スーパーユーザー](http://superuser.com/tour)でお問い合わせくださいあなたの質問にディストリビューションとバージョンの名前を追加してください。 – Cyrus

+0

'init'の仕事(これらはSysV initスクリプトBTWですが、他のinitシステムはカーネルではなく後方互換性のために処理できます)。 – heemayl

+0

@Cyrusちょうど不思議なことに、なぜそうならなければならないのですか?[Unix&Linux](http://unix.stackexchange.com/)は、典型的なLinuxの 'init'関連の質問です。 – heemayl

答えて

0

あなたの配布/バージョン/構成の選択によって異なります。システムVスタイルのスタートアップファイルでのDebianの場合 は、大雑把にhttp://www.debian.org/doc/debian-policy/ch-opersys.html#s-sysvinit

に見てください、各ランレベルは、通常のファイルへのシンボリックリンクを含む、レベル2のための例のある/etc/rc2.d用のディレクトリを、持っている(スクリプト)ある時点で/etc/init.dの

で、2を水平に行くとき、次のスクリプトのループはアルファベット順に、Sで始まる名前を持つすべてのリンクの実行を開始

for s in /etc/rc2.d/S* 
do 
    $s start 
done 

走ります注文。実際にはSの後に2桁の数字が続き、実行順序が指定されます。

K *ファイルは、ランレベルを離れるときと同じです。

バックあなたの質問から

:これは/ etc/inittabファイル内のいくつかのラインの仕事である

# The default runlevel. 
id:2:initdefault: 

.... 
# /etc/init.d executes the S and K scripts upon change 
# of runlevel. 
# 
# Runlevel 0 is halt. 
# Runlevel 1 is single-user. 
# Runlevels 2-5 are multi-user. 
# Runlevel 6 is reboot. 

l0:0:wait:/etc/init.d/rc 0 
l1:1:wait:/etc/init.d/rc 1 
l2:2:wait:/etc/init.d/rc 2 
... 
0

のinitシェルスクリプトの実際の場所は/etc/init.dの下にあります。これらのスクリプトは、/etc/rc0.d、/etc/rc1.d、/etc/rc2.dなどのrcディレクトリにシンボリックリンクされています。次に、各rcn.dディレクトリ内に、ファイル名にKかSのいずれかで始まり、その後に2桁の数字が続くファイルがあります。これらは、実際のinitシェルスクリプトを指すシンボリックリンクファイルです.KはKill(つまりstop)を意味し、 "S"はStartを意味します。

例:
S19postgresql
S20clamav-freshclamを
S50saned
S70pppd-DNS
S99ondemand

関連する問題