これについてはしばらく読んだと思いますが、それがどのように行われたのか思い出せません。基本的に、/etc/init.d
には起動時に自動的に開始するサービスがあります。スクリプトを/etc/rc.d
ディレクトリにシンボリックリンクすることと関係があることを覚えていますが、現時点では思い出せません。このためのコマンドは何ですか?
私はFedora/CentOS派生物を使用していると思います。
すでに述べたように、Red Hatベースのシステムを使用している場合は、以下を実行できます。
/etc/init.d
に配置します(例:/etc/init.d/myscript
)。スクリプトの形式は次のとおりです。#!/bin/bash
# chkconfig: 2345 20 80
# description: Description comes here....
# Source function library.
. /etc/init.d/functions
start() {
# code to start app comes here
# example: daemon program_name &
}
stop() {
# code to stop app comes here
# example: killproc program_name
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
# code to check status of app comes here
# example: status program_name
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
esac
exit 0
形式はかなり標準的で、/etc/init.d
で既存のスクリプトを表示できます。次に、/etc/init.d/myscript start
またはchkconfig myscript start
のようなスクリプトを使用できます。 ckconfig
のmanページでは、スクリプトのヘッダーについて説明しています。
> This says that the script should be started in levels 2, 3, 4, and
> 5, that its start priority should be 20, and that its stop priority
> should be 80.
開始、停止、ステータスコードの例では、/etc/init.d/functions
で定義されたヘルパー関数を使用しています
スクリプトを有効にする
$ chkconfig --add myscript
$ chkconfig --level 2345 myscript on
スクリプトが実際に有効になっていることを確認します。選択したレベルが「オン」になっているはずです。
$ chkconfig --list | grep myscript
マシンが通常どのランレベルで開始するかをテストします。
runlevel
多くの場合、これは5または2です。さまざまな規則がありますが、実際に確立されたものはありません。 Ubuntuは2を使用していますが、以前使用していた以前のディストリビューションは常に使用していました
次に、initスクリプトからシンボリックリンクを作成します。多分/etc/init.d/foobar
から/etc/rc2.d/SXYfoobar
Sは、このスクリプトをこのランレベルで開始することを意味します(ここでは2)。 XYは2桁の10進数で、シーケンスに関連しており、スクリプトが開始されます。
スクリプトS45barfooの実行に依存していて、S55foofooがスクリプトに依存している場合は、45から55までのxyを選択します。等しい数の場合、ブート順序は定義されていません。
一方、Ubuntuはupstart
と呼ばれる別の起動手順に切り替えました(切り替えています)。
注:リンクは常に/etc/rcX.d
にリンクしているわけではありません-/etc/init/rcX.d
または同様のリンクである場合もありますが、/ etcの下のどこかで見つけやすいはずです。
開始スクリプトの最後に何かを開始したい場合は、/etc/rc.local
が検索対象のファイルになりますが、既に実行中のX11に依存している場合は、デスクトップ環境のautostart-optionまたは/etc/X11/Xsession.d/
上記と同様のパターン。
稼働しているネットワークに依存している場合は、別のディレクトリ(if-up.d)があり、外部USBドライブ/etc/udev/rules.d/
などのマウントされたデバイス用です。
Naftuli Tzvi Kayが上記のDebianについて尋ねたように、Debian 6以降、スクリプトには依存関係と機能を示すLSB(Linux Standards Base)ヘッダーを含める必要があります( debian wikiページを参照 )。
LSBヘッダーが存在する場合、insserv
を使用して起動プロセスにスクリプトを含めることができます( 別のdebian wikiページを参照 )。