常用命令:

系统相关

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