`

[转] 工程师追查线上问题(或运维)常用的shell命令

 
阅读更多

 

1、日志分析类:

(1)

cut -d ‘’ -f4 wap_log |sort |uniq -c

 

比如cpu idle急剧下降,要看一下当前的流量如何,是否是由于流量突增引起。可以使用该命令:

其中wap_log是日志名,4 是时间那一列,简单介绍下这个shell命令。

这是一行实例日志行:

218.203.63.190 – - [09/Feb/2012:12:15:03 +0800] “GET /view/102795.html HTTP/1.1″ 200 4557 “-” “MAUI WAP Browser” “jid=XKYGPzLXwG!70061790;$path=/” 76

在这个shell命令中,cut先根据空格分隔符对日志行进行分割,然后取第4个field,也就是时间,取到时间后,对时间进行排序,排序后,再去重,计数。这样就可以输出每个时间段的日志浏览量。

下面是改shell的输出实例:

18 [09/Feb/2012:12:54:51

14 [09/Feb/2012:12:54:52

11 [09/Feb/2012:12:54:53

10 [09/Feb/2012:12:54:54

12 [09/Feb/2012:12:54:55

15 [09/Feb/2012:12:54:56

11 [09/Feb/2012:12:54:57

第一列是个数,第二列是时间,当然,也可以针对于这个在后面再用awk任意发挥,比如找出浏览量大于x的时间段,等等。这样就可以清楚的看到,每个时间点的请求数,从而判定是否是请求数过大导致。

 

(2)

cat access_log |awk 'BEGIN{sum=0;count=0;}{sum+=$NF;count++;}END{printf("sum=%d,count=%d,avg=%f\n",sum,count, sum/count)}'

access_log为日志名,用awk切割后,$NF为最后一个域,就是耗时域,所以这条命令的作用就是计算平均耗时。

下面是该shell的实例输出:

sum=3121224,count=96000,avg=32.512750

 

 

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

 

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、查看2009年6月21日14时这一个小时内有多少IP访问:

 awk '{print $4,$1}' log_file | grep 21/Jun/2009:14 | awk '{print $2}'| sort | uniq | wc -l

 

8、统计访问最多的10个ip

 awk '{a[$1]+=1;}END{for(i in a){print a[i]" " i;}}'  access.log |sort -g |head -10

 

 

2、性能分析类:

(1)

ps aux | sort –n –k 5 | tail

得到耗内存最大的10个进程。

ps aux 就不用解释了,后面sort,-n代表按照数字大小进行排序,-k代表排序的key  6 代表第6列,第6列就是占用内存大小列。

下面是输出:

**     11800  0.0  0.0 261652 49316 ?      S     2011   3:32 **.

**     11801  0.0  0.0 261652 49316 ?      S     2011   3:33 **.

**    11802  0.0  0.0 261652 49316 ?      S     2011   3:33 **.

**    11803  0.0  0.0 261652 49316 ?      S     2011   3:33 **.

**     11804  0.0  0.0 261652 49316 ?      S     2011   3:33 **.

**    11805  0.0  0.0 261652 49316 ?      S     2011   3:32 **.

**     25511  0.0  0.0 261652 49316 ?      S     2011   1:15 **.

**    25512  0.0  0.0 261652 49316 ?      S     2011   0:00 **.

**     28391  1.4  0.5 547488 369664 ?     Ssl  Jan16 501:58 **

(**为用户名和进程名,已隐藏。)

(2)

ps aux | sort –n –k 4 | tail

同理,这是得到cpu消耗最大的10个进程

 

strace -o output.txt -T -tt -e trace=all -p 28979

 

跟踪28979进程的所有系统调用(-e trace=all),并统计系统调用的花费时间,以及开始时间(并以可视化的时分秒格式显示),最后将记录结果存在output.txt文件里面

 

(3)

lsof

当然lsof不属于性能分析类,但是该命令又经常会用到:

 

lsof filename

显示开启filename这个文件的进程名

 

lsof –i:8099

查看开启8099端口的进程

(4)

netstat

查找端口的进程名除了用lsof外,也可以用netstat,

直接netstat –nlp | grep port即可

 

不过一般只有root权限才可以用lsof,普通用户的话,可以使用/usr/sbin/lsof 不过一般没有太多有价值的信息。

3、其他类:

(1)rsync命令

rsync命令一般用来和线上机同步代码,那他和scp有什么不同呢? 一个是rsync命令可以方便的exclude,scp无法方便的exclude.另外,有一个很重要的不同是,rsync可以保持软链,但scp不能保持软链。就是说,scp在执行过程中,不会识别软链,而是直接当做普通文件夹来处理。另外,比较重要的是,rsync为增量同步,scp为全量

一般同步命令如下:

rsync -av –bwlimit=2000 –progress –exlude=”log” 源地址  目标地址

-av这个参数大家可以到网上搜下,这里就不再详解了,av这个参数,如果没有特殊需求,就把这个参数带上。

–bwlimit是限速,单位是kb

–progress代表是显示同步进度

–exclude代表,不同步的文件夹,这个文件夹是基于源地址的,也就是说比如exclude写的是log,源地址写的是/home/xx/ 那么,不同步的文件夹就是/home/xx/log。

 

 

跟踪线上日志定时刷新最新内容

 

tail -f path
 
# 查看

 

df -h

查看磁盘io,

iostat

查看磁盘空间
df -h

 

统计文件/夹大小

du -sh 

查找文件

 

find path -name "*.conf" -print
 
#查看防火墙规则
sudo iptables -L 
分享到:
评论

相关推荐

    linux运维笔记:企业级Zabbix监控实战.docx

    监控是整个运维乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供详实的数据用于追查定位问题。监控的重要性在于能够实时反馈系统当前状态,保证服务可靠性和安全性,及时发现问题,避免业务中断...

    数据中心运维安全审计.pdf

    1. 提高运维管理效率,解决分散的IT运维问题。 2. 解决运维人员账号共享问题,实现人员与行为对应。 3. 改进密码管理,以增强安全性。 4. 实施有效的运维监管,防范潜在风险。 5. 建立符合行业法规的安全风险控管...

    linux命令函数大全

    在Linux操作系统中,命令行是用户与系统交互的主要方式,而Linux命令函数则是这个交互界面的核心元素。"Linux命令函数大全"涵盖了...因此,无论是日常运维还是开发工作,Linux命令函数都是IT专业人士不可或缺的技能。

    云平台下的运维体系建设工作内容.pdf

    * 例行检查:制定服务例行排查点,并不断完善,对服务进行定期检查,对排查过程中发现的问题,及时进行追查,排除可能存在的隐患。 * 预案管理:确定服务所需的各项监控、系统指标的阈值或临界点,以及出现该情况后...

    云计算的运维与行业变革分析.pdf

    - 故障追查和服务保障:快速定位并解决故障,提升服务质量,降低因运维问题导致的业务影响。 3. 行业反思:市场发展速度较慢,用户对于云计算的接纳度受到数据安全性的担忧。例如,盛大、CSDN等公司发生的数据泄露...

    集团企业数字化转型:集团企业IT大数据平台建设和运维整体解决方案共45页.ppt

    - **日志的价值**:日志包含丰富信息,如应用日志、用户活动、业务流程日志、配置文件系统、数据库审计、文件系统审计、操作系统度量、网络流量数据等,可用于问题追查、故障排除、安全审计和业务分析。 2. **智慧...

    运维安全审计立项需求报告完整.docx

    - **内部人员风险**:大量数据显示,内部人员是安全威胁的主要来源,特别是拥有高权限的运维人员,一旦发生恶意或误操作,可能造成重大损失。 - **现有体系的不足**:随着IT系统复杂性的增加,口令管理、多入口操作...

    IT运维分析与海量日志搜索方案.pptx

    IT运维分析与海量日志搜索方案是现代IT领域中一种重要的技术实践,旨在提升IT运维效率,通过大数据分析实现故障快速定位、安全审计以及业务优化。随着IT环境日益复杂,传统的运维方式已不能满足需求,因此转向IT ...

    wecube一站式 IT 架构管理和运维管理工具 v2.8.0-源码.zip

    - **审计跟踪**:记录所有运维操作,便于安全审计和问题追查。 - **数据加密**:敏感信息加密存储,保证数据安全。 5. **扩展性与定制化**: - **插件体系**:wecube采用插件化设计,易于扩展新功能或对接第三方...

    运维监控体系

    监控是整个运维乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供详实的数据用于追查定位问题。目前业界有很多不错的开源产品可供选择。选择一款开源的监控系统,是一个省时省力,效率最高的方案...

    iOS内存暴增问题追查与使用陷阱

    iOS内存暴增问题追查与使用陷阱 iOS开发中,内存问题一直是一个让人头疼的问题,特别是在项目中出现了崩溃的情况下。如何快速定位到崩溃的原因是非常重要的。本文将详细介绍如何使用XCode的调试工具来追查内存问题...

    事故分析追查制度.doc

    事故分析追查制度是针对机电设备安全运行...通过严格执行这样的事故分析追查制度,可以有效地提高机电设备的运行安全,减少事故的发生,同时增强员工的安全意识和责任意识,从而提升整个矿山或企业的安全生产管理水平。

    产品质量追查单.doc

    《产品质量追查单》是此体系中不可或缺的一环,它为企业提供了一种系统的、可操作的方式去追踪和改善生产过程中的质量问题。 一份标准的产品质量追查单通常包含了诸如制造单号、产品名称、生产数量、生产日期、抽查...

    iOS内存暴增问题追查与使用陷阱.docx编程资料

    ### iOS内存暴增问题追查与使用陷阱 #### 一、引言 在iOS开发过程中,内存管理一直是开发者面临的一项重要挑战。不合理的内存管理不仅会导致应用运行缓慢,还可能导致应用崩溃,严重影响用户体验。本文旨在深入...

    文件追查器 鼠-癸卯版

    这个文件追查器可以找出正在使用指定文件的进程,比如,有时候想要删除xxx.mp3文件,可系统会提示:“无法删除xxx.mp3,文件正被另一个程序使用”,而你又不知是哪个程序使用。使用这个追查器可以帮你找出使用者。该...

    开发工具: git 13、使用二分法查找哪一次提交引入了线上bug

    当线上有 bug 需要排查 bug 时,要最终定位到是哪个类的哪几行代码造成的这个 bug,此时就需要去看到底是哪一次提交的,是谁对这几行代码的修改造成了这次线上 bug,需要去定位责任人,发生时间等。 如果是比较严重...

    某煤矿事故分析追查制度——精品资料..doc

    综上所述,某煤矿事故分析追查制度是一套全面而严谨的安全生产管理体系,它以预防为主,通过对事故的深入分析找出问题根源,落实整改措施,达到保障煤矿安全生产的目的。该制度的实施有助于提升煤矿的设备管理水平,...

Global site tag (gtag.js) - Google Analytics