dockerコンテナ内のtransmission-daemonを適切にkillするにはどうすればいいですか?


1

私はhttpsでスタンドアロンの送信デーモンをドッキングしようとしています。だから私はtransmission-daemonnginxパッケージを使用しています、そしてdockerは高山のLinuxに基づいています。

両方のプログラムを実行するために、私は使っていsupervisorます。

すべてうまくいきますが、私はそれをdocker container stop優雅に私のコンテナを殺したいです。だから、私はにsupervisorTERM信号を伝播するように設定しましたtransmission-daemon

これは、送信がアイドル状態のときにうまく機能します。しかし、何かをダウンロードしたり実行したりするときにコンテナを停止すると、残念ながらうまくいきません。ダウンロードが完了した後も実行され続けるため、シグナルを完全に無視しているように見えます。

その理由は全くわかりません。誰かが私を助けてもらえますか?

これが私のスーパーバイザー伝送設定です。

[program:transmission]
user=transmission
command=/usr/bin/transmission-daemon -f
stopsignal=TERM
stopwaitsecs=60
stopasgroup=true
killasgroup=true

私はどんな提案にもオープンです。

回答:


1

Transmission arch Wikiから、終了するコマンドは次のようになりますtransmission-daemon

killall transmission-daemon

または

$ transmission-remote --exit

またはUbuntuの助けから

transmission-remote -n 'transmission:transmission' -q

SIGTERMとTERMシグナルは同じだと思うし、killallデフォルトではSIGTERMを送信します、あなたの上司が動くべきであるように見えます...適切なタイミングで信号を送る...端末でTERM / SIGTERMが送信を中止することを確認します。そうでなければ、多分それはバグです。

それがsupervisordに何か有用なことを伝えるかどうか見るためにredirect_stderror stdout_logfile行を追加してみてください


御返答いただき有難うございます。transmission-remote --exit仕事のようです。私はそれがダウンロードするとき私が手動で伝送に信号を送るならば、私は多くのテストをやめて、問題は同じです。無視しているようです。しかし、私はArchlinuxイメージに基づいて同じテストをしました、そして、それは完全に働きます...両方のディストリビューションの伝達バージョンは同じです(2.92)。だから私はその原因はもっと複雑だと思います:AlpineとArchlinuxのシグナル管理の違いかもしれません。それは私のスキルを超えています...
lama02

1
私はアルパインにはなじみがありませんが、違いがあるはずです。わかりやすいシグナルうまくいくはずです。しかし、それがうまくいけば transmission-remote --exit、そのソースコードを調べて何--exitができるのかを正確に調べることができます。スクリプトではないのでless $(which ...)残念なほど簡単ではありません。私はアルパインの感染のバグにもっと傾いています
Xen2050

transmission-remote --exit電話をかけtr_sessionClose、きれいに送信を閉じます。TERMやINTシグナルがこの関数をどのように呼び出すのかもわかりませんが、テストで動作するとtr_sessionClose呼び出しと同じログが表示されるため、そのようなことが起こると思います。それで、あなたはそれがアルパイン送信のバグであるかもしれないと思いますか?しかし、ArchlinuxとAlpineの両方に同じバージョンがあります、どうすれば可能ですか?
lama02

1
今日までAlpine linuxのことは聞いたことがありませんが、glibcを使わずにbusybox&musl(Cライブラリ)をベースにしているようです(Debianのリポジトリではglibc6は「システム上のほぼすべてのプログラムで使われる標準ライブラリ」)何かあるかもしれません。あなたはarch&Alpineのパッケージからソースコードを比較してみることができますか?あるいは、彼らのウィキのメソッドwiki.alpinelinux.org/wiki/をHTTPで制御することを試みることができます(「transmission-daemonはlighttpdによって実行されるClutchを介して制御されます」)
Xen2050

1
それはバグのように見え、特に別のシステム上の同じバージョンでテストされたバグのように振る舞います。私はそれがバグだと思います:)これはDebianのような大きなディストリビューションの利点です。チェックのおかげで、私はあなたのバグレポートも上向きにしました。それは間違いなく役に立つ答えですから。がんばろう!
Xen2050

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