web-dev-qa-db-ja.com

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

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

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

18
Kuroki Kaze

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

/usr/bin/serviceを使用して$ Sudo service yourdaemon startを起動し、デーモンをsstop $ Sudo service yourdaemon stopで起動できます。

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

一方で、debianでは標準ではありませんが、いくつか興味深い機能がある daemontools を確認することもできます。

19
chmeee

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
Dan Andreatta

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

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

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

2
jla