squid常用操作命令
本文叫做《squid常用操作命令》,其实这个叫法是不准确的。squid软件的最常用的两个命令是squid和squidclient ,而本文主要是介绍squid命令的用法。所以准确的说,本文称之为squid命令用法详解更恰当。之所以仍保留这个标题,是我想另外再增加常用关于日志查看的总结。
一、squid命令
平时常用的squid的常用操作有八个(该版本也是网上来回转载较多的):
1、初始化squid.conf 里配置的cache目录
1/App/squid/sbin/squid -z //初始化缓存空间
如是想观察整个过程,请增加-X参数,即:squid -zX 。如果有错误提示,请检查你的 cache目录的权限。
2、对squid.conf排错,即验证squid.conf的语法和配置。
1/App/squid/sbin/squid -k parse
如果squid.conf 有语法或配置错误,这里会返回提示。如果没有返回,恭喜,可以尝试启动squid。
3、在前台启动squid,并输出启动过程。
1/App/squid/sbin/squid -N -d1
如果有到 ready to server reques,恭喜,启动成功。然后 ctrl + c,停止squid,并以后台运行的方式启动它。
4、启动squid在后台运行。
1/App/squid/sbin/squid -s
启动squid,并将日志记录到syslog进程。
5、停止 squid
1/App/squid/sbin/squid -k shutdown
最安全的停止squid的方法,另外还有 -k interrupt 与-k kill命令也用于关闭squid,其之间的区别会在squid的参数中讲到。
6、重引导修改过的 squid.conf
1/App/squid/sbin/squid -k reconfigure //载入新的配置文件
这个估计用的时候比较多,当你发现你的配置有不尽你意的时候,可以随时修改squid.conf,然后别忘记对你的 squid.conf排错,然后再执行此指令,即可让squid重新按照你的 squid.conf 来运行。
7、轮循日志
1/App/squid/sbin/squid -k rotate
每次执行squid -k rotate时,Squid轮循下列文件:cache.log, access.log, store.log, useragent.log (假如已激活), 以及referer.log (假如已激活)。同时,Squid也会创建最新版本的swap.state文件。然而请注意,swap.state不会以数字扩展形式来轮转。
另外,要特别提示一下swap.state文件。当squid应用运行了一段时间以后,cache_dir对应的swap.state文件就会变得越来越大,里面的无效接口数据越来越多,这可能在一定程度上影响squid的响应时间,此时我们可以使用rotate命令来使squid清理swap.state里面的无效数据,减少swap.state的大小。
8、把squid添加到系统启动项
编辑 /etc/rc.d/rc.local 添加如下行:
1/App/squid/sbin/squid -sD
注:当然我们也可以简单的使用squid所在的绝对路径启用squid,如/App/squid/sbin/squid 。
看完了常见的操作,再追根溯源的看下原生态的squid命令本身都提供了那些参数。如下:
1[root@361way]$ squid -h
2Usage: squid [-hvzCDFNRYX] [-d level] [-s | -l facility] [-f config-file] [-u port] [-k signal]
3 -d level Write debugging to stderr also.
4 -f file Use given config-file instead of /etc/squid/squid.conf
5 -h Print help message.
6 -k reconfigure|rotate|shutdown|interrupt|kill|debug|check|parse
7 Parse configuration file, then send signal to
8 running copy (except -k parse) and exit.
9 -s | -l facility
10 Enable logging to syslog.
11 -u port Specify ICP port number (default: 3130), disable with 0.
12 -v Print version.
13 -z Create swap directories
14 -C Do not catch fatal signals.
15 -D Disable initial DNS tests.
16 -F Don't serve any requests until store is rebuilt.
17 -N No daemon mode.
18 -R Do not set REUSEADDR on port.
19 -S Double-check swap during rebuild.
20 -X Force full debugging.
21 -Y Only return UDP_HIT or UDP_MISS_NOFETCH during fast reload.
具体每个参数的作用如下(以下部分参照彭勇华译的squid权威指南第五章,略作改动,加了一些自己的看法):
- -a port 指定新的http_port值。该选项覆盖了来自squid.conf的值。然而请注意,你能在squid.conf里指定多个值。-a选项仅仅覆盖配置文件里的第一个值。(该选项使用字母a是因为在Harvest cache里,HTTP端口被叫做ASCII端口)
- -d level 让squid将它的调试信息写到标准错误(假如配置了,就是cache.log和syslog)。level参数指定了显示在标准错误里的消息的最大等级。在多数情况下,d1工作良好。请见16.2章关于调试等级的描述。
- -f file 指定另一个配置文件。
- -k function (平时用的较多的即-k参数)
squid 执行不同的管理功能。功能参数是下列之一:reconfigure,rotate,shutdown,interrupt,kill,debug,check,or parse。
- reconfigure 重新读取配置文件。
- rotate 滚动日志,这包括了关闭日志,重命名,和再次打开它们。
- shutdown 该命令发送TERM信号到运行中的squid进程。在接受到TERM信号后,squid关闭进来的套接字以拒收新请求。然后它等待一段时间,用以完成外出请求。默认时间是30秒,你可以在shutdown_lifetime指令里更改它。
- interrupt 立刻关闭squid,不必等待活动会话完成。这与在kill里发送INT信号相同。
- kill 发送KILL 信号给squid,这是关闭squid 的最后保证。
- debug 将squid 设置成完全的调试模式,假如你的cache 很忙,它能迅速的用完你的磁盘空间。
- check 简单的检查运行中的squid 进程,返回的值显示squid 是否在运行。
- parse 简单的解析squid.conf 文件,如果配置文件包含错误,进程返回非零值。
- -s 激活将日志记录到syslog进程。squid使用LOCAL4 syslog设备。0级别调试信息以优先级LOG_WARNING被记录,1级别消息以LOG_NOTICE被记录。更高级的调试信息不会被发送到syslogd.你可以在/etc/syslogd.conf文件里使用如下接口:
- local4.warning /var/log/squid.log
- -u port 指定另一个ICP端口号,覆盖掉squid.conf文件里的icp_port。
- -v 打印版本信息。
- -z 初始化cache,或者交换,目录。在首次运行squid,或者增加新的cache目录时,你必须使用该选项。
- -C 阻止安装某些信号句柄,它们捕获特定的致命信号例如SIGBUS和SIGSEGV。正常的,这些信号被squid捕获,以便它能干净的关闭。然而,捕获这些信号可能让以后调试问题困难。使用该选项,致命的信号导致它们的默认动作,通常是coredump。
- -D 禁止初始化DNS测试。正常情况下,squid直到验证它的DNS可用才能启动。该选项阻止了这样的检测。你也能在squid.conf文件里改变或删除dns_testnames选项。
- -F 让squid拒绝所有的请求,直到它重新建立起存储元数据。假如你的系统很忙,该选项可以减短重建存储元数据的时间。然而,如果你的cache很大,重建过程可能会花费很长的时间。
- -N 阻止squid变成后台服务进程。
- -R 阻止squid在绑定HTTP端口之前使用SO_REUSEADDR选项。
- -V 激活虚拟主机加速模式。类似于squid.conf文件里的httpd_accel_host virtual指令。
- -X 强迫完整调试模式,如你在squid.conf文件里指定debug_options ALL,9一样。
- -Y 在重建存储元数据时,返回ICP_MISS_NOFETCH代替ICP_MISS.忙碌的父cache在重建时,该选项可以导致最少的负载。请见10.6.1.2章。
注:以上提到的第多少章,即《squid权威指南》一书的第多少章。
二、常用日志分析语句
1cat /App/squid/var/logs/access.log | grep TCP_MEM_HIT
该指令可以看到在squid运行过程中,有那些文件被squid缓存到内存中,并返回给访问用户。
1cat /App/squid/var/logs/access.log | grep TCP_HIT
该指令可以看到在squid运行过程中,有那些文件被squid缓存到cache目录中,并返回给访问用户。
1cat /App/squid/var/logs/access.log | grep TCP_MISS
该指令可以看到在squid运行过程中,有那些文件没有被squid缓存,而是现重原始服务器获取并返回给访问用户。关于 TCP_XXXX 等参数及代表的信息,请参看《squid中文权威指南》13.2.1 章节。
本文主要参考彭勇华中文译版squid权威南一书及原书Squid: The Definitive Guide 。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/squid-command/2208.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.