Linux常用的日志分析命令与工具_java

引言:

在Linux系统管理中,日志文件扮演着至关重要的角色。它们记录了使用者与系统交互过程中的诸多事件,如运行状态、错误信息和安全事件等。

对于运维人员来说,熟练地使用日志分析命令与工具,能够有效地帮助其监控、诊断乃至解决系统问题。

基础命令

操作

命令

说明

查看文件的内容

cat -n access.log

-n显示行号

分页显示文件

more access.log

Enter下一行,空格下一页,F下一屏,B上一屏

分页显示文件

less access.log

输入 /字符串 可查找并高亮

显示文件尾

tail -n2 -f access.log

-n2显示最后2行,-f继续监听不退出

内容排序

sort -k 2 -t ' ' -n access.log

-k指定排序列,-t指定列分隔符,-n按数字顺序

字符统计

wc -l access.log

-l统计行数,-c字符数,-L最长行长度,-w单词数

查看重复出现的行

sort testfile | uniq -c -d

uniq去重,-c统计重复次数,-d只显示重复的

字符串查找

grep 'G.*T' access.log

查找G开头T结尾的字符串

文件查找

find /home/java -name access.log

递归/home/java的子目录找名为access.log

表达式求值

expr 10 * 3

计算103,其中*表示转义不解读为通配符

表达式求值

expr length "this is a test"

计算长度

归档文件

tar -cf aaa.tar f1 f2

-c创建,-f指定包名

归档文件

tar -xf aaa.tar

-x解压

URL访问

curl www.google.com

不带参返回响应体,-i返回带响应头,-I仅返回响应头

查看CPU的load

uptime

查看CPU使用率

top | grep Cpu

按1查看每个核,按shift+H按线程查看

查看CPU使用率

top -p 2864

查看指定进程

磁盘剩余空间

df -h

磁盘剩余空间

du -d 1 -h /home/java

分析目录的磁盘使用。-d设置递归深度

网络traffic

sar -n DEV 1 1

DEV查看各个网卡,1秒抽样,1总共取一次

磁盘I/O

iostat -d -k

内存使用

free -m

通常是看“-/+ buffers/cache”对应的used和free

内存使用

vmstat

查看swap I/O

sed编辑器

操作

命令

说明

文本替换

sed 's/xxx/yahoo/' access.log | head -10

不会修改原文件

输出指定的行

sed -n '2,6p' access.log

输出2-6行

删除行

sed '/qq/d' access.log

/d排除含关键字qq的行

整行替换

sed -e '/google/c\hello' access.log | head -10

/c替换的是整个匹配的行

多个命令合并

sed -n '1,5p;1,5=' access.log

边打印行边打印行号

awk程序

操作

命令

筛选行,打印指定列

awk '/google/{print 0,0,6}' access.log | head -10

按条件打印

awk 'length(0)>40{print0)>40{print3}' access.log | head -10

格式化输出

awk '{line= sprintf("method:%s,response:%s", 3,3,7); print line}' access.log | head -10

典型的日志分析场景

1. 统计一个文本中包含字符个数

cat access.log |grep /2012/ |wc -l
cat access.log |grep "/message/publishmsg/\|/message/publish/" >test1.log

2. 查看当天访问排行前10的url

cat access.log | grep “10/Dec/2010″ | awk ‘{print $7}’ | sort | uniq -c | sort -nr | head -n 10

3. 查看apache的进程数

ps -aux | grep httpd | wc -l

4. 访问量前10的IP

cat access.log | cut -f1 -d " " | sort | uniq -c |sort -k 1 -n -r | head -10 
#cut部分表示取第1列即IP列,取第4列则为URL的访问量

5. 查看最耗时的页面

cat access.log | sort -k 2 -n -r | head -10
#按第2列响应时间逆序排序

6. 统计404请求的占比

#总请求数
wc -l access.log | cut -f1 -d " "  

#404请求数 
`awk '6==′404′print$6′access.log|wc−l‘占比expr6==′404′print$6′access.log|wc−l‘占比exprnot_found_line \* 100 / $total_line &&或;可合并为一行

6. 使用grep查找文件中指定字符出现的次数

grep -o '目标' test.txt | wc -l
#-o 指示grep显示所有匹配的地方,并且每一个匹配单独一行输出。这样只要统计输出的行数就可以知道这个字符出现的次数了

总结:

日志文件是Linux系统管理中不可或缺的部分,其中详尽地记录了使用者和系统的各类交互信息。掌握常用的日志分析命令与工具,能帮我们快速地定位问题,从而提高处理问题的效率。


Linux常用的日志分析命令与工具_sed_02

最后~欢迎关注我! @Linux学习的那些事儿

我的个人资源整理,满满都是干货:可按需访问领取

200T免费资料,持续发布中...

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!