[linux]daemontoolsの動作について


現在サーバで動作させるサービスをdaemontoolsにて管理しています
そこでひとつ気になった点があるのですが

svc -d /hoge/qmail-send

のようにqmailを停止しようとしたタイミングで
メールの送信処理中だった場合は
メール送信処理完了後にqmailは停止されるのでしょうか

もしくはこのような処理中のタイミングで
上記コマンドを用いてqmailを停止してはいけないのでしょうか

よろしくお願いします

回答の条件
  • 1人2回まで
  • 登録:2008/10/06 12:58:02
  • 終了:2008/10/07 20:14:41

回答(2件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402008/10/06 13:34:12

ポイント35pt

qmailを停止しようとしたタイミングで

メールの送信処理中だった場合は

メール送信処理完了後にqmailは停止されるのでしょうか

順番に処理を追っていこう。

The svc program

svc -d コマンドでは管理しているプロセスに TERM シグナルを送る。

この場合 TERM シグナルを受け取るのは qmail-send プロセスということになる。

ARC FAQ System : qmail reference "qmail-send (8)"

qmail-send が、TERM シグナルを受け取った場合、現在の配信の試行が終了するまで、もし可能なら1分以上、待った後に、きれいに終了します。

ということなので送信中であろうが何だろうが問題なし。


もちろんこれは管理対象のプロセス毎に異なるのでそれぞれのプログラムで確認は必要。

とはいっても、通常メジャーなアプリは TERM シグナルを受け取ると(そのプログラムにとって)安全な状態になってから終了するので、

たいていの場合問題ないが。

id:jayz

わかりやすい説明ありがとうございます

2008/10/07 20:11:14
id:angemaries No.2

angemaries回答回数80ベストアンサー獲得回数22008/10/07 01:35:52

ポイント35pt

終了時に生きている子プロセスやスレッドがあれば、それらの終了を待ってから終了するように実装するのが普通です。

ですが、無限には待てないので、タイムアウトする場合もあります。

1通のメールの送信自身は、「途中まで送信して」という状態にはなりませんので、

送ったか、送らないかのどちらかになります。

送らなかったメールは、次回起動時に送り始めるだけです。

id:jayz

ご回答ありがとうございます

qmailの場合は問題ないようですね

ただ今回例としてQMAILを出しましたが、実際に動いているのはQMAILではない独自に作ったMTAなのでその辺が実装されているか確認する必要がありますね

おそらくそのような実装はされていないとみていますが・・・

2008/10/07 20:14:12

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません