CentOS5で、従来使ってたリモートのサーバー上のhttpdを
再起動するスクリプトが動かなくなった。
具体的に言うとhttpdの再起動をするとsshのセッションがハングしてしまう。
実際のスクリプトとは違うけど、以下の方法でも再現する。
[hogeuser@fooserver] ssh -A localhost 'sudo /etc/init.d/httpd restart'
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
↑で「OK」が返ってきたまま応答なし。
ITMediaの記事とかあって試してみたけど効果なし。
仕方が無いので色々追っかけてたのだが、どうも
/etc/init.d/functions
の "daemon" 関数においてプロセスの起動方法がCentOS4とは変わった模様。
$nice /bin/bash -c "$corelimit >/dev/null 2>&1 ; $*"
な感じで起動しているのだが、どうもこのコマンド実行(終了?)をsshが待っている模様(推測)。
なので、とりあえずは
$nice /bin/bash -c "$corelimit >/dev/null 2>&1 ; $*" > /dev/null
でやっつけ対応してみた。これだと起動した後ちゃんとsshがcloseされる。
他の起動スクリプトを試してみたところ特に問題ないようなので
とりえあずはこれでごまかそう...
再起動するスクリプトが動かなくなった。
具体的に言うとhttpdの再起動をするとsshのセッションがハングしてしまう。
実際のスクリプトとは違うけど、以下の方法でも再現する。
[hogeuser@fooserver] ssh -A localhost 'sudo /etc/init.d/httpd restart'
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
↑で「OK」が返ってきたまま応答なし。
ITMediaの記事とかあって試してみたけど効果なし。
仕方が無いので色々追っかけてたのだが、どうも
/etc/init.d/functions
の "daemon" 関数においてプロセスの起動方法がCentOS4とは変わった模様。
$nice /bin/bash -c "$corelimit >/dev/null 2>&1 ; $*"
な感じで起動しているのだが、どうもこのコマンド実行(終了?)をsshが待っている模様(推測)。
なので、とりあえずは
$nice /bin/bash -c "$corelimit >/dev/null 2>&1 ; $*" > /dev/null
でやっつけ対応してみた。これだと起動した後ちゃんとsshがcloseされる。
他の起動スクリプトを試してみたところ特に問題ないようなので
とりえあずはこれでごまかそう...