读squid启动、停止、重启脚本

4年前 (2015-12-17) Jason Liu 默认 0评论 已收录 256℃

[[email protected] Packages]# cat -n /etc/init.d/squid
1 #!/bin/bash
2 # chkconfig: - 90 25
3 # pidfile: /var/run/squid.pid
4 # config: /etc/squid/squid.conf
5 #
6 ### BEGIN INIT INFO
7 # Provides: squid
8 # Short-Description: starting and stopping Squid Internet Object Cache
9 # Description: Squid - Internet Object Cache. Internet object caching is \
10 # a way to store requested Internet objects (i.e., data available \
11 # via the HTTP, FTP, and gopher protocols) on a system closer to the \
12 # requesting site than to the source. Web browsers can then use the \
13 # local Squid cache as a proxy HTTP server, reducing access time as \
14 # well as bandwidth consumption.
15 ### END INIT INFO
16
17

读后的解释文字在原语句下面
18 PATH=/usr/bin:/sbin:/bin:/usr/sbin

定义PATH变量
19 export PATH

导出全局变量PATH
20
21 # Source function library.
22 . /etc/rc.d/init.d/functions

加载functions脚本,加载完后,里面的函数可以直接使用
23
24 # Source networking configuration.
25 . /etc/sysconfig/network

加载network文件,里面的变量可以直接使用
26
27 if [ -f /etc/sysconfig/squid ]; then

判断squid文件是否存在,如果存在就执行下面一行
28 . /etc/sysconfig/squid

加载squid文件,可以获取里面的变量
29 fi

条件判断if结束符
30
31 # don't raise an error if the config file is incomplete
32 # set defaults instead:
33 SQUID_OPTS=${SQUID_OPTS:-""}

设置变量值,如果存在就用存在的变量值,不存在就使用-后面的值
34 SQUID_PIDFILE_TIMEOUT=${SQUID_PIDFILE_TIMEOUT:-20}

同上
35 SQUID_SHUTDOWN_TIMEOUT=${SQUID_SHUTDOWN_TIMEOUT:-100}

同上
36 SQUID_CONF=${SQUID_CONF:-"/etc/squid/squid.conf"}

同上
37
38 # determine the name of the squid binary
39 [ -f /usr/sbin/squid ] && SQUID=squid

如果存在squid命令就赋值给SQUID变量
40
41 prog="$SQUID"

把SQUID的值赋值给prog变量
42
43 # determine which one is the cache_swap directory
44 CACHE_SWAP=`sed -e 's/#.*//g' $SQUID_CONF | \
45 grep cache_dir | awk '{ print $3 }'`

从变量SQUID_CONF中过滤出缓存目录名并赋值给CACHE_SWAP变量
46
47 RETVAL=0

把0赋值给RETVAL变量
48
49 probe() {

声明一个名为probe的函数
50 # Check that networking is up.
51 [ ${NETWORKING} = "no" ] && exit 1

判断变量NETWORKING的值是否为no,是的话就退出
52
53 [ `id -u` -ne 0 ] && exit 4

判断当前的用户id是不是0,不是的话就退出
54
55 # check if the squid conf file is present
56 [ -f $SQUID_CONF ] || exit 6

判断是否存在SQUID_CONF变量中的文件,不存在就退出
57 }

函数体结尾大括号
58
59 start() {

声明一个名为start的函数
60 probe

执行probe函数
61
62 parse=`$SQUID -k parse -f $SQUID_CONF 2>&1`

把后面执行结果的输出赋值给parse变量
63 RETVAL=$?

把上一次命令的执行返回值赋值给RETVAL变量
64 if [ $RETVAL -ne 0 ]; then

判断变量RETVAL是否不等于0 不等于0的话就执行下面一行语句
65 echo -n $"Starting $prog: "

echo 输出字符串
66 echo_failure

执行echo_failure函数,此函数在funtions中加载的
67 echo

输出空行
68 echo "$parse"

输出变量parse的值
69 return 1

返回1
70 fi

条件判断结束符
71 for adir in $CACHE_SWAP; do

开启一个for循环
72 if [ ! -d $adir/00 ]; then

判断是否不存在目录$adir/00,不存在的话就执行下面一行语句
73 echo -n "init_cache_dir $adir... "

echo输出字符串
74 $SQUID -z -F -f $SQUID_CONF >> /var/log/squid/squid.out 2>&1

把前面命令的执行结果追加到squid.out文件
75 fi

条件判断结束符
76 done

for循环结束符
77 echo -n $"Starting $prog: "

echo输出字符串
78 $SQUID $SQUID_OPTS -f $SQUID_CONF >> /var/log/squid/squid.out 2>&1

把前面命令的执行结果追加到squid.out文件
79 RETVAL=$?

把上一天命令的返回值赋值给RETAVAL变量
80 if [ $RETVAL -eq 0 ]; then

判断RETAVAL变量值是否等于0,是的话就执行下面语句
81 timeout=0;

把0赋值给timeout变量
82 while : ; do

开启一个while循环
83 [ ! -f /var/run/squid.pid ] || break

判断squid.pid文件是否不存在,不存在就往下执行,存在的话就退出while循环
84 if [ $timeout -ge $SQUID_PIDFILE_TIMEOUT ]; then

判断timeout变量的值是不是大于SQUID_PIDFILE_TIMEOUT变量的值,是的话就往下执行
85 RETVAL=1

把1赋值给RETVAL变量
86 break

退出
87 fi
88 sleep 1 && echo -n "."

sleep一秒就echo输出一个.
89 timeout=$((timeout+1))

timeout变量自增1
90 done

while循环结束符
91 fi
92 [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$SQUID

如果RETVAL变量等于0,就创建SQUID变量中值的文件
93 [ $RETVAL -eq 0 ] && echo_success

如果RETVAL变量等于0,就执行 echo_success函数
94 [ $RETVAL -ne 0 ] && echo_failure

如果RETVAL不等于0,就执行 echo_failure函数
95 echo
96 return $RETVAL

返回RETVAL变量中保存的值
97 }
98
99 stop() {

开机一个名为stop的函数
100 echo -n $"Stopping $prog: "

echo输出字符串
101 $SQUID -k check -f $SQUID_CONF >> /var/log/squid/squid.out 2>&1

把命令的执行输出结果追加到squid.out文件
102 RETVAL=$?

把上次命令的返回值赋值给RETVAL变量
103 if [ $RETVAL -eq 0 ] ; then

判断RETVAL变量值是否等于0,是的话就执行下面语句
104 $SQUID -k shutdown -f $SQUID_CONF &

执行命令,在后台运行
105 rm -f /var/lock/subsys/$SQUID

删除SQUID变量中值的文件
106 timeout=0

把0赋值给timeout变量
107 while : ; do

开启while循环
108 [ -f /var/run/squid.pid ] || break

判断是否存在squid.pid,存在的话就往下执行,不存在就退出
109 if [ $timeout -ge $SQUID_SHUTDOWN_TIMEOUT ]; then

判断timout变量值是否大于等于SQUID_SHUTDOWN_TIMEOUT 变量的值,是的话往下执行
110 echo
111 return 1
112 fi
113 sleep 2 && echo -n "."

sleep两秒后echo输出 .
114 timeout=$((timeout+2))

timout变量值自增2
115 done

while循环结束
116 echo_success

执行echo_success函数,次函数在funtions中定义
117 echo
118 else
119 echo_failure

执行echo_failure函数,次函数在funtions中定义
120 if [ ! -e /var/lock/subsys/$SQUID ]; then

判断是否不存在SQUID变量中值的文件,不存在的话就往下执行
121 RETVAL=0

把0赋值给RETVAL
122 else
123 rm -f /var/lock/subsys/$SQUID

删除SQUID变量中的文件
124 RETVAL=$?

把上条命令执行状态码赋值给RETVAL
125 fi
126 echo
127 fi
128 return $RETVAL

return RETVAL变量的值
129 }
130
131 reload() {

声明一个名为reload的函数
132 $SQUID $SQUID_OPTS -k reconfigure -f $SQUID_CONF

执行命令
133 }
134
135 restart() {

声明一个名为restart的函数
136 stop

执行stop函数
137 RETVAL=$?

把上条命令执行的状态码赋值给RETVAL
138 if [ $RETVAL -eq 0 ] ; then

判断RETVAL变量值是否等于0,是的话往下执行
139 start

执行start函数
140 else
141 echo "Squid failed to stop in reasonable time and therefore wasn't started."

echo 输出字符串
142 return 1

return 1
143 fi
144 }
145
146 condrestart() {

声明一个名为condrestart函数
147 [ -e /var/lock/subsys/squid ] && restart || :

判断是否存在squid文件,存在的话就执行restart函数
148 }
149
150 rhstatus() {

声明名为rhstatus的函数
151 status $SQUID && $SQUID -k check -f $SQUID_CONF

执行命令
152 }
153
154
155 case "$1" in

开启一个case语句,如果$1等于如下的值的话
156 start)

$1等于start的话
157 start

执行start函数
158 ;;

双分号,case语句固定写法,跳出case语句的意思
159
160 stop)

$1等于stop的话
161 stop

执行stop函数
162 ;;
163
164 reload|force-reload)

$1等于reload或fore-reload的话
165 reload

执行reload函数
166 ;;
167
168 restart)

$1等于restart的话
169 restart

执行restart函数
170 ;;
171
172 condrestart|try-restart)

$1等于condrestart或try-restart的话
173 condrestart

执行condrestart函数
174 ;;
175
176 status)

$1等于status的话
177 rhstatus

执行rhstatus函数
178 ;;
179
180 probe)

$1等于probe的话
181 probe

执行probe函数
182 ;;
183
184 *)

$1等于其他值的话
185 echo $"Usage: $0 {start|stop|status|reload|force-reload|restart|condrestart|try-restart|probe}"

echo输出字符串
186 exit 2

exit 退出
187 esac

case语句结束符
188
189 exit $?

退出,并把整个脚本执行的状态码赋值为上次函数调用执行后的返回值

相关推荐

嗨、骚年、快来消灭0回复。