工程师追查线上问题(或运维)常用的shell命令
shell本身是非常强大的,而工程师在追查线上问题时,如何能够更加快速更加有效的定位问题,用好shell非常关键。下面是我总结的几个在追查问题时常用的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
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个进程
(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。
好,对于shell命令,我就先写这么多,大家也可以基于这些命令自由发挥,拼接出更有价值的命令。
本文来自于 http://www.log4myself.info/archives/78
转载于:https://www.cnblogs.com/clam/archive/2012/03/29/2423084.html
工程师追查线上问题(或运维)常用的shell命令相关推荐
- 【微学堂】线上Linux服务器运维安全策略经验分享
技术转载:https://mp.weixin.qq.com/s?__biz=MjM5NTU2MTQwNA==&mid=402022683&idx=1&sn=6d403ab447 ...
- 运维常用进程查看命令
摘自腾讯课堂: 常用命令说明: 1 free 2 hostname 3 uptime 4 top top -p 查询CPU使用率来排序显示 5 ps -axu 查看每个进程的信息 ps ss+ 进程 ...
- 运维企业实战Shell脚本合集+万能工具箱
文章目录 系统维护篇 服务器日常巡检脚本 下线登录用户 企业级Linux日常自动抓取服务器巡检.登录.执行命令记录+备份脚本 终端对话&广播消息 批量查询IP归属地+手机号归属地信息 Linu ...
- python运维工程师前景及待遇_做运维工程师有前途吗?
运维是一个进入门槛低,但是发展前景大的行业. 去年我们老板从运维总监职位退下来的时候年薪75万,所以不要小看这个行业. 但是前路漫漫,想在这个领域有长足的发展,要学习很多,付出很多. "今年 ...
- 计算机维护工程师好找工作吗,一个IT运维工程师的内心独白
原标题:一个IT运维工程师的内心独白 一个挨踢(IT)运维工程师的内心独白 作为一名IT(挨踢)人,是很苦逼的 因为在别人眼里充其量就是修电脑的 谁家电脑坏了总让上门去修 其实我们是运维工程师 不是修 ...
- 2021云上架构与运维峰会12月10日线上开启,五大精彩看点不容错过
简介:本次峰会,希望通过分享云上架构与运维的最佳实践,促进业内DevOps与IaC理念的落地,帮助企业"用好云管好云",释放云的技术红利. 报名链接 12月10日,2021云上架构 ...
- 2021云上架构与运维峰会将于12月4日在上海举办,五大精彩看点不容错过
简介:本次峰会,希望通过分享云上架构与运维的最佳实践,促进业内DevOps与IaC理念的落地,帮助企业"用好云管好云",释放云的技术红利. 报名链接 12月4日,2021云上架构与 ...
- 抢先报名丨2021云上架构与运维峰会将于11月6日在北京举办,五大精彩看点不容错过
简介:本次峰会,希望通过分享云上架构与运维的最佳实践,促进业内DevOps与IaC理念的落地,帮助企业"用好云管好云",释放云的技术红利. 报名入口 11月6日,2021云上架构与 ...
- python自动化运维与开发岗位_新课 | 运维开发工程师必学的Python自动化运维课程,学完后悔没早点学!...
原标题:新课 | 运维开发工程师必学的Python自动化运维课程,学完后悔没早点学! 马哥教育2017年Python自动化开发实战班,根据目前企业需求的Python开发人才进行了深度定制,加入了大量一 ...
最新文章
- 当当网强烈谴责李国庆有关刘强东案言论
- 进阶指令——df指令(作用:查看磁盘的空间)、free指令(作用:查看内存使用情况)、head指令(作用:查看一个文件的前n行,如果不指定n,则默认显示前10行)、tail指令、less指令
- dom定义了访问html文档对象的,HTML DOM (文档对象模型)
- NLP —— 图模型(三)pLSA(Probabilistic latent semantic analysis,概率隐性语义分析)模型...
- java数据段 静态区_linux进程的堆栈空间_代码段(指令,只读)、数据段(静态变量,全局变量)、堆栈段(局部变量)、栈【转】...
- JavaScript强化教程—— RegExp 对象
- testng接口自动化测试_Java+Maven+TestNG接口(API)自动化测试教程(10) 使用 Jenkins 构建自动化测试持续集成...
- leetcode 852. 山脉数组的峰顶索引(二分查找)
- js中小数取整数(向上、向下取整数,四舍五入取整数的实现)
- Javascript 自定义输出
- SQL的汇总统计SELECT语句
- ruby编程API阅读之BasicObject阅读
- Apache Rewrite 理解
- tps协议和onvif协议_ONVIF协议解读
- vivado 下载bit报错End of startup status:LOW
- Appium自动化测试基础--补充:C/S架构和B/S架构说明
- efi分区能不能删除 win10_Win10不小心把EFI分区删除怎么恢复?
- 阿里巴巴Java开发手册认证考试题库
- 如何正确对用户密码进行加密?转自https://blog.csdn.net/zhouyan8603/article/details/80473083...
- 关于大数据后端粉丝交流群
热门文章
- java记住用户名和密码_JAVA--高级基础开发Cookie实现记住用户名和密码
- mysql不支持-_MySQL不支持的特性
- iis url重写 域名跳转子目录_IIS设置URL重写,实现页面的跳转的重定向方法
- 安装jdk时更改java安装路径_JDK下载安装步骤
- VS2012下基于Glut 绘制矩形管示例程序:
- Eclipse用法和技巧十五:自动添加未实现方法1
- Eclipse用法和技巧十一:分栏显示
- DelphiXE4发布了
- python dataframe 合并乱序列表_Python数据处理--删除重复项、数值替换和表合并
- ORA-00054 resource busy and acquire with NOWAIT specified Cause 错误解决方法