①.、who命令
who命令查询utmp文件并报告当前登录的每个用户.Who的缺省输出包括用户名、终端类型、登录日期及远程主机.使用该命令,系统管理员可以查看当前系统存在哪些不法用户,从而对其进行审计和处理.例如:运行who命令显示如下所示:
#?who
如果指明了wtmp文件名,则who命令查询所有以前的记录.命令who /var/log/wtmp将报告自从wtmp文件创建或删改以来的每一次登录.例如:运行该命令如下所示:
users用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话.如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数.运行该命令将如下所示:
# users
root root root
last命令往回搜索wtmp来显示自从文件第一次创建以来登录过的用户.系统管理员可以周期性地对这些用户的登录情况进行审计和考核,从而发现起中存在的问题,确定不法用户,并进行处理.运行该命令,如下所示:
# last
# ac
lastlog文件在每次有用户登录时被查询.可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容.它根据UID排序显示登录名、端口号(tty)和上次登录时间.如果一个用户从未登录过,lastlog显示**Never logged**.注意需要以root身份运行该命令.
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等命令;
last
-a 把从何处登入系统的主机名称或ip地址,显示在最后一行.
-d 指定记录文件.指定记录文件.将IP地址转换成主机名称.
-f 记录文件 指定记录文件.
-n 显示列数或-显示列数 设置列出名单的显示列数.
-R 不显示登入系统的主机名称或IP地址.
-x 显示系统关机,重新开机,以及执行等级的改变等信息
以下看所有的重启、关机记录
last | grep reboot
last | grep shutdown
history
列出所有的历史记录:
只列出最近10条记录:
重复执行上一个命令
执行最后一次以rpm开头的'命令(!? ?代表的是字符串,这个String可以随便输,Shell会从最后一条历史命令向前搜索,最先匹配的一条命令将会得到执行.)
逐屏列出所有的历史记录:
立即清空history当前所有历史命令的记录
cat, tail 和 watch
系统所有的日志都在 /var/log 下面自己看(具体用途可以自己查,附录列出一些常用的日志)
cat /var/log/syslog 等
cat /var/log/*.log
tail -f
如果日志在更新,如何实时查看 tail -f /var/log/messages
还可以使用 watch -d -n 1 cat /var/log/messages
-d表示高亮不同的地方,-n表示多少秒刷新一次.
该指令,不会直接返回命令行,而是实时打印日志文件中新增加的内容,
这一特性,对于查看日志是非常有效的.如果想终止输出,按 Ctrl◆C 即可.
除此之外还有more, less ,dmesg|more,这里就不作一一列举了,因为命令太多了,关键看个人喜好和业务需求.个人常用的就是以上那些
linux日志文件说明
/var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
/var/log/secure 与安全相关的日志信息
/var/log/maillog 与邮件相关的日志信息
/var/log/cron 与定时任务相关的日志信息
/var/log/spooler 与UUCP和news设备相关的日志信息
/var/log/boot.log 守护进程启动和停止相关的日志消息
/var/log/wtmp 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件
tail -f 日志文件路径主要用于查看实时的日志记录,属于动态记录查看.
cat日志路径主要用于查看静态的历史日志记录,一般跟路径名称,常见的这周类型的日志记录一般用管道符进行过滤筛选自己所需的记录.
dmesg主要用于调试脚本或者命令,出现异常中断来排查错误原因显示的.
tail? -n? 10? test.log,查询日志尾部最后10行的日志.
tail -n ◆10 test.log,查询10行之后的所有日志.
head -n 10? test.log,查询日志文件中的头10行日志.
head -n -10? test.log,查询日志文件除了最后10行的其他所有日志.
操作命令
首先介绍一个名词"控制台(console)",它就是我们通常见到的使用字符操作界面的人机接口,例如dos.我们说控制台命令,就是指通过字符界面输入的可以操作系统的命令.
例如dos命令就是控制台命令.要了解的是基于Linux操作系统的基本控制台命令.有一点一定要注意,和dos命令不同的是,Linux的命令(也包括文件名等等)对大小写是敏感的,也就是说,如果你输入的命令大小写不对的话,系统是不会做出你期望的响应的.
在上文中,我们已经详细介绍 linux 三剑客的基本使用,此时此刻呢我们看看具体在性能测试领域的运用,本文主要介绍的是在 Tomcat 和 Nginx access日志的统计分析.
server.xml 使用配置方式,%D-请求时间,%F-响应时间
字段说明如下:
日志样例:
使用默认 combined 的经典格式上扩展 response_timeupstream_response_time
nginx.conf 使用配置方式:
日志示例:
为了能理解 AWK 程序,我们下面概述其基本知识.
此处使用Nginx access.log 举例,Tomcat 日志自己举一反三. 使用 awk 分解出Nginx access日志中的信息
以此类推...... 当我们使用默认的域分割符时,我们可以从日志中解析出下面不同类型的信息:
我们不难发现,仅使用默认的域分隔符,不方便解析出请求行、引用页和浏览器类型等其他信息,因为这些信息之中包含不确定个数的空格. 所以呢,我们需要把域分隔符修改为 " ,就能够轻松读出这些信息.
注意:这里为了避免 Linux Shell 误解 " 为字符串开始,我们使用了反斜杠,转义了 " . 现在,我们已经掌握了 awk 的基本知识,以及它是怎样解析日志的.
此处使用Nginx access.log 举例,Tomcat 日志自己举一反三.
如果我们想知道那些类型的浏览器访问过网站,并按出现的次数倒序排列,我可以使用下面的命令:
此命令行首先解析出浏览器域,然后使用管道将输出作为第一个 sort 命令的输入.第一个 sort 命令主要是为了方便 uniq 命令统计出不同浏览器出现的次数.最后一个 sort 命令将把之前的统计结果倒序排列并输出.
我们可以使用下面的命令行,统计服务器返回的状态码,发现系统可能存在的问题.
HTTP 协议状态码定义可以参阅:
有时候会发现其他网站出于某种原因,在他们的网站上使用保存在自己网站上的图片.如果您想知道究竟是谁未经授权使用自己网站上的图片,我们可以使用下面的命令:
注意:使用前,将 修改为自己网站的域名.
统计共有多少个不同的 IP 访问:
统计每一个 IP 访问了多少个页面:
将每个 IP 访问的页面数进行从小到大排序:
统计访问最多的前十个 IP 地址
查看某一个 IP访问了哪些页面:
统计某个 IP 的详细访问情况,按访问频率排序
列出传输大小最大的几个文件
列出访问最频的页面(TOP100)
列出访问最频的页面([排除php页面】(TOP100)
列出页面访问次数超过100次的页面
列出最近1000条记录,访问量最高的页面
统计每分钟的请求数,top100的时间点(精确到分钟)
统计每小时的请求数,top100的时间点(精确到小时)
统计每秒的请求数,top100的时间点(精确到秒)
统计当天的 pv
说明:
注意:NF 是当前记录中域的个数.$NF 即最后一个域.
统计蜘蛛抓取次数
通过本文的介绍,我相信同学们一定会发现 linux三剑客强大之处.在命令行中,它还能够接受,和执行外部的 AWK 程序文件,可以对文本信息进行非常复杂的处理,可以说"只有想不到的,没有它做不到的".