常用服务器日志分析命令大全(二)

本文介绍了一系列用于网络监控和分析的实用命令与技巧,包括如何查看HTTP进程数量、统计网络连接状态、分析日志文件等内容,帮助读者深入了解网络运行状况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 %s\n", a, S[a]);++I}printf("%-20s %s\n","TOTAL_IP",I);for(a in s) printf("%-20s %s\n",a, s[a]);printf("%-20s %s\n","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地址 同时也可以按时间来查询 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/) $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 -c
netstat -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_code\tcount_num\n")}{COUNT[$10]++}END{for (a in COUNT) printf a"\t\t"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端口的访问看看谁最高 
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  # 表示处理完毕,等待超时结束的请求数; 

附录

一月  Jan    January 
二月  Feb    February 
三月  Mar    March 
四月  Apr    April 
五月  May    May 
六月  June    June 
七月  July    July 
八月  Aug    Aguest 
九月  Sept    September 
十月  Oct    October 
十一月  Nov    November 
十二月  Dec    December
-------------------------END-------------------------

<think>好的,我现在需要帮用户整理Linux服务器运维常用命令列表。用户提到了几个引用内容,里面有涉及文件传输、进程管理和网络连接统计的命令,我得先看看这些引用里的例子,然后补充其他常用命令。 首先,引用[1]里提到了rz和sz命令,用于文件传输。这个应该归类到文件操作部分。接着,引用[2]有杀掉进程的命令,比如kill和killall,还有查看服务的命令,这部分属于进程管理。引用[3]中的netstat和统计登录账户的命令属于网络和系统状态监控。 接下来,我需要补充其他常用类别。比如系统信息查看,可能包括top、df、free这些。用户管理方面,useradd、passwd也应该加入。权限管理里的chmod和chown也是基础。网络配置方面,ifconfig、ping、ssh这些必不可少。软件包管理根据发行版不同,比如yum和apt。日志查看用tail、grep,还有定时任务crontab。 另外,用户可能需要知道如何监控资源,比如内存、磁盘使用情况。备份和压缩命令如tar、gzip也常用。安全相关可能有iptables,但用户没提到,可能暂时不需要深入。需要确保每个命令的例子简单明了,符合用户需求。最后生成相关问题,考虑用户可能想了解更详细的用法或常见问题,比如如何实时监控日志,如何查找大文件,如何设置定时任务等。检查格式,行内公式用$,独立公式用$$,不过这里可能用不到数学公式,但要注意代码块的使用。确保引用正确,每个引用对应到用户提供的参考资料。最后结构要清晰,分点列出,方便用户查阅。</think>### Linux服务器运维常用命令总结 #### 一、文件与目录操作 1. **传输文件** Windows与Linux间传输文件使用`rz`/`sz`命令(需安装`lrzsz`包)[^1]: ```bash rz # 上传文件到Linux sz filename # 下载文件到Windows ``` 2. **查看文件内容** ```bash cat filename # 显示全部内容 head/tail -n 10 filename # 查看前/后10行 grep "pattern" filename # 搜索关键词 ``` 3. **权限管理** ```bash chmod 755 filename # 修改文件权限 chown user:group filename # 修改文件所有者 ``` --- #### 、进程与服务管理 1. **进程操作** - 查找进程: ```bash ps aux | grep nginx # 查看nginx进程 ``` - 终止进程: ```bash kill -9 $(pgrep nginx) # 强制终止进程[^2] killall -TERM nginx # 终止指定服务 ``` 2. **服务管理** ```bash systemctl start nginx # 启动服务 systemctl enable nginx # 设置开机自启 ``` --- #### 三、网络与连接监控 1. **网络状态** ```bash netstat -atn | awk '{print $5}' | awk '{print $1}' | sort | uniq -c # 统计远程连接IP[^3] ss -tuln # 查看端口占用 ``` 2. **连接测试** ```bash ping example.com # 测试网络连通性 traceroute example.com # 追踪路由路径 ``` --- #### 四、系统资源监控 1. **资源查看** ```bash top # 实时监控CPU/内存 df -h # 查看磁盘空间 free -m # 显示内存使用(MB) lsof | wc -l # 统计打开文件总数 ``` 2. **日志分析** ```bash journalctl -u nginx --since "2023-01-01" # 查看服务日志 tail -f /var/log/syslog # 实时追踪日志 ``` --- #### 五、用户与权限 1. **用户管理** ```bash useradd newuser # 创建用户 passwd newuser # 修改密码 last # 查看登录历史 ``` 2. **统计登录用户** ```bash grep -c "/bin/bash" /etc/passwd # 统计可登录用户数[^3] ``` --- #### 六、软件包管理 1. **Debian/Ubuntu** ```bash apt update && apt upgrade # 更新系统 apt install package_name # 安装软件 ``` 2. **CentOS/RHEL** ```bash yum update yum install package_name ``` --- §§ 1. 如何实时监控Linux服务器的CPU和内存使用情况? 2. 如何快速定位服务器上的大文件? 3. Linux下如何设置定时任务(如每日备份)? 4. 服务器日志文件过大时,如何安全清理? 5. 如何通过命令行实现服务器之间的文件同步?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值