工作常用的linux命令总结

1.工作中,常用的命令,进行总结下

1.场景1

场景1:张三负责线上一个服务,使用java语言开发的。有一天,他收到报警,大概意思就是服务不能用,这个时候,老板让他查下是什么原因?
下面是张三的处理过程?

1.1 看java进程

 ps -aux | grep -v 'grep' | grep java --color=auto

发现没有这个服务的java进程,张三给老板说,这个服务停了。这个事情算是搞定了。
发现这个服务的进程是存在的,张三执行下面的命令,看下这个服务的监听的端口,

查看运行中的进程,比如进程的名字包含“reactor”字眼,那么命令如下:

pgrep -f reactor
netstat -lnpt 

张三看到了这个监听的端口是有的,但是看不到哪个是进程占用的,因为张三的权限问题,张三切换成root角色权限的用户,假设叫niubi

sudo -u niubi  -i

张三看到了占用这个端口的进程,lsof -i:端口,然后张三想看下监听这个端口的进程和刚才用ps -ef | grep -v ‘grep’ | grep java 查到的进程是啥关系,然后张三使用了如下命令,
pstree
但是,张三看不出什么,张三又执行了pstree -Aup
这个时候张三发现,这两个进程的父子关系,然后就断定,进程没问题,端口没问题,那么怎么办呢?其实,本应该去看应用的日志的,哎,还是去看应用日志吧。

1.2 看日志

日志文件都存放到一个指定目录,假设为/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方面的问题,张三决定看下机器的负载情况。

找到一个当前运行的指定的格式的日志文件,有一种简便的方法(这里使用了反引号和pgrep来获取myservice的进程Id(pid)),如下:

tail -n100 -f /data/log/192.168.218.141-`pgrep -f myservice_id`-2017-09-05.0.log 

从上面的这个例子,可以看出反引号的功能使用场景;

1.3 看负载

查看有几个cpu的方法如下:

输入top,然后输入1即可

张三执行了命令top
张三看了几个cpu,和内存使用情况,然后看了眼有无僵尸(zombie)进程
,应该没啥问题,然后张三又看了下磁盘使用情况:

df -hl

查看占用资源厉害的进程的方法如下:

输入top,然后shift + p即可查看

也没啥问题,然后看下当前目录的总量占用情况,执行命令:du -sh ./
也没啥问题,执行du -sh *命令,看了每个日志文件的大小,也没啥,
张三实在是解决不了问题了,抓狂!!!!!

场景2:

有一天,张三启动一个需要打开很多文件的程序,总是打不开文件,凭着经验,张三想应该是用命令看下:ulimit -a
发现,原来系统的文件打开数量限制是1024,而张三想看下当前打开的有多少,执行命令lsof | wc -l
然后张三调整了ulimit大小,就OK了。

文件

压缩目录/data/log下的所有文件,文件名字为datalog.zip,命令如下

zip -r datalog.zip /data/log/

Others

后来,张三学习了以下命令:
物理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

查看目录下子文件占用磁盘情况命令如下(max-depth表示递归的目录层级):

du -h --max-depth=1 ./

查看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

奇技淫巧

你可能感兴趣的:(linux)