一、常见命令
二、日常使用的问题
javac无法使用
1.查看java的安装位置,以及下级目录内容,发现原来只装了JRE所以无法javac
2.卸载已安装JDK
查询是否已经安装JDK:rpm -qa|grep java
卸载已安装的jdk:
再次查看是否还有:
安装jdk:
查看可以安装的版本:
yum search java|grep jdk
找到合适的版本安装:
yum install java-1.8.0-openjdk-devel.x86_64
配置环境:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.372.b07-1.el7_9.x86_64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
三、常见问题排查
排查起手三连招
top:实时查看系统的运行状态,特别是cpu和内存
free:查看系统的内存使用【物理内存RAM、交换区SWAP等】
df:查看系统磁盘空间的使用【挂载点、总容量、已用可用容量等】
注意区分du和df,du是查看一个文件/目录的磁盘使用情况。
线上CPU飙升/频繁GC
给一个死循环:
1.【top】查看进程占用内存:
2.【ps H -eo 需要的数据 | grep 进程id】,查看线程的内存占用
3. 【jstack 进程号 | grep 线程ID】线程id需要转16进制,查看线程状态
(线程id需要转为16进制,因为打印出的信息是16进制的)
4.【jstat -gcutil 间隔 次数】持续监控GC
5. 【jmap -dump】如果频繁GC的话查看内存快照,看是大对象还是手动GC过多了
死锁排查
1.jps查看正在运行的线程
2.打印线程堆栈信息jstack查看:jstack pid
发现死锁
已知端口号查询进程信息and已知进程关键字查看端口
netstat -lnp |grep 端口号或者进程号
ps -ef |grep 进程号或者进程关键字
1).已知端口号查询进程信息
eg:
nesta -lnp 根据端口号查看进程id:
ps -ef查看进程状态
2).已知进程关键字查看端口号
ps -ef | grep 进程关键字 查看进程id
netstat -lnp | grep 进程id
eg:
ps -ef | grep 进程关键字 查看进程id
netstat -lnp | grep 进程id
排查僵尸进程
- A显示所有进程,-o自定义输出格式,stat状态,ppid父进程,pid进程id,cmd进程命令行