http://www.debian-administration.org/articles/28からの抜粋は、あなたの質問に答えているようです。
注:以下のスクリプト例では、「start)
」セクションに呼び出しを追加して、実際にプログラムを起動します。システムを再起動せずにスクリプトの機能をテストできます。フルパスで呼び出して、パラメータに「start
」または「stop
」を指定します
ここに行く:
Debianは、システムのランレベルが変更された場合(ブートアップ時やシャットダウン時など)にコマンドを実行するために、initシステムのようなSys-Vを使用します。
マシンの起動時に開始する新しいサービスを追加する場合は、必要なスクリプトをディレクトリに追加する必要があります/etc/init.d/
。そのディレクトリに既に存在するスクリプトの多くは、あなたができることの種類の例を提供します。
これは非常に単純なスクリプトで、2つの部分に分かれています。常に実行されるコードと、「start」または「stop」で呼び出されたときに実行されるコードです。
#! /bin/sh
# /etc/init.d/blah
#
# Some things that run always
touch /var/lock/blah
# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting script blah "
echo "Could do more here"
;;
stop)
echo "Stopping script blah"
echo "Could do more here"
;;
*)
echo "Usage: /etc/init.d/blah {start|stop}"
exit 1
;;
esac
exit 0
ファイルを正しい場所に保存したら、「chmod 755 /etc/init.d/blah
」を実行して実行可能であることを確認します。
次に、適切なシンボリックリンクを追加して、システムがダウンまたは起動したときにスクリプトを実行する必要があります。
これを行う最も簡単な方法は、Debian固有のコマンドを使用することupdate-rc.d
です:
root@skx:~# update-rc.d blah defaults
Adding system startup for /etc/init.d/blah ...
/etc/rc0.d/K20blah -> ../init.d/blah
/etc/rc1.d/K20blah -> ../init.d/blah
/etc/rc6.d/K20blah -> ../init.d/blah
/etc/rc2.d/S20blah -> ../init.d/blah
/etc/rc3.d/S20blah -> ../init.d/blah
/etc/rc4.d/S20blah -> ../init.d/blah
/etc/rc5.d/S20blah -> ../init.d/blah
start-stop-daemon
より適切に処理するので、単に「&」をバックグラウンドに使用することはお勧めしません(ただし、プログラム自体がデーモン化することが望ましい)。どのディストリビューションを使用していますか?デスクトップMIMEタイプ以外では、* nixではファイル拡張子は無意味であり、実行可能ファイルにはファイル拡張子がないことが推奨されます。