SSH終了時のハングアップ対策

http://www.openssh.com/ja/faq.html#3.10
使用しているOpenSSHのバージョンによっては,バックグラウンドでプロセスが動作している条件下で,ログオフ(exit)したつもりがTeraTermなどが自動的に終了しない(sshがログオフしない)場合がある。
自分の環境が該当するかは,sshでログインしてから次のように入力してみよう。

$ sleep 20 & exit

この際に,20秒待ってからログオフされた場合には該当する環境だと思ってよいだろう。使用しているのがbashシェル(2.0)であれば,次のように実行してみよう(確認するには,$ bash –helpなど)。

$ shopt -s huponexit
$ sleep 20 & exit

今度はすぐにログオフされたはずだ。このshopt(shell option)設定をシェルの設定ファイルに追加しておけば解決できる。この設定内容を要約すると,「~/.bashrc」ファイルに「shopt -s huponexit」(パス指定は必要ない)といった行を追加することで,稼働中のジョブが終了する際にHUPシグナルが発行され,exitの実行優先順位が高くなるのだ。ただし,子プロセスもHUPされてしまうため,利用環境によっては不具合が起こってしまうことに注意したい。
~/.bashrcに

# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
# User specific aliases and functions
shopt -s huponexit #←追加

と追加することで対処してみた。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です