引言
本文主要整理和介绍Java中,在linux下所用到的相关查询方法。
查看进程/线程
top 命令 | ps 命令
找出该进程内最耗费CPU的线程:可以使用ps -Lfp pid或者ps -mp pid -o THREAD, tid, time或者top -Hp pid
下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有ps、top、printf、jstack、grep。
top -Hp [pid] ps huH p {PID} | wc -l
TIME列就是各个Java线程耗费的CPU时间,CPU时间最长的是线程ID为21553的线程,用
printf "%x " 21553
得到21553的十六进制值为5431,下面会用到。
OK,下一步终于轮到jstack上场了,它用来输出进程21251的堆栈信息,然后根据线程ID的十六进制值grep,如下:
jstack 21251 | grep 5431
可以看到CPU消耗在com.wzc.manage.meta.vehicle.listener.DeviceOnlineMsgListener-1这个类的Object.wait(),就可以定位到改段代码。
查看日志
tail -n 10 test.log 查询日志尾部最后10行的日志;
tail -n +10 test.log 查询10行之后的所有日志;
head:
跟tail是相反的,tail是看后多少行日志;例子如下:
head -n 10 test.log 查询日志文件中的头10行日志;
head -n -10 test.log 查询日志文件除了最后10行的其他所有日志;
cat:
tac是倒序查看,是cat单词反写;例子如下:
cat -n test.log |grep "debug" 查询关键字的日志
文件相关
查找文件
find / -name filename.txt 根据名称查找/目录下的filename.txt文件
find . -name "*.xml" 递归查找所有的xml文件
find . -name "*.xml" | xargs grep "hello world" 递归查询所有文件内容中包含hello world的xml文件
grep -H 'spring' *.xml 查找所有包含spring的xml文件
find ./ -size 0 | xargs rm -f & 删除文件大小为0的文件
ls -l | grep 'jar' 查找当前目录中所有的jar文件
grep 'test' d* 显示所有以d开头的文件中包含test的行
grep 'test' aa bb cc 显示在aa、bb、cc、文件中匹配的test的行
grep '[a-z]{5}' aa 显示所有包含每个字符串至少有5个连续小写字符的字符串的行
文件目录
tree a 以树状图列出目录的内容
ls -al 查看文件,包含隐藏文件
复制文件
cp source dest 复制文件
cp -r sourceFolder tagetFolder 递归复制整个文件夹
scp sourceFile romoteUserName@remoteIp:remoteAddr 远程拷贝
查询程序是否运行
ps -ef | grep tomcat 查看所有有关tomcat的进程
kill -9 19979 终止线程号位19979的线程
查看端口
netstat -tln | grep 8080 查看8080的使用情况
lsof -i : 8080 查看端口属于哪个程序
netstat -ntlp 查看当前所有tcp端口
netstat -lanp 查看一台服务器上面哪些服务及端口
ps -ef |grep mysqld 查看一个服务有几个端口。比如要查看mysqld
netstat -pnt |grep :3306 |wc 查看某一端口的连接数量,比如3306端口