工作中,常用的命令,进行总结下。
场景1:大张负责线上一个服务,使用java语言开发的。有一天,他收到报警,大概意思就是服务不能用,这个时候,老板让他查下是什么原因?
下面是大张的处理过程?
- 登录到这个机器,看下java进程
ps -aux | grep -v ‘grep’ | grep java –color=auto
经过分析,
场景1:发现没有这个服务的java进程,大张给老板说,这个服务停了。这个事情算是搞定了。
场景2:发现这个服务的进程是存在的,大张执行下面的命令,看下这个服务的监听的端口,
netstat -lnpt
大张看到了这个监听的端口是有的,但是看不到哪个是进程占用的,因为大张的权限问题,大张切换成root角色权限的用户,假设叫niubi
sudo -u niubi -i
大张看到了占用这个端口的进程,lsof -i:端口,然后大张想看下监听这个端口的进程和刚才用ps -ef | grep -v ‘grep’ | grep java 查到的进程是啥关系,然后大张使用了如下命令,
pstree
但是,大张看不出什么,大张又执行了pstree -Aup
这个时候大张发现,这两个进程的父子关系,然后就断定,进程没问题,端口没问题,那么怎么办呢?其实,本应该去看应用的日志的,哎,还是去看应用日志吧。 - 看应用日志
日志文件都存放到一个指定目录,假设为/var/apps/log
这个目录下面有很多的日志,大张,先执行如下命令:
ls -ls
这么多日志,怎么看,大张找到了当天的日志,假设是app.log.2015-09-12
大张使用命令
less -MN app.log.2015-09-12
然后输入error,没啥收获,然后大张执行命令:
cat app.log.2015-09-12 | grep Exception –color=auto
发现很多异常,大张想看下有多少,然后执行了命令
cat app.log.2015-09-12 | grep Exception | wc -l
(或者grep Exception app.log.2015-09-12)
哇塞,还挺多,问题很严重!
不过从日志中,经过分析可能是IO方面的问题,大张决定看下机器的负载情况。 - 看机器负载
大张执行了命令top
大张看了几个cpu,和内存使用情况,然后看了眼有无僵尸(zombie)进程
,应该没啥问题,然后大张又看了下磁盘使用情况:
df -hl
也没啥问题,然后看下当前目录的总量占用情况,执行命令:du -sh ./
也没啥问题,执行du -sh *命令,看了每个日志文件的大小,也没啥,
大张实在是解决不了问题了,抓狂!!!!!
场景2:
有一天,大张启动一个需要打开很多文件的程序,总是打不开文件,凭着经验,大张想应该是用命令看下:ulimit -a
发现,原来系统的文件打开数量限制是1024,而大张想看下当前打开的有多少,执行命令lsof | wc -l
然后大张调整了ulimit大小,就OK了。
后来,大张学习了以下命令:
物理cpu的个数如下所示:
cat /proc/cpuinfo | grep ‘physical id’ | sort | uniq | wc -l
每个物理CPU中core的个数(即核数),如下:
cat /proc/cpuinfo| grep ‘cpu cores’ | uniq
查看内存使用情况:
free -m
查看硬盘使用情况:
fdisk -l
df -h
查看I/O性能:
iostat
查看负载
uptime
查看系统内核
uname -a
查看使用的Linux发行发版的相关信息:
lsb_release -a
查询PCI设置
lspci
查询网卡型号
lspci | grep Ether
查看系统路由表
route -n
或者通过如下命令:
netstat -r
追踪网路数据包的路径
traceroute www.163.com
场景3:大张的公司的机器上的命令有很多都弄成别名了,大张想看下,
然后大张执行如下命令:
alias