话不多说,记录最近学到的一些命令。
1.日志分析,对比
我司服务器都在云上,而有时我们需要对比分析日志
下面语句是统计日志中出现相同内容的行数
find 日志路径 -name "日志名" | xargs cat | grep -E "要查找的内容(支持正则)" | wc -l
/** 解释下相关参数
xargs: xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
cat: cat 命令用于连接文件并打印到标准输出设备上。
grep: 它搜索指定文件的内容,匹配指定的模式 -E是可以支持正则匹配内容
wc: wc命令用于计算字数。-l 代表输出行数
*/
我们日志是不断输出的,我只想看最后几行咋办
tail [参数] [文件]
//查看文件倒数10行数据
eg: tail -n 10 notes.log
2.Java开发相关
1.java进程相关
//查询java进程
ps -ef | grep java
//杀死进程
kill pid
2.查看进程一些信息
1.类加载
jstat -class -t pid
2.gc情况
jstat -gc -t pid
跑了个简单的程序有如下信息
Timestamp S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
274.5 5120.0 5120.0 0.0 0.0 33280.0 7744.2 87552.0 0.0 4480.0 780.7 384.0 76.6 0 0.000 0 0.000 0.000
解释下参数:
/**
S0C:S0(From)的大小(KB)
S1C:S1(To)的大小(KB)
S0U:S0(From)已使用的大小(KB)
S1U:S1(To)已使用的大小(KB)
EC:Eden区的大小(KB)
EU:Eden已使用的大小(KB)
OC:老年代大小(KB)
OU:老年代已使用的大小(KB)
MC:方法区大小(KB)
MU:方法区已使用大小(KB)
CCSC:压缩类空间大小(KB)
CCSU:压缩类空间已使用大小(KB)
PC:永久区大小(KB)
PU:永久区已使用大小(KB)
YGC:新生代GC次数
YGCT:新生代GC耗时
FGC:Full GC次数
FGCT:Full GC耗时
GCT:GC总耗时
*/
3.显示各个代使用的情况
jstat -gccapacity -t pid
同样那个简单程序
Timestamp NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC
647.4 43520.0 698880.0 43520.0 5120.0 5120.0 33280.0 87552.0 1398272.0 87552.0 87552.0 0.0 1056768.0 4480.0 0.0 1048576.0 384.0 0 0
解释下参数
/**
与-gc相比,不仅输出了各个代当前的大小,还输出了各个代的最小、最大值。
* NGCMN:新生代最小值(KB)
* NGCMX:新生代最大值(KB)
* NGC:当前新生代大小(KB)
* OGCMN:老年代最小值(KB)
* OGCMX:老年代最大值(KB)
* PGCMN:永久区最小值(KB)
* PGCMX:永久区最大值(KB)
* -gccause:显示垃圾收集相关信息(同gcutil),同时显示最后一次或当前正在发生的垃圾收集的诱发原因
* */
4.分析线程相关问题
//jstack的作用就是将正在运行的jvm的线程进行快照
jstack pid
//生成快照,在当前命令目录下
jmap -dump:format=b,file=heap.hprof pid
//分析快照
jhat heap.hprof
5.查看端口占用
lsof -i:8000
输出如下:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nodejs 26993 root 10u IPv4 37999514 0t0 TCP *:8000 (LISTEN)