• ベストアンサー

Squidの起動エラーについて

教えて下さい。 Squidをインストールしてあるサーバ(Linux AS2.1)をシャットダウンして再起動すると、以下のメッセージが出力されsquidが起動されない場合があります。(正常に起動される場合もあります) Squid is already running! Process ID 685 psコマンドで見たのですが、いませんでした。 因みに、起動コマンドは以下にしております。 $SQUID_HOME/sbin/squid –DNsY $conf >> $logdir/squid.out 2>&1 & 以上、宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

/etc/init.d以下にあったsquidのスクリプト、redhat製とは違うようですが… AS2.1だと、squid-2.4.STABLE7かと思いますが、入っているのはなんなのでしょうか? squid -vでバージョンが表示されるかと思います。 どなたかのオリジナルビルド…なのでしょうね。 /etc/init.d/squidは元々のものを改変しているようです。 AS2.1のrpmの所在は知らないので、互換のCentOS2.1のrpmを。 ftp://ftp.riken.jp/Linux/centos/2.1/source/i386/SRPMS/ に少し古いsquidのsrpmがあります。 こちらをインストールすると、squid.initというファイルがあります。 /etc/init.d/squidに配置されるファイルになります。 内容を比較されると違いが分かるでしょう。 > 以下をコメントにしているのが良くないのでしょうか? > # kill -9 `cat $logdir/squid.pid` /usr/local/squid/sbin/squid -k shutdown があるので問題ありません。 2.6系のsquidのソースを確認しましたが、killの場合だとpidファイルの削除処理は実行されないようでした。 redhat製の場合、/etc/rc0.d や/etc/rc6.d にsquidの停止用のスクリプト(正確にはシンボリックリンク)が配置され、再起動ヤャットダウン時に実行されます。 その際にstopオプション付きで/etc/init.d/squid等が実行されますが、この時にsquidはpidファイルを削除します。 無い場合は/etc/init.d/killallにより各プロセスにシグナルが送られ終了させられることになります。 /etc/init.d/squidへのシンボリックリンクを /ec/rc0.dと/etc/rc6.dの下にK25squidなどの名前で作成すればよろしいかと。 subsysにファイルが作成されたりはしないでしょうからそれでもうまくいくかは不明ですが。 redhatでのビルドとは違うので、どこまで対応できるかは不明です。

その他の回答 (1)

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

> Squid is already running! Process ID 685 > psコマンドで見たのですが、いませんでした。 pidファイルが残っていたのでは? squid.confのpid_filenameでpidファイルのファイル名(通常はフルパス)が記述されているはずです。 このファイルにpidが書き込まれているかと。 # プロセスはシグナルを送ったりするときにこのファイルを参照することがあります。 再起動の際にpidファイルが残ったままになってしまったのでしょう。 > 因みに、起動コマンドは以下にしております。 > $SQUID_HOME/sbin/squid -DNsY $conf >> $logdir/squid.out 2>&1 & redhat系ならば、/etc/init.d/以下に起動用のスクリプトが標準で入るはずですが… そちらは使用していないのでしょうか? 起動は /etc/init.d/squid start 停止は /etc/init.d/squid stop で可能かと思いますが。(pidファイル他の面倒も見てくれますよ) AS2.1は使用したことありませんが、 chkconfigコマンドで起動時にサービスを起動させるかどうかとかもコントロール出来るはずです。 squidの2.4系が入っているみたいですが、 最新のものをソースからコンパイルしたのでしょうか? # squid 3.0の最新ソースが公開さていますね。 # proxyサーバ、CentOSから玄箱ProのDebianに替えたので最新版を追ってはいませんが。

ikepee
質問者

お礼

懇切丁寧なご回答ありがとうございます。 環境等について、再度顧客先にて確認してきます。 本当にありがとうございました。

ikepee
質問者

補足

環境を確認しました。 pidファイルは現状はあるのですが、起動失敗時にあったかどうかは不明です。 起動に関しては、、/etc/init.d/配下の起動スクリプトにて起動しておりました。 起動スクリプトは以下になります。 --------------------- ここから ----------------------- #!/bin/sh # Set Env SQUID_HOME=/usr/local/squid logdir=/var/log/squid conf=$SQUID_HOME/etc/squid.conf # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 # Check that squid.conf exists. [ -f $conf ] || exit 0 # See how we were called. case "$1" in start) echo -n "Starting Squid services: " echo "Startup: `date`" >> $logdir/squid.out start=`date '+%d%H%M%S'` $SQUID_HOME/sbin/squid -DNsY $conf >> $logdir/squid.out 2>&1 & echo ;; stop) echo -n "Shutting down Squid services: " /usr/local/squid/sbin/squid -k shutdown # kill -9 `cat $logdir/squid.pid` echo ;; restart) $0 stop /bin/sleep 10 $0 start ;; *) echo "Usage: squid {start|stop|restart}" exit 1 esac --------------------- ここまで ----------------------- 以下をコメントにしているのが良くないのでしょうか? # kill -9 `cat $logdir/squid.pid` ご回答頂けると助かります。 宜しくお願いします。