扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
linux命令。
成都创新互联拥有十余年的建站服务经验,在此期间,我们发现较多的客户在挑选建站服务商前都非常的犹豫。主要问题集中:在无法预知自己的网站呈现的效果是什么样的?也无法判断选择的服务商设计出来的网页效果自己是否会满意?成都创新互联业务涵盖了互联网平台网站建设、移动平台网站制作、网络推广、按需定制开发等服务。成都创新互联网站开发公司本着不拘一格的网站视觉设计和网站开发技术相结合,为企业做网站提供成熟的网站设计方案。
linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
du命令可以显示目前的目录所占的磁盘空间,df命令可以显示目前磁盘剩余的磁盘空间。如果du命令不加任何参数,那么返回的是整个磁盘的使用情况,如果后面加了目录的话,就是这个目录在磁盘上的使用情况。
如果一个文本文件太长了超过一个屏幕的画面,用cat来看实在是不理想,就可以试试more和less两个指令。More指令可以使超过一页的文件临时停留在屏幕,等你按任何的一个键以后,才继续显示。
而less除了有more的功能以外,还可以用方向键往上或往下的滚动文件,所以你随意浏览,阅读文章时,less是个非常好的选择。当more或less文件不存在时,那么该文件就会自动生个空文件,所以more和less也可以作为创建文件的用法。
具体如下:
1.首先为了演示应用程序输出信息,这里我们选择tomcat的日志输出文件来演示,当然也可以选择您自己任意的应用程序。这里我们连接上linux服务器之后,cd命令切换到tomcat的logs目录
2.要想自动打印显示出程序输出信息,这里需要使用到tail命令,首先我们使用mantail命令查看下tail命令的帮助信息。tail命令是默认打印最后10行信息,从帮助信息中,可以看到-f跟随的意思,就是在有新的输出信息的...
3.输入tail-fcatalina.out,从打印信息中可以看出,默认输出了最后的10行信息,并且命令没有退出,等待新的信息输出,这个时候如果程序有新的输出,会自动打印出来
4.tail命令默认一开始是显示之前的10行,如果不够的话,可以指定,这里可以输入tail-40fcatalina.out
在上文中,我们已经详细介绍 linux 三剑客的基本使用,接下来我们看看具体在性能测试领域的运用,本文主要介绍的是在 Tomcat 和 Nginx access日志的统计分析。
server.xml 使用配置方式,%D-请求时间,%F-响应时间
字段说明如下:
日志样例:
使用默认 combined 的经典格式上扩展 response_timeupstream_response_time
nginx.conf 使用配置方式:
字段说明如下:
日志示例:
为了能理解 AWK 程序,我们下面概述其基本知识。
模式( pattern ) 用于匹配输入中的每行文本。对于匹配上的每行文本,awk 都执行对应的 动作( action )。模式和动作之间使用花括号隔开。awk 顺序扫描每一行文本,并使用 记录分隔符(一般是换行符)将读到的每一行作为 记录,使用 域分隔符( 一般是空格符或制表符 ) 将一行文本分割为多个 域, 每个域分别可以使用 2, … 表示。1 表示第一个域,表示第二个域,n 表示第 n 个域。 $0 表示整个记录。模式或动作都可以不指定,缺省模式的情况下,将匹配所有行。缺省动作的情况下,将执行动作 {print},即打印整个记录。
此处使用Nginx access.log 举例,Tomcat 日志自己举一反三。 使用 awk 分解出Nginx access日志中的信息
以此类推…… 当我们使用默认的域分割符时,我们可以从日志中解析出下面不同类型的信息:
我们不难发现,仅使用默认的域分隔符,不方便解析出请求行、引用页和浏览器类型等其他信息,因为这些信息之中包含不确定个数的空格。 因此,我们需要把域分隔符修改为 “ ,就能够轻松读出这些信息。
注意:这里为了避免 Linux Shell 误解 “ 为字符串开始,我们使用了反斜杠,转义了 “ 。 现在,我们已经掌握了 awk 的基本知识,以及它是怎样解析日志的。
此处使用Nginx access.log 举例,Tomcat 日志自己举一反三。
如果我们想知道那些类型的浏览器访问过网站,并按出现的次数倒序排列,我可以使用下面的命令:
此命令行首先解析出浏览器域,然后使用管道将输出作为第一个 sort 命令的输入。第一个 sort 命令主要是为了方便 uniq 命令统计出不同浏览器出现的次数。最后一个 sort 命令将把之前的统计结果倒序排列并输出。
我们可以使用下面的命令行,统计服务器返回的状态码,发现系统可能存在的问题。
正常情况下,状态码 200 或 30x 应该是出现次数最多的。40x 一般表示客户端访问问题。50x 一般表示服务器端问题。 下面是一些常见的状态码:
HTTP 协议状态码定义可以参阅:
查找并显示所有状态码为 404 的请求
统计所有状态码为 404 的请求
现在我们假设某个请求 ( 例如 : URI: /path/to/notfound ) 产生了大量的 404 错误,我们可以通过下面的命令找到这个请求是来自于哪一个引用页,和来自于什么浏览器。
有时候会发现其他网站出于某种原因,在他们的网站上使用保存在自己网站上的图片。如果您想知道究竟是谁未经授权使用自己网站上的图片,我们可以使用下面的命令:
注意:使用前,将 修改为自己网站的域名。
统计共有多少个不同的 IP 访问:
统计每一个 IP 访问了多少个页面:
将每个 IP 访问的页面数进行从小到大排序:
统计 2018 年 8 月 31 日 14 时内有多少 IP 访问 :
统计访问最多的前十个 IP 地址
查看某一个 IP访问了哪些页面:
统计某个 IP 的详细访问情况,按访问频率排序
列出传输大小最大的几个文件
列出输出大于 204800 byte ( 200kb) 的页面以及对应页面发生次数
列出访问最频的页面(TOP100)
列出访问最频的页面([排除php页面】(TOP100)
列出页面访问次数超过100次的页面
列出最近1000条记录,访问量最高的页面
统计每分钟的请求数,top100的时间点(精确到分钟)
统计每小时的请求数,top100的时间点(精确到小时)
统计每秒的请求数,top100的时间点(精确到秒)
统计当天的 pv
说明:
可以使用下面的命令统计出所有响应时间超过 3 秒的日志记录。
注意:NF 是当前记录中域的个数。$NF 即最后一个域。
列出php页面请求时间超过3秒的页面,并统计其出现的次数,显示前100条
列出相应时间超过 5 秒的请求,显示前20条
统计蜘蛛抓取次数
统计蜘蛛抓取404的次数
通过本文的介绍,我相信同学们一定会发现 linux三剑客强大之处。在命令行中,它还能够接受,和执行外部的 AWK 程序文件,可以对文本信息进行非常复杂的处理,可以说“只有想不到的,没有它做不到的”。
Linux系统日志文件存放在/var/log下
/var/log/cron 记录了系统定时任务相关的日志;
/var/log/cups 记录打印信息的日志;
/var/log/dmesg 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息。
/var/log/btmp 记录错误登录的日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看;
/var/log/lastlog 记录系统中所有用户最后一次的登录时间的日志。这个文件也是二进制文件,不能直接vi,而要使用lastlog命令查看。
/var/log/mailog 记录邮件信息;
/var/log/message 记录系统重要信息的日志,记录Linux系统的绝大多数重要信息,如果系统出现问题,首先要检查的就是应该是这个日志文件;
/var/log/secure 记录验证和授权方面的信息,只要涉及账户和密码的程序都会记录。比如说系统的登录,ssh的登录,su切换用户,sudo授权,甚至添加用户和修改用户密码;
/var/log/wtmp 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件不能直接vi而需要使用last命令来查看;
/var/run/utmp 记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息,同样这个文件不能直接vi,要使用w,who,users等命令;
作为一名测试工程师,测试任务中和Linux打交道的地方有很多,比如查看日志、定位bug、修改文件、部署环境等。产品部署在Linux上,如果某个功能发生错误,就需要我们去排查出错的原因,所以熟练的掌握查看log的方法显得尤为重要。
谈到查看log的方法,最常使用的命令可以说是cat与more及less了,但是如果查看一个很大的文件,并且只想看到该文件最后几行的结果输出时,你还记得用什么吗?对了,就是tail,此外tac也可以达到这个目的。接下来文章将通过实例来讲解各个查看日志的命令。
想要直接查看一个文件的内容,可以使用cat/tac/nl命令行。
在一般情况下,使用[tab]与空格键的效果差不多,都是一堆空白,无法区分出两者,但是如果使用cat -A 就能够发现空白的地方到底是什么,其中[tab]是以^I表示,换行符则是以$表示。当文件内容的行数超过40行以上时,根本来不及在屏幕上看到结果。所以cat配合less或者more是不错的选择。
nl可以将输出的文件内容自动地加上行号,其默认的结果与cat -n不太一样,nl可以将行号做比较多的显示设计,包括位数与是否自动补齐0等的功能。
想要一页一页的查看文件的内容,可以使用more和less命令。
对比less和more,less的用法更加的灵活,more的缺点是没有办法向前翻页,只能往后翻,但是less既能往后翻也能往前翻页。
如果只想关注日志内容的前一段或者最后一段的内容,使用head/tail。
几种查看log的方式总结的也差不多了,想要熟练的使用还需要多练。
linux查看日志命令:
tail:
-n是显示行号;相当于nl命令;例子如下:
tail -100f test.log实时监控100行日志。
tail -n 10 test.log查询日志尾部最后10行的日志。
tail -n +10 test.log查询10行之后的所有日志。
head:
跟tail是相反的,tail是看后多少行日志;例子如下:
head -n 10 test.log查询日志文件中的头10行日志。
head -n -10 test.log查询日志文件除了最后10行的其他所有日志。
cat:
tac是倒序查看,是cat单词反写;例子如下:
cat -n test.log |grep "debug"查询关键字的日志。
命令功能:
tail用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用于查看日志文件后多少行日志信息。
使用tail -f可以查看动态日志文件,tail -f filename可以把filename里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容。
tail -n行数可以显示指定行数信息。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流