- #!/bin/bash
- # 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: /var/run/squid.pid
- # config: /etc/squid/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}
- # determine the name of the squid binary
- [ -f /usr/local/squid/sbin/squid ] && SQUID=/usr/local/squid/sbin/squid && SQUID_id=squid
- prog="$SQUID"
- # determine which one is the cache_swap directory
- CACHE_SWAP=`sed -e 's/#.*//g' /usr/local/squid/etc/squid.conf | \
- grep cache_dir | awk '{ print $3 }'`
- [ -z "$CACHE_SWAP" ] && CACHE_SWAP=/usr/local/squid/var/cache
- RETVAL=0
- start() {
- #check if the squid conf file is present
- if [ ! -f /usr/local/squid/etc/squid.conf ]; then
- echo "Configuration file /usr/local/squid/etc/squid.conf missing" 1>&2
- exit 6
- fi
- . /etc/sysconfig/squid
- # 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}
- 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 -D >> /usr/local/squid/var/logs/squid.out 2>&1
- fi
- done
- echo -n $"Starting $prog: "
- $SQUID $SQUID_OPTS >> /usr/local/squid/var/logs/squid.out 2>&1
- RETVAL=$?
- if [ $RETVAL -eq 0 ]; then
- timeout=0;
- while : ; do
- [ ! -f /usr/local/squid/var/run/squid.pid ] || break
- if [ $timeout -ge $SQUID_PIDFILE_TIMEOUT ]; then
- RETVAL=1
- break
- fi
- sleep 1 && echo -n "."
- timeout=$((timeout+1))
- done
- fi
- [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$SQUID_uid
- [ $RETVAL -eq 0 ] && echo_success
- [ $RETVAL -ne 0 ] && echo_failure
- echo
- return $RETVAL
- }
- stop() {
- . /etc/sysconfig/squid
- # don't raise an error if the config file is incomplete.
- # set defaults instead:
- SQUID_SHUTDOWN_TIMEOUT=${SQUID_SHUTDOWN_TIMEOUT:-100}
- echo -n $"Stopping $prog: "
- $SQUID -k check >> /usr/local/squid/var/logs/squid.out 2>&1
- RETVAL=$?
- if [ $RETVAL -eq 0 ] ; then
- $SQUID -k shutdown &
- rm -f /var/lock/subsys/$SQUID_id
- timeout=0
- while : ; do
- [ -f /usr/local/squid/var/run/squid.pid ] || break
- if [ $timeout -ge $SQUID_SHUTDOWN_TIMEOUT ]; then
- echo
- return 1
- fi
- sleep 2 && echo -n "."
- timeout=$((timeout+2))
- done
- echo_success
- echo
- else
- echo_failure
- if [ ! -e /var/lock/subsys/$SQUID_id ]; then
- RETVAL=0
- fi
- echo
- fi
- return $RETVAL
- }
- reload() {
- . /etc/sysconfig/squid
- # don't raise an error if the config file is incomplete.
- # set defaults instead:
- SQUID_OPTS=${SQUID_OPTS:-"-D"}
- $SQUID $SQUID_OPTS -k reconfigure
- }
- restart() {
- stop
- start
- }
- condrestart() {
- [ -e /var/lock/subsys/squid_id ] && restart || :
- }
- rhstatus() {
- status $SQUID_id && $SQUID -k check
- }
- 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 $?