在服務器報cpu過高時,可使用以下命令,快速導出堆棧信息,以方便查看具體的問題。
使用top命令定位異常進程。可以看見12836的CPU和內存占用率都非常高
此時可以再執行ps -ef | grep java,查看所有的java進程,在結果中找到進程號為12836的進程,即可查看是哪個應用占用的該進程。
使用top -H -p 進程號查看異常線程
使用printf "%x\n" 線程號將異常線程號轉化為16進制
使用jstack 進程號|grep 16進制異常線程號 -A90來定位異常代碼的位置(最后的-A90是日志行數,也可以輸出為文本文件或使用其他數字)。可以看到異常代碼的位置。
查看java安裝路徑
whereis java
which java (java執行路徑)
echo $JAVA_HOME
echo $PATH
linux搜索文件名稱
//.點為查找當前目錄 下 的 所有 *.php 文件里 有 hello 的文件 find . -name "*.php" | xargs grep "hello" //根目錄 find / -name "*.php" | xargs grep "hello"
注意事項:
如果提示 -bash: jstack: command not found,則可以找到jdk的目錄,進入bin目錄,
在執行 ./jstack 進程號 | grep 16進制異常線程號 -A90 即可。
如果提示 well-known file is not secure,則是因為賬號權限的問題。在/tmp/hsperfdata_$USER/目錄,有一個以進程號命名的文件,當我們執行jmap或者jstack出現上敘信息時,先檢查執行該命令的用戶是否和hsperfdata_$USER這個文件所屬的用戶一致,如果不一致,切換至成一致再執行。執行:sudo -u 有權限的賬號 ./jstack 進程號 | grep 16進制異常線程號 -A50 即可。
參考文獻
https://blog.csdn.net/chenjunan888/article/details/80447800
linux如何修改文件夾所屬用戶名和用戶組
格式:chown 賬號名稱 文件或目錄
實例:chown www vpsss
增加權限給當前用戶 chmod +wx filename
chmod -R 777 /upload
用戶組 chgrp -R foldname zdz
chown -R 所有者用戶名.組名 文件夾名稱
例如:chown -R zdz.nginx KooBox