Tips記事
» 2002年04月03日 00時00分 UPDATE

sshのログオフでフリーズしてしまう

[木田佳克,ITmedia]

 使用している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されてしまうため,利用環境によっては不具合が起こってしまうことに注意したい。

$ vi ~/.bashrc
# .bashrc

# User specific aliases and functions
shopt -s huponexit

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

 上記,黄色文字列のように追加しよう。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ