Shell 分析日志文件高效命令,超级好用!

自己的小网站跑在阿里云的ECS上面,偶尔也去分析分析自己网站服务器日志,看看网站的访问量。看看有没有黑客搞破坏!于是收集,整理一些服务器日志分析命令,大家可以试试!

Shell 分析日志文件高效命令,超级好用!

1、查看有多少个IP访问:

awk '{print $1}' log_file|sort|uniq|wc -l

2、查看某一个页面被访问的次数:

grep "/index.php" log_file | wc -l

3、查看每一个IP访问了多少个页面:

awk '{++S[$1]} END {for (a in S) print a,S[a]}' log_file > log.txt    sort -n -t ' ' -k 2 log.txt  # 配合sort进一步排序

4、将每个IP访问的页面数进行从小到大排序:

awk '{++S[$1]} END {for (a in S) print S[a],a}' log_file | sort -n

5、查看某一个IP访问了哪些页面:

grep ^111.111.111.111 log_file| awk '{print $1,$7}'

6、去掉搜索引擎统计的页面:

awk '{print $12,$1}' log_file | grep ^"Mozilla | awk '{print $2}' |sort | uniq | wc -l

7、查看2015年8月16日14时这一个小时内有多少IP访问:

awk '{print $4,$1}' log_file | grep 16/Aug/2015:14 | awk '{print $2}'| sort | uniq | wc -l

8、查看访问前十个ip地址

awk '{print $1}' |sort|uniq -c|sort -nr |head -10 access_log

uniq -c 相当于分组统计并把统计数放在最前面

cat access.log|awk '{print $1}'|sort|uniq -c|sort -nr|head -10    cat access.log|awk '{counts[$(11)]+=1}; END {for(url in counts) print counts[url], url}

9、访问次数最多的10个文件或页面

cat log_file|awk '{print $11}'|sort|uniq -c|sort -nr | head -10

**访问量最大的前20个ip**

cat log_file|awk '{print $11}'|sort|uniq -c|sort -nr|head -20    awk '{print $1}' log_file |sort -n -r |uniq -c | sort -n -r | head -20

10、通过子域名访问次数,依据referer来计算,稍有不准

cat access.log | awk '{print $11}' | sed -e ' s/http:////' -e ' s//.*//' | sort | uniq -c | sort -rn | head -20

11、列出传输大小最大的几个文件

cat www.access.log |awk '($7~/.php/){print $10 " " $1 " " $4 " " $7}'|sort -nr|head -100

12、列出输出大于200000byte(约200kb)的页面以及对应页面发生次数

cat www.access.log |awk '($10 > 200000 && $7~/.php/){print $7}'|sort -n|uniq -c|sort -nr|head -100

13、如果日志最后一列记录的是页面文件传输时间,则有列出到客户端最耗时的页面

cat www.access.log |awk '($7~/.php/){print $NF " " $1 " " $4 " " $7}'|sort -nr|head -100

14、列出最最耗时的页面(超过60秒的)的以及对应页面发生次数

cat www.access.log |awk '($NF > 60 && $7~/.php/){print $7}'|sort -n|uniq -c|sort -nr|head -100

15、列出传输时间超过 30 秒的文件

cat www.access.log |awk '($NF > 30){print $7}'|sort -n|uniq -c|sort -nr|head -20

16、列出当前服务器每一进程运行的数量,倒序排列

ps -ef | awk -F ' ' '{print $8 " " $9}' |sort | uniq -c |sort -nr |head -20

17、查看apache当前并发访问数

对比httpd.conf中MaxClients的数字差距多少

netstat -an | grep ESTABLISHED | wc -l

18、可以使用如下参数查看数据

ps -ef|grep httpd|wc -l  1388

统计httpd进程数,连个请求会启动一个进程,使用于Apache服务器。
表示Apache能够处理1388个并发请求,这个值Apache可根据负载情况自动调整

netstat -nat|grep -i "80"|wc -l  4341

netstat -an会打印系统当前网络链接状态,而grep -i “80”是用来提取与80端口有关的连接的,wc -l进行连接数统计。
最终返回的数字就是当前所有80端口的请求总数

netstat -na|grep ESTABLISHED|wc -l  376

netstat -an会打印系统当前网络链接状态,而grep ESTABLISHED 提取出已建立连接的信息。然后wc -l统计
最终返回的数字就是当前所有80端口的已建立连接的总数。

netstat -nat||grep ESTABLISHED|wc

可查看所有建立连接的详细记录

19、输出每个ip的连接数,以及总的各个状态的连接数

netstat -n | awk '/^tcp/ {n=split($(NF-1),array,":");if(n<=2)++S[array[(1)]];else++S[array[(4)]];++s[$NF];++N} END {for(a in S){printf("%-20s %sn", a, S[a]);++I}printf("%-20s %sn","TOTAL_IP",I);for(a in s) printf("%-20s %sn",a, s[a]);printf("%-20s %sn","TOTAL_LINK",N);}'

20、其他的收集

分析日志文件下 2012-05-04 访问页面最高 的前20个 URL 并排序

cat access.log |grep '04/May/2012'| awk '{print $11}'|sort|uniq -c|sort -nr|head -20

查询受访问页面的URL地址中 含有 www.abc.com 网址的 IP 地址

cat access_log | awk '($11~/www.abc.com/){print $1}'|sort|uniq -c|sort -nr

获取访问最高的10个IP地址 同时也可以按时间来查询。另外,搜索公众号Linux就该这样学后台回复“Linux”,获取一份惊喜礼包。

cat linewow-access.log|awk '{print $1}'|sort|uniq -c|sort -nr|head -10

时间段查询日志时间段的情况

cat log_file | egrep '15/Aug/2015|16/Aug/2015' |awk '{print $1}'|sort|uniq -c|sort -nr|head -10

分析2015/8/15 到 2015/8/16 访问”/index.php?g=Member&m=Public&a=sendValidCode”的IP倒序排列

cat log_file | egrep '15/Aug/2015|16/Aug/2015' | awk '{if($7 == "/index.php?g=Member&m=Public&a=sendValidCode") print $1,$7}'|sort|uniq -c|sort -nr
(7里面包含.php的就输出,本句的意思是最耗时的一百个PHP页面
cat log_file |awk '($7~/.php/){print $NF " " $1 " " $4 " " $7}'|sort -nr|head -100
列出最最耗时的页面(超过60秒的)的以及对应页面发生次数
cat access.log |awk '($NF > 60 && $7~/.php/){print $7}'|sort -n|uniq -c|sort -nr|head -100
统计网站流量(G)
cat access.log |awk '{sum+=$10} END {print sum/1024/1024/1024}'
统计404的连接
awk '($9 ~/404/)' access.log | awk '{print $9,$7}' | sort
统计http status
cat access.log |awk '{counts[$(9)]+=1}; END {for(code in counts) print code, counts[code]}'   cat access.log |awk '{print $9}'|sort|uniq -c|sort -rn
每秒并发
watch "awk '{if($9~/200|30|404/)COUNT[$4]++}END{for( a in COUNT) print a,COUNT[a]}' log_file|sort -k 2 -nr|head -n10"
带宽统计
cat apache.log |awk '{if($7~/GET/) count++}END{print "client_request="count}'   cat apache.log |awk '{BYTE+=$11}END{print "client_kbyte_out="BYTE/1024"KB"}'
找出某天访问次数最多的10个IP
cat /tmp/access.log | grep "20/Mar/2011" |awk '{print $3}'|sort |uniq -c|sort -nr|head
当天ip连接数最高的ip都在干些什么
cat access.log | grep "10.0.21.17" | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 10
小时单位里ip连接数最多的10个时段
awk -vFS="[:]" '{gsub("-.*","",$1);num[$2" "$1]++}END{for(i in num)print i,num[i]}' log_file | sort -n -k 3 -r | head -10
找出访问次数最多的几个分钟
awk '{print $1}' access.log | grep "20/Mar/2011" |cut -c 14-18|sort|uniq -c|sort -nr|head
取5分钟日志
if [ $DATE_MINUTE != $DATE_END_MINUTE ] ;then   #则判断开始时间戳与结束时间戳是否相等
START_LINE=sed -n "/$DATE_MINUTE/=" $APACHE_LOG|head -n1 #如果不相等,则取出开始时间戳的行号,与结束时间戳的行号
查看tcp的链接状态*
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn        netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}'     netstat -n | awk '/^tcp/ {++state[$NF]}; END {for(key in state) print key,"t",state[key]}'        netstat -n | awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"t",arr[k]}'        netstat -n |awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn        netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -cnetstat -ant|awk '/ip:80/{split($5,ip,":");++S[ip[1]]}END{for (a in S) print S[a],a}' |sort -n        netstat -ant|awk '/:80/{split($5,ip,":");++S[ip[1]]}END{for (a in S) print S[a],a}' |sort -rn|head -n 10     awk 'BEGIN{printf ("http_codetcount_numn")}{COUNT[$10]++}END{for (a in COUNT) printf a"tt"COUNT[a]"n"}'
查找请求数前20个IP(常用于查找攻来源):
netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20     netstat -ant |awk '/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A[i],i}' |sort -rn|head -n20
用tcpdump嗅探80端口的访问看看谁最高
牛逼啊!接私活必备的 N 个开源项目!赶快收藏
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20
查找较多time_wait连接
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
找查较多的SYN连接
netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more
根据端口列进程
netstat -ntlp | grep 80 | awk '{print $7}' | cut -d/ -f1
查看了连接数和当前的连接数
netstat -ant | grep $ip:80 | wc -l   netstat -ant | grep $ip:80 | grep EST | wc -l
查看IP访问次数
netstat -nat|grep ":80"|awk '{print $5}' |awk -F: '{print $1}' | sort| uniq -c|sort -n
Linux命令分析当前的链接状况
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'    watch "netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'"   # 通过watch可以一直监控
LAST_ACK 5   #关闭一个TCP连接需要从两个方向上分别进行关闭,双方都是通过发送FIN来表示单方向数据的关闭,当通信双方发送了最后一个FIN的时候,发送方此时处于LAST_ACK状态,当发送方收到对方的确认(Fin的Ack确认)后才真正关闭整个TCP连接;  SYN_RECV 30       # 表示正在等待处理的请求数;  ESTABLISHED 1597  # 表示正常数据传输状态;   FIN_WAIT1 51      # 表示server端主动要求关闭tcp连接;   FIN_WAIT2 504     # 表示客户端中断连接;   TIME_WAIT 1057    # 表示处理完毕,等待超时结束的请求数;

Shell 分析日志文件高效命令,超级好用!
为了跟上AI时代我干了一件事儿,我创建了一个知识星球社群:ChartGPT与副业。想带着大家一起探索ChatGPT和新的AI时代。有很多小伙伴搞不定ChatGPT账号,于是我们决定,凡是这三天之内加入ChatPGT的小伙伴,我们直接送一个正常可用的永久ChatGPT独立账户。
简单说下这个星球能给大家提供什么:星球分享:1、不断分享如何使用ChatGPT来完成各种任务,让你更高效地使用ChatGPT,以及副业思考、变现思路、创业案例、落地案例分享。2、分享ChatGPT的使用方法、最新资讯、商业价值。3、探讨未来关于ChatGPT的机遇,共同成长。4、帮助大家解决ChatGPT遇到的问题。5、不定期邀请大咖进行分享。6、提供一整年的售后服务,一起搞副业星球福利:1、加入星球4天后,就送ChatGPT独立账号。2、邀请你加入ChatGPT会员交流群。3、赠送一份完整的ChatGPT手册和66个ChatGPT副业赚钱手册。其它福利还在筹划中... 不过,我给你大家保证,加入星球后,收获的价值会远远大于今天加入的门票费用 !本星球第一期原价399,目前属于试运营,早鸟价139,每超过50人涨价10元,星球马上要来一波大的涨价,如果你还在犹豫,可能最后就要以更高价格加入了。。早就是优势。建议大家尽早以便宜的价格加入!

  声明:本文部分素材转载自互联网,如有侵权立即删除 。

往期精彩


为什么建议大家使用 Linux 开发?

吾爱破解,真的要凉了吗?

推荐一个酷炫的监控系统(附源码)!
如何通过一张照片来获取 ip 地址?

linux 操作的良好习惯总结

常用的 34 个 Linux Shell 脚本,一定能帮到你!

40 亿个QQ号,限制 1G 内存,如何去重?

Linux 下几种运行后台任务的方法

HDD 硬盘被垄断,倪光南院士:SSD 取代的时机到了

一款可以通过 Web 访问的 Linux 终端神器,已开源!

经验之谈: Linux 运维工程师的 6 类好习惯和 23 个教训

超能文献 超能文献

超能文献是一款革命性的AI驱动医学文献搜索引擎。

超能文献 14 查看详情 超能文献

会玩这 10 个 Linux 命令,一定是个有趣的 IT 男!

QQ 用 Electron 重构后,终实现 Linux、macOS、Windows 三端架构统一!

600 条最强 Linux 命令总结

深入理解云原生监控实操!

Shell 分析日志文件高效命令,超级好用!

喜欢本文的朋友们,欢迎长按下图,关注订阅号Linux中文社区

收看更多精彩内容

以上就是Shell 分析日志文件高效命令,超级好用!的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/526625.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月9日 08:22:39
下一篇 2025年11月9日 08:24:39

相关推荐

  • Linux下Python脚本操作的高级技巧

    Linux下Python脚本操作的高级技巧,需要具体代码示例 Python语言是一种简单易学、功能强大的脚本语言,它在Linux系统中的应用非常广泛。本文将介绍一些Linux下使用Python脚本进行高级操作的技巧,并提供具体的代码示例,帮助读者更好地理解和应用这些技巧。 使用管道和过滤器 在Lin…

    2025年12月13日
    000
  • linux怎么执行php脚本_linux系统中执行PHP脚本的命令与配置

    首先确认PHP已安装,使用php -v检查版本;若未安装,在Ubuntu/Debian中用sudo apt install php-cli php,在CentOS/RHEL中用sudo yum install php或sudo dnf install php;创建test.php文件并写入PHP代码…

    2025年12月12日
    000
  • PHP一键环境日志文件在哪查看_错误日志与访问日志分析

    错误日志通常位于各环境的logs目录下,如宝塔在/www/wwwlogs/php_error.log,phpStudy在phpstudy_proExtensionsphp_logs,XAMPP在xamppapachelogserror.log,WampServer在wampbinapacheApac…

    2025年12月12日
    000
  • PHP 如何与 shell 命令互动?

    php 与 shell 命令交互方法:exec() 函数:执行命令并获取输出。shell_exec() 函数:在独立 shell 进程中执行命令。popen() 函数:通过管道与命令双向通信。proc_open() 函数:提供了更高级的控制,可指定命令流。 PHP 如何与 Shell 命令互动? 在…

    2025年12月9日
    000
  • shell脚本基本命令有哪些

    shell脚本基本命令:1、Shell的echo指令与PHP的echo指令类似,都是用于字符串的输出;2、printf命令模仿C程序库里的【printf()】程序;3、test命令用于检查某个条件是否成立。 本教程操作环境:linux7.3系统,DELL G3电脑。 shell脚本基本命令: 1、e…

    2025年12月5日
    000
  • linux shell怎么判断文件是否存在

    在linux shell中,可以利用if语句和“-e filename”表达式来判断文件是否存在,具体语法“if [-e filename]; then echo “文件存在”; else echo “文件不存在”; fi”。 本教程操作环境:linu…

    2025年12月4日
    000
  • 操作mysql数据库的Shell脚本

    创建建表语句 %ign%ignore_a_1%re_pre_1% 批量插入数据脚本 #!/bin/bash #create by oldboy 20110319 #qq:31333741 MysqlLogin=”mysql -uroot -poldboy” #→定义登陆mysql的命令,方…

    数据库 2025年12月3日
    000
  • linux下MySQL主从同步监控shell脚本

    说明: 操作系统:CentOS 目的:定时监控MySQL主从数据库是否同步,如果不同步,记录故障时间,并执行命令使主从恢复同步状态 1、创建脚本文件 vi /home/crontab/check_mysql_slave.sh   #编辑,添加下面代码 #!/bin/sh # check_mysql_…

    2025年12月2日
    000
  • 使用mysql在终端执行sql并把结果写入文件的方法

    在终端使用mysql执行语句时,我们一般先进入mysql,然后再在里面执行sql语句。 例如: mysql -urootmysql> use mydb;mysql> select * from user;… 如果我们需要进行某些表的监控,并保存执行后的查询结果,需要手动复制到文件,这…

    2025年12月2日
    000
  • mysql日志文件有什么用

    %ignore_a_1%日志文件的作用:1、能记录物理数据页面的修改的信息;2、能将数据从逻辑上恢复至事务之前的状态;3、能以二进制文件的形式记录了数据库中的操作;4、能记录错误的相关信息;5、能从主服务器中二进制文件取的事件等等。 推荐:《mysql教程》 MySQL日志文件可分为:重做日志(re…

    2025年12月2日 数据库
    000
  • 如何查看mysql的日志文件

    首先,介绍一下mysql日志的种类。一般来说,日志有五种,分别为: (推荐学习:mysql教程) 错误日志:-log-err (记录启动,运行,停止mysql时出现的信息) 二进制日志:-log-bin (记录所有更改数据的语句,还用于复制,恢复数据库用) 查询日志:-log (记录建立的客户端连接…

    2025年12月2日 数据库
    000
  • SQL语言如何构建自动化备份脚本 SQL语言在数据容灾中的定时任务实现

    自动化备份脚本的核心是结合sql备份命令与操作系统或数据库调度器,通过编写脚本并配置定时任务实现;2. 不同数据库需使用对应工具:sql server用t-sql脚本配合sql server agent,mysql和postgresql用mysqldump与pg_dump配合shell/batch脚…

    2025年12月1日 数据库
    100
  • Linux ZSH 更便捷的 shell 环境

    简介 zsh 是为交互式使用而设计的,与 bash 兼容的 shell,尽管它也是一种强大的脚本语言。zsh 融合了 bash、ksh 和 tcsh 的许多有用特性,并引入了许多独特的功能。 相较于 bash,zsh 具有以下优势: Tab 补全功能强大,支持命令、命令参数和文件路径的补全。丰富的插…

    2025年11月29日 运维
    000
  • VSCode的终端支持哪些Shell?

    VSCode支持多平台Shell,Windows可选cmd、PowerShell、WSL等,macOS支持bash、zsh、fish等,Linux兼容所有注册Shell,通过“Terminal: Select Default Profile”或settings.json配置默认终端。 VSCode的…

    2025年11月29日 开发工具
    000
  • MongoDB学习(三)MongoDB shell 命令行的使用

    首先要启动MongoDB shell工具,即bin下的mongo.exe 常用shell命令如下: 1、查询本地所有数据库名称 show dbs; 2、切换至指定数据库环境(若无指定的数据库,则创建新的库) use dbtest; 切换至dbtest库或创建名为dbtest的库 3、查询当前库下的所…

    2025年11月28日
    000
  • win11怎么设置环境变量 Win11添加系统Path路径与用户变量

    首先通过系统属性、命令提示符或PowerShell设置环境变量,具体步骤包括:进入系统设置→高级系统设置→环境变量,编辑Path或新建变量;或使用setx命令在cmd中添加;或用[Environment]::SetEnvironmentVariable在PowerShell中配置。 如果您需要在Wi…

    2025年11月28日 系统教程
    000
  • Linux Shell怎么用ssh命令统计分布式集群信息

    一、统计分布式集群信息的思路 用免密的远程登陆命令,实现一台机器访问其他集群的机器。因此想要实现有几个重要步骤: 学会shh的使用方法 实现免密登录 编写shell程序 二、SSH加密原理 非对称加密技术是一种加密和解密用的不同密钥的加密方法。其中RSA和DSA就是非对称加密方法。当然非对称加密算法…

    运维 2025年11月28日
    100
  • linux中的shell命令如何使用

    在本文中,我们将介绍linux shell中使用的部分基本命令。 查看和跳转命令 (1)pwd 当打开终端时,如果需要自己目前在哪一个目录,可以使用pwd命令,它返回一个绝对的路径(从根“/”开始的路径)。  (2)ls 使用“ls”命令知道您所在的目录处,都有哪些文件和文件夹。可以使用命令“ls …

    2025年11月28日 运维
    000
  • linux统计appche站点IP访问量的shell脚本怎么写

    经常需要根据ip地址统计apache站点访问量,最基本的脚本. 根据ip访问量降序排列: 复制代码 代码如下: #!/bin/bash#script_name: access_countacc_log=/usr/local/apache2/logs/access_log/bin/awk &#8216…

    运维 2025年11月28日
    000
  • linux之shell实现图书管理系统实例详解

    本文主要介绍了shell实现图书管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家更好的学习shell。 本文实例为大家分享了shell实现图书管理系统的具体代码,供大家参考,具体内容如下 #!/bin/bash #author:zhanghongjun #version:…

    2025年11月27日
    000

发表回复

登录后才能评论
关注微信