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>.