0%

Linux指令学习/JVM指令

1. 测试端口是否能连通

  • telnet ip port

在这里插入图片描述

  • ssh -v -p port username@ip
    (-v表示是debug模式)
    在这里插入图片描述
  • curl ip:port
    在这里插入图片描述

2. 远程登陆会话

  • 指令:ssh
  • SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。
    远程登陆ssh username@ip

    3. 检测本机的端口网络连接情况

  • 指令:netstat
  • 检测本机的端口连接情况,可以使用netstat
    netstat -ano | grep port

    4. 查看某个进程的情况

  • 指令: ps
  • 查看某个进程的情况
    ps -ef | grep pid

    5. 管道 + 正则匹配

  • 指令: 指令 | grep 正则表达式
  • grep ‘pattern‘ file pattern为正则匹配字符串,file为输入文件
    最常用的是配合管道来一起使用,即前一个指令的输出作为输入,然后用正则过滤,例如上面的ps -ef 就列出了所有的进程,然后 使用’|’ 作为管道连接字符,作为grep pid的输入, 就找到了指定pid的进程信息。

6. 服务器上传 / 下载文件

  • 指令:scp
  • scp [可选参数] file_source file_target

从服务器上下载或上传文件.

上传:
scp ./1.txt root@xx.xx.xx.xx:/usr/local/software/
下载:
scp root@xx.xx.xx.xx:/usr/local/software/1.txt .

7. cpu负载很高怎么查看

  • 执行top -c ,显示进程运行信息列表

  • 键入P (大写p),进程按照CPU使用率排序

案例一:CPU利用率100%怎么排查

第一步:找到最消CPU性能的进程
  1. top -c
  2. 键入大写P, 进程按照CPU使用率排序
    在这里插入图片描述
    第二步:查找进程内最耗CPU的线程
  3. top -Hp pid : 找出进程号为pid的进程中的所有线程
  4. 键入大写P,线程按照CPU使用率排序
第三步:转换线程ID
  1. printf “%x/n” thread_id
    在这里插入图片描述
第四步:定位Java进程中cpu占用率高的线程

jstack pid | grep thread_id_hex -A 需要打印的行数
下面是查看 14505进程中 “main”线程
在这里插入图片描述


Java相关指令

8. 打印出Java正在运行的进程

  • 指令:jps
  • 可以知道启动了哪些进程,对应的进程号
    在这里插入图片描述

    9. 图形化查看内存,线程等信息

  • 指令:jconsole
  • 连接对应的进程:
    在这里插入图片描述
  • 连接后的界面:
    可以查看内存(GC情况),线程,类,JVM情况和加载的Bean
    在这里插入图片描述

    10. 查看内存使用状况( jstat )

  • jstat -gc pid
  • 用的比较少,需要用到就百度吧..

    11. 分析Java线程的状况

  • 指令:jstack thread_id
  • 打印对应线程的运行情况

12. 把当前java进程的状态给dump下来,或查看内存信息

1. dump下来

  • 指令:jmap -dump:file=xxx pid (xxx是dump的文件名)
  • dump下来之后,需要用专门的工具来查看这个文件,有专门查看这类文件的可视化工具
    在这里插入图片描述

    2. 查看内存信息

  • 指令:jmap -heap pid
    在这里插入图片描述

13. 强大的监控图形界面

升级版jconsole, 并且能手动GC,并且可以手动直接dump,可以查看dump出来的dump文件! 很强大。

  • 指令:jvisualvm
    在这里插入图片描述

一个JVM参数,当出现OOM时,自动进行dump

  • 指令: -XX:+HeapDumpOnOutOfMemoryError

补充

a. 在指定文件夹下查询指定文件

指令:find base_dir -f file_name
这里的file_name是可以使用正则来匹配的,比如 *.txt

b. cut指令

1
2
3
4
$ cut
-d :分隔符,按列分割
-f :经过 -d 分隔后,使用 -f n 取出第 n 个列
-c :以字符为单位取出列。 ( ps: cut -c 7- 表示以自负为单位, 打印从第7列及其之后的字符列

示例 1:last 显示登入者的信息,取出用户名。

1
2
3
4
5
6
$ last
root pts/1 192.168.201.101 Sat Feb 7 12:35 still logged in
root pts/1 192.168.201.101 Fri Feb 6 12:13 - 18:46 (06:33)
root pts/1 192.168.201.254 Thu Feb 5 22:37 - 23:53 (01:16)

$ last | cut -d ' ' -f 1

示例 2:将 export 输出的信息,取出第 12 字符以后的所有字符串。

1
2
3
4
5
6
7
8
$ export
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/home/dmtsai"
declare -x HOSTNAME="study.centos.vbird"
.....(其他省略).....

$ export | cut -c 12-

c. sort指令

排序指令:
sort