Debianでデーモンを作成する「標準的な」方法はありますか?


17

Debianのアプリケーションからデーモンを作成する必要があります。Ubuntuの "upstart"のようなDebianの標準ツールはありますか?いくつかのオプションとpidファイルを使用してデーモンとしてプログラムを起動し、pidファイルでそれを強制終了するには、start-stopコマンドのみが必要です。

init.dを見ましたが、これらは起動時の起動用のようです。デーモンを手動で起動したい。


2
デフォルトがsysvinitからsystemdに切り替わったdebian jessieの場合、これが変更されていることに注意してください。
ジュール

debian jessieは、少なくとも/ usr / bin / serviceを使用して、何らかの下位互換性があるように見えます-upstart config(/etc/init/{service}.conf)がなく、sysvinit config(/ etc / initがある場合) d / {service})、/ usr / bin / serviceはsysvinitの下でのように/etc/init.d/{service}と対話します。
ケビン

回答:


18

/etc/init.d/skeletonDebian上のファイルに従って、デーモンを手動で作成できます。

を使用/usr/bin/serviceして、デーモンを起動$ sudo service yourdaemon startおよび停止でき$ sudo service yourdaemon stopます。

スクリプトをどの/etc/rc?.dディレクトリにもリンクしない限り、起動時にスクリプトは開始されません。

一方、daemontoolsはdebianの標準ではありませんが、いくつかの興味深い機能があります。


ありがとう。/usr/bin/service私のシステム(Debian Lenny)にはないようですが、で直接スクリプトを開始でき/etc/init.d/myservice startます。
黒木風

3
sudo invoke-rc.d yourservice start同様に使用することができます
-chmeee

それを知りませんでした。Thx
チグジー

3

Debian(およびUbuntu)にはstart-stop-daemon、initスクリプトで使用されるヘルパープログラムがあります。デーモンを起動および追跡するためのオプションがかなりあります。単にラッパーを書くことができます。例えば

case $1 in
start) start-stop-daemon --start --exec /my/exec/prog --pidfile /my/pid/file --background
       ;;
stop)  start-stop-daemon --stop --pidfile /my/pid/file 
       ;;
esac

3
それはまた、依存関係のブートへの移行に役立ちますINIT INFOパーツ含まれているので、私は、/etc/init.d/skeletonは、上記の提案を好むだろう
dpavlin

2

Debianのプロセスを適切にデーモン化するには、制御プロセスから分岐する、IOをリセットする、プロセスIDファイルを作成して再生するなど、いくつかの手順を実行する必要があります。代わりに、同じ名前のパッケージのデーモンプログラムのようなものを使用して、それを行うことができます。それがあなたがしたいことである場合、答えはここStackOverflowで見つけることができます:https : //stackoverflow.com/questions/3095566/linux-daemonize

upstartコマンドは、Debianのinvoke-rc.dコマンドまたはsysvinit-utilsパッケージのserviceコマンドに似ています。彼らは、/ etc / init.dのinitスクリプトを使用することを期待しています。パッケージ用にそれらの1つを作成し、/ etc / init.d / skeletonの例でわかるようにstart-stop-daemonプログラムを使用するのがDebianの標準です。

/etc/init.d/myserviceスクリプトを作成したからといって、自動的に起動する必要があるわけではありません。update-rc.dなどのツールを使用して、自動的に停止および開始するランレベルを調整できます。これについては、「サービスをすべてのランレベルで開始できないようにする」で詳しく説明されています

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.