アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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/ … に少し古い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でのビルドとは違うので、どこまで対応できるかは不明です。
    • good
    • 0

> 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に替えたので最新版を追ってはいませんが。

この回答への補足

環境を確認しました。
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`

ご回答頂けると助かります。
宜しくお願いします。

補足日時:2007/12/21 13:13
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/12/20 22:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!