docker使用中に困ったtailプロセス未終了事件

docker使用中に困ったtailプロセス未終了事件

発端はdockerの中で動作中のapacheログをリアルタイムに表示したことでした。

動作中のdockerへattachして、
「tail -f /var/log/apache2/ログファイル」
コマンドを実行。

そうかそうか。なるほどー
ふむふむ。

必要なのはもうわかったし、Ctrl + Cキーで・・・

(キーボー・キーボー)・・・(キーボードを押す音^^;;)
^C(Ctrl + C)

あら?

tail プロセスが終了しません!!!!!!!!

稼働中のwebサーバを止める訳にはいかない!!

検証環境ながら最初に頭を過ったのは、検証環境だからといってdockerプロセスを終了して、
docker中のwebサーバまで止める訳には行かないという、使命感でした。

どうやら、dockerの外部から稼働中のdocker内部のプロセスをOn/Offする方法は
見つからず、残念(汗)

答えは、Ctrl + ¥を押すこと!!

結論からいうと、Ctrl + ¥を押してフォアグラウンドで起動中のtailプロセスを終了することができました。

Ctrl + CとCtrl + Zを試してもどっちも効かずで、焦りましたね(汗)

ちなみに、それぞれの操作で以下のようなことが起こります。

  • Ctrl + Cを押す -> 実行中のプロセスへSIGINTを送る。デフォルトだとこれでプロセス終了。
  • Ctrl + Zを押す -> 実行中のプロセスへSIGTSTPを送る。プロセスを一時停止し、バックグラウンドへ回す。
  • Ctrl + ¥を押す -> 実行中のプロセスへSIGQUITを送る。プロセス終了。

今回のdocker環境では、SIGINTとSIGTSTPが効かなかったとのことです。

ちなみにCtrlキーとの組み合わせ設定については、以下コマンドにて確認可能です。

(以下、今回のdocker内部で実行した結果)

最後に

大した内容ではありませんが事前に知らず、障害対応中に遭遇してしまうと困りますよね。
ぜひ頭のどっかにinputして、docker運用時に困ったら思い出してもらえればと思います。

コメント