# squid This shell script takes care of starting and stopping
# Squid Internet Object Cache
#
# chkconfig: – 90 25
# description: Squid – Internet Object Cache. Internet object caching is \
# a way to store requested Internet objects (i.e., data available \
# via the HTTP, FTP, and gopher protocols) on a system closer to the \
# requesting site than to the source. Web browsers can then use the \
# local Squid cache as a proxy HTTP server, reducing access time as \
# well as bandwidth consumption.
#
#pidfile=/usr/local/squid/var/logs/squid.pid
#config=/etc/squid.conf
PATH=/usr/bin:/sbin:/bin:/usr/sbin
export PATH
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# don't raise an error if the config file is incomplete
# set defaults instead:
SQUID_OPTS=${SQUID_OPTS:-"-D"}
SQUID_PIDFILE_TIMEOUT=${SQUID_PIDFILE_TIMEOUT:-20}
SQUID_SHUTDOWN_TIMEOUT=${SQUID_SHUTDOWN_TIMEOUT:-100}
squid=/usr/local/squid/sbin/squid
squid_config=/etc/squid.conf
squid_pid=/usr/local/squid/var/logs/squid.pid
# determine the name of the squid binary
[ -f $squid ] && prog="squid"
# determine which one is the cache_swap directory
CACHE_SWAP=`sed -e 's/#.*//g' $squid_config | grep cache_dir | awk '{ print $3 }'`
[ -z "$CACHE_SWAP" ] && CACHE_SWAP=/cache
RETVAL=0
start() {
if [ ! -f $squid_config ]; then
echo "Configuration file $squid_config missing" 1>&2
exit 6
fi
if [ -z "$squid" ]; then
echo "Insufficient privilege" 1>&2
exit 4
fi
for adir in $CACHE_SWAP; do
if [ ! -d $adir/00 ]; then
echo -n "init_cache_dir $adir… "
$squid -z -f $squid_config >> /usr/local/squid/var/logs/cache.log
fi
done
echo -n $"Starting $prog: "
$squid $SQUID_OPTS -s -f $squid_config >> /usr/local/squid/var/logs/cache.log 2>&1
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
timeout=0;
while : ; do
[ ! -f $squid_pid ] || break
if [ $timeout -ge $SQUID_PIDFILE_TIMEOUT ]; then
RETVAL=1
break
fi
sleep 1
timeout=$((timeout+1))
done
fi
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
[ $RETVAL -eq 0 ] && echo_success
[ $RETVAL -ne 0 ] && echo_failure
echo
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
$squid -k check -f $squid_config >> /usr/local/squid/var/logs/cache.log 2>&1
RETVAL=$?
if [ $RETVAL -eq 0 ] ; then
$squid -k shutdown -f $squid_config &
rm -f /var/lock/subsys/$prog
timeout=0
while : ; do
[ -f $squid_pid ] || break
if [ $timeout -ge $SQUID_SHUTDOWN_TIMEOUT ]; then
echo
return 1
fi
sleep 2
timeout=$((timeout+2))
done
echo_success
echo
else
echo_failure
if [ ! -e /var/lock/subsys/$prog ]; then
RETVAL=0
fi
echo
fi
return $RETVAL
}
reload() {
$squid -k reconfigure -f $squid_config
echo -n $"reload_config $prog: "
echo_success
echo
}
restart() {
stop
sleep 5
start
}
condrestart() {
[ -e /var/lock/subsys/squid ] && restart || :
}
rhstatus() {
status $squid && $squid -k check -f $squid_config
}
probe() {
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
restart
;;
condrestart)
condrestart
;;
status)
rhstatus
;;
probe)
exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|reload|restart|condrestart}"
exit 2
esac
exit $?
注意squid相关文件的实际路径,不要原本照搬!