start-stop-daemon(8)

名前
start-stop-daemon - システムデーモンプログラムの起動、停止

書式
start-stop-daemon [option...] command

説明
start-stop-daemon はシステムレベルのプロセスの生成や停止を制御するために使用される。また、 適切なオプションを指定することで、実行中のプロセスを確認することができる。

注記: --pidfile を指定しない場合、start-stop-daemon は killall(1) と類似の動作を行う。start-stop-daemon は、(指定されていれば) プロセス名、uid、および gid にマッチするプロセスをプロセステーブルから検索する。--start が指定されている場合にマッチするプロセスがあれば、デーモンは起動されない。--stop が指定されていれば、マッチするプロセスすべてに TERM シグナル (もしくは --signal や --retry により指定されたシグナル) が送られる。そのため、--stop を指定されても動作しつづける必要があるような、長寿命の子プロセスを持つデーモンには、 pidfile を指定しなければならない。

コマンド

-S, --start [--] arguments
    指定されたプロセスの存在を確認する。該当するプロセスが存在する場合、 start-stop-daemon は何もせず、エラーステータス 1 を返して終了する (--oknodo が指定された場合は、0 を返す)。該当するプロセスが存在しない場合、 --exec により、もしくは --startas が指定された場合はこれにより指定される実行ファイルを起動する。コマンドライン上で -- 以降に与えられた任意の引数は起動されるプログラムにそのまま引き渡される。

-K, --stop
    指定されたプロセスの存在を確認する。該当するプロセスが存在する場合、 start-stop-daemon は --signal により指定されたシグナルをそのプロセスに送り、エラーステータス 0 を返して終了する。該当するプロセスが存在しない場合、 start-stop-daemon はエラーステータス 1 を返して終了する( --oknodo が指定された場合は 0 を返す)。--retry を指定した場合、start-stop-daemon はそのプロセスが終了したことを確認する。

-T, --status
    指定されたプロセスの存在を確認し、LSB の Init Script Action に基づいた終了ステータスを返却する。

-H, --help
    使用方法に関する情報を表示し、終了する。

-V, --version
    バージョンと著作権に関する情報を表示し、終了する。

マッチ用オプション

-p, --pidfile pid-file
    プロセスが pid-file を作成したかどうかをチェックする。このオプションを単体で使用した場合、以前のプロセスが pid-file を削除できないまま終了してしまった際に、意図しないプロセスが動作中であると判断される場合があるため留意すること。

-x, --exec executable
    プロセスが指定した executable のインスタンスであるかどうかをチェックする。executable 引数は絶対パス名であること。インタプリタ型のスクリプトに対して指定した場合、executable はインタプリタ自体を指してしまうため、期待する動作とならない点に留意すること。chroot 内で動作しているプロセスもマッチしてしまうため、これ以外の制約との組み合わせが必要となる点に注意すること。

-n, --name process-name
    プロセスが process-name であるかどうかをチェックする。process-name は通常プロセスのファイル名であるが、プロセス自身によって変更することも可能である。大半のシステムにおいて、この情報はカーネル内の process comm name から取得されるため、比較的短い名称である必要がある (15 文字を超える名称は移植性がないと判断される)点に留意すること。

-u, --user username|uid
    プロセスが username もしくは uid で指定されたユーザの所有となっているかをチェックする。このオプションを単体で用いた場合、指定されたユーザの所有するすべてのプロセスが合致するかをチェックする点に留意すること。

オプション

-g, --group group|gid
    プロセスを開始する時点で、group や gid を変更する。

-s, --signal signal
    --stop と同時に指定することで、プロセスを停止するために送信するシグナルを指定する (デフォルトは TERM)。

-R, --retry timeout|schedule
    --stop と同時に指定することで、start-stop-daemon にプロセスの終了を確認させる。これにより、マッチした実行中のプロセスが全て終了するまで繰り返し確認が行われる。プロセスが終了しなければ、スケジュールにより指定されたアクションが実行される。 schedule のかわりに timeout が指定されている場合、 signal/timeout/KILL/timeout スケジュールが使われる。ここで signal は --signal で指定されるシグナルである。 スケジュール schedule は、スラッシュ (/) で区切られた少なくとも 2 つの要素からなるリストである。それぞれの要素は、-signal-number もしくは [-]signal-name の場合は送るべきシグナル、 timeout の場合はプロセスが終了するのを待つ秒数、 forever の場合は必要な限り、残りの schedule を繰り返し適用することを意味する。 schedule が終了し、forever が指定されていない場合、 start-stop-daemon はエラー状態 2 で終了する。schedule が指定されている場合、--signal で指定したシグナルは無視される。

-a, --startas pathname
    --start と同時に指定することで、pathname により指定されるプロセスを起動する。このオプションが指定されない場合、 --exec に与えられる引数がデフォルトになる。

-t, --test
    実行しようとする処理内容を出力し，それに伴い適切な返り値が設定されるが、実際の処理は行わない。

-o, --oknodo
    処理が何も行われない (又は、行なわれないと想定される) 場合、終了ステータス 1 のかわりに 0 を返す。

-q, --quiet
    情報メッセージを出力しない。エラーメッセージのみ出力する。

-c, --chuid username|uid[:group|gid]
    プロセスを起動する前に指定されたユーザ名やユーザ ID に変更する。 : に続いてグループ名またはグループ ID を与えることによりグループも指定できる。これは `chown' コマンドと同じ書式 (user:group) である。ユーザ名のみを指定した場合、そのユーザのプライマリグループの GID が用いられる。このオプション ( : 書式) を使用した時には、 --group オプションが指定されていない場合であっても、指定された場合と同様にプライマリグループと補助グループが設定されることを認識しておく必要がある。--group オプションは、(あるプロセスについて nobody のような汎用のユーザをグループに追加するといった) ユーザが通常メンバとなっていないグループを指定する場合にのみ使用する。

-r, --chroot root
    プロセスを起動する前に、root に対して chdir と chroot を実行する。pidfile は chroot 後に、書き出されることに注意すること。

-d, --chdir path
    プロセスを起動する前に、path に chdir する。-r|--chroot オプションを同時に指定した場合は、chroot の後に chdir する。そうでない場合、start-stop-daemon は、プロセスを起動する前に root ディレクトリに chdir する。

-b, --background
    通常、自身をデタッチできないプログラムで使用される。このオプションを指定した場合、 start-stop-daemon は自身を対象プロセスの起動前に fork し、以後バックグラウンドで実行させる。 警告: start-stop-daemon は いかなる理由によってプロセスの起動に失敗した場合であっても、その終了ステータスをチェックできなくなる。このオプションは最終手段であり、自身の fork に意味のないプログラムや、fork を自身で行うためのコード追加が現実的でないプログラム以外での使用を意図していない。

-C, --no-close
    デーモンにバックグラウンドでの動作を強制する際に、ファイルディスクリプタのクローズを一切行わない。プロセスの出力を参照する、ファイルディスクリプタの出力をプロセスの出力をロギングするためにリダイレクトするといったデバッグ目的で使用される。--background を指定した際にのみ有効である。

-N, --nicelevel int
    プロセスを起動する前にプロセスのプライオリティを変更する。

-P, --procsched policy:priority
    プロセスを起動する前に、スケジューラのポリシーと優先順位を変更する。優先順位の指定は任意であり、: に続いて値を設定することで指定する。デフォルトの priority は 0 である。現在サポートされているポリシーの値は other, fifo, rr である。

-I, --iosched class:priority
    プロセスを起動する前に、IO スケジューラのクラスと優先順位を変更する。優先順位の指定は任意であり、: に続いて値を設定することで指定する。デフォルトの priority は 4 であるが、class が idle の場合の priority は常に 7 となる。現在サポートされている class の値は idle, best-effort, real-time である。

-k, --umask mask
    プロセスを起動する前にプロセスの umask を設定する。

-m, --make-pidfile
    自分自身で PID ファイルを作成しないプログラムを起動する際に使用する。このオプションにより、プロセスの起動直前に start-stop-daemon は --pidfile で参照されるファイルを作成し、pid の値を格納する。このファイルはプログラムの停止時に削除されないことに注意。注記: このオプションは動作しない場合がある。特に、プログラムの実行時にそのメインのプロセスから fork するようなプログラムでは正しく動作しない。このため、通常は --background オプションと併用する場合にのみ有用である。

-v, --verbose
    詳細な情報を出力する。

終了ステータス

0   指定されたアクションが実行された。--oknodo が指定された場合、何も行われなかった場合も意味する。これは、--start が指定されたがマッチするプロセスが実行されていた場合、--stop が指定されたがマッチするプロセスが存在しなかった場合に発生しうる。

1   --oknodo が指定されなかった場合に、何も行われなかった。

2   --stop および --retry が指定されたが、規定時間の最後まで到達したにも関わらず、プロセスがまだ実行されている。

3   その他のエラー。

--status コマンドを実行した際には、以下の戻り値が返される:

0   プログラムは実行中である。

1   プログラムは実行中でないが、pid ファイルが存在している。

3   プログラムは実行中でない。

4   プログラムの状況を確認できない。

例
既に実行中でない場合に、food デーモンを (プロセス名 food、実行ユーザ food 、PID 情報を food.pid に格納で) 起動する。

    start-stop-daemon --start --oknodo --user food --name food \
    	--pidfile /run/food.pid --startas /usr/sbin/food \
    	--chuid food -- --daemon

food に SIGTERM を送信し、停止するまで 5 秒間待機する:

    start-stop-daemon --stop --oknodo --user food --name food \
    	--pidfile /run/food.pid --retry 5

food 停止のためのカスタムスケジュールのデモ:

    start-stop-daemon --stop --oknodo --user food --name food \
    	--pidfile /run/food.pid --retry=TERM/30/KILL/5

翻訳者
高橋 基信 <monyo@monyo.com>. 喜瀬 浩 <kise@fuyuneko.jp>. 関戸 幸一 <sekido@mbox.kyoto-inet.or.jp>. 鍋谷 栄展 <nabe@debian.or.jp>. 倉澤 望 <nabetaro@debian.or.jp>. 石川 睦 <ishikawa@linux.or.jp>. 鵜飼 文敏 <ukai@debian.or.jp>. 中野 武雄 <nakano@apm.seikei.ac.jp>.

翻訳校正
Debian JP Documentation ML <debian-doc@debian.or.jp>.