Linux,Java常用命令

119 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第12天,点击查看活动详情

Linux

man [命令] 打印命令详细文档

打印命令对应详细文档例如 man top;打开文档后h键查看操作的帮助文档,q退出文档

top 刷新打印当前占比最高进程

  • -c :显示进程完整路径
  • -p:后接进程号打印进程信息
  • -H:线程模式,配合-p使用查看进程下线程占比

top之后

  • M键 : 按内存使用排序
  • C键 : 按CPU使用排序
  • F键 : 调整展示列及列顺序
  • K键 :向指定PID进程发送消息,不写入具体消息则为关闭进程
  • Ctrl+Z: 退出查看窗口

通常操作过程:

  1. 使用top查看异常进程
  2. 使用top -Hp 进程号 查看线程信息,
  3. 使用printf "%x" 线程id 将线程id转换为16进制配合top及jstack 使用查找具体代码

free 打印当前资源占用情况

free -h:以方便阅读的方式展示资源单位

PS 打印进程信息

参数繁多建议使用man ps查看文档 常用的打印格式有两种 ps -ef:包含用户,进程id,CPU使用占比等 ps aux:除了上述还包含内存占比

好用的命令

# 打印内存使用前十的进程
ps axo %mem,pid,euser,cmd | sort -nr | head -10
# 打印cpu使用前十的进程
ps -aeo pcpu,user,pid,cmd | sort -nr | head -10

grep [选项] [参数] 查找符合条件的字符串

通常在一个查询命令后通过"|"连接grep命令过滤数据

  • -A:查看匹配字符后n行
  • -B:查看匹配字符前n行
  • -E: 使用正则过滤

JAVA

jinfo [选项] 进程id

打印JVM基础信息

  • -flags : 查看所有jvm参数设置,例如内存大小等
  • -sysprops : 查看进程对应应用详情

jstat [选项] 进程id 时间间隔毫秒毫秒 打印次数

打印JVM统计信息

  • -gcutil : 显示垃圾收集信息

jmap [选项] 进程id

打印JVM内存堆栈信息

  • -heap : 打印堆统计信息
  • -dump:导出堆栈数据至文件, jmap -dump:format=b,file=
  • -histo:live:打印存活对象统计 查看堆内对象的分布 Top 50
jmap -histo:live 30628 | sort -n -r -k2 | head -n 50

jstack [选项] 进程id

打印栈信息 查找进程下某个线程栈信息

jstack  进程id | grep -A 10 线程id

常用启动参数

参数说明
-Xms1G初始堆内存大小
-Xmx1G最大堆内存大小
-XX:+PrintGCDetails打印gc详细日志
-XX:+PrintGCDateStamps打印GC日期格式时间戳
-Xloggc:完整文件路径gc日志文件设置
-XX:HeapDumpOnOutOfMemoryError当内存溢出时生成堆快照
-XX:HeapDumpPath=目录指定生成堆快照目录

参考资料

developer.aliyun.com/article/727…

g-ghy.github.io/linux-comma…