Javaer 运维指令合集(快餐版)
这年头,大家都喜欢吃快餐,虽不健康,但是奈何真香!这里我把经常使用的运维指令总结成一套指令快餐。之所以称之为快餐是因为每个指令都是简单的一句或者两句话的简介。注意很多指令用法奇多,文中不会一一列出。
系统相关
df
查看磁盘剩余空间。一般 df -h
free
查看内存使用情况。一般 free -h
du
查看文件占用磁盘空间。一般 du -h
top
查看系统整体情况,包括CPU,内存,负载等等。直接 top
即可。也可以这样 top -H -p pid
查看某个进程下的线程情况。
ps
查看系统进程。直接命令行输入 ps -ef
或者 ps aux
,将显示系统里面所有的进程。
一般我们会这样用 ps -ef|grep java|grep -v grep
或者 ps aux|grep tomcat|grep -v tomcat
。查找出所有java进程或者tomcat进程。
kill
杀死进程。一般 kill -9 pid
强制杀死进程。也可以这样 ps -ef | grep java | grep -v grep | awk '{print $2}' | xargs kill -9
批量杀死所有Java进程。
pstree
查看一个进程下的线程数。一般 pstree -p pid |wc -l
mpstat
查看cpu 有关信息。直接命令行输入 mpstat
,一般会这样使用, mpstat -P ALL 5 2
,每5秒采集一次,采集2次。
vmstat
查看虚拟内存使用状态,及CPU等信息。用法和 mpstat
类似, vmstat 2 1
每两秒采集一次,一共采集一次。
pmap
查看一个进程是如何使用内存的。一般 pmap pid
iostat
查看机器IO情况,一般直接输入 iostat
指令。
lsof
查看进程打开的文件及网络端口。一般 lsof filename
查看哪个进程在使用该文件。 lsof -i tcp:8083
列出哪个进程在使用8083端口
网络相关
curl
通过该指令可以访问URL地址。例如 curl http://url
wget
用于在命令行通过url下载文件,比如 wget http://url
ping
ping命令用来测试主机之间网络的连通性。 ping ip
telnet
一般用于检查服务端某个端口联通性,比如 telnet ip port
ss
, netstat
都可以显示网络系统的状态信息。一般 netstat -anp|grep 8080
或者 ss -lnp
。ss的优势是比较快。当服务器链接数过多时,netstat会很慢。
ifconfig
查看本机IP及硬件信息。一般 ifconfig -a
tcpdump
网络抓包,分析网络链接的细节问题。需要有sudo权限。
监听通过网卡 eth0
的网络包,并保存到 socketdump.dat
, tcpdump -i eth0 tcp -w socketdump.dat
注意这个文件需要使用 wireshark
来分析,你用肉眼是解读不出什么的。
监听某个主机某个端口 tcpdump tcp port 8089 and host hostname
监听某个网段的数据 tcpdump tcp -c 10 net 172.22
traceroute
用于追踪数据包在网络上的传输时的全部路径,它默认发送的数据包大小是40字节。一般 traceroute www.baidu.com
jvm相关
jps
查看运行中的java进程,一般的 jps -lv
jmap
查看JVM堆内存使用情况,包括GC算法等信息。一般 jmap -heap pid
。
dump出内存文件,用 jhat
或者MAT进行分析。一般 jmap -dump:format=b,file=dumpFileName pid
jhat
:
分析堆内存文件。一般 jhat -J-Xmx2G -port 9998 dumpFileName
然后在浏览器端通过9998端口访问。建议不要在线上服务器上操作,会很占用内存和CPU。
jstack
查看Java进程内的线程堆栈信息。一般的 jstack pid | grep "java.lang.Thread.state"| sort -nr| uniq -c
。查看进程各个状态数量。注意 jstack
显示的线程号都是16进制的。我们需要把进程号转换为16进制,命令行直接输入 printf '%x\n' 3528
,然后查找对应线程信息, jstack pid | grep 'nid
'
jstat
可以看出堆内存及GC情况,一般的 jstat -gcutil pid
。
结束
大家不要希望记住几个指令,就能解决线上所有问题,就能成为大牛。要想成为大牛还是要多实战,多看书。比如定位网络相关的问题,你最好多读几遍《TCP/IP详解》这本书,要想解决JVM相关的问题,你最好多去找几本JVM相关的书籍来看。快餐终究是快餐,解馋可以,对成长不利!
推荐阅读
你的内存够用吗
我是如何进行架构设计的