linux命令

1. 系统相关

lsb_release -a      //查看系统版本

reboot              //重启
last reboot         //启动记录

2. 进程相关

1. ps

ps -ef | grep plutus

输出示例:


  UID    PID    PPID   C   STIME   TTY    TIME       CMD
  root   9724   1      2   13:35   ?      00:02:15   /usr/bin/java -jar /usr/local/src/servers/target/plutus-1.0.0-SNAPSHOT.jar

字段说明:

列名 全称 含义 示例解释
UID User ID 进程所有者的用户名 root:表示以 root 用户运行
PID Process ID 进程ID,系统唯一标识 12345:这是你的 plutus 应用进程ID
PPID Parent Process ID 父进程ID 1:通常 init/systemd 进程的PID
C CPU Utilization CPU使用率(百分比) 2:当前占用2%的CPU
STIME Start Time 进程启动时间 14:30:下午2:30启动
TTY Terminal Type 关联的终端 ?:表示没有终端(后台进程)
TIME CPU Time 进程占用CPU的总时间 00:10:30:累计使用10分30秒CPU时间
CMD Command 启动进程的命令 java -jar plutus-app.jar:执行的命令
ps aux | grep plutus

输出示例:


  USER      PID     %CPU   %MEM    VSZ         RSS       TTY    STAT     START   TIME     COMMAND
  root      9724    2.1    5.7     10244436    910720    ?      Ssl      13:35   2:16     /usr/bin/java -jar /usr/local/src/servers/target/plutus-1.0.0-SNAPSHOT.jar

字段说明:

列名 含义 详细说明 诊断意义
USER 进程所有者 运行该进程的系统用户 权限问题排查
PID 进程ID 系统唯一的进程标识符 用于其他诊断命令(如jstack)
%CPU CPU使用率 进程占用CPU的百分比
多核CPU可能超过100%
>80%可能表示CPU瓶颈或死循环
%MEM 内存使用率 进程占用物理内存的百分比 >80%可能内存泄漏,接近100%要OOM
VSZ 虚拟内存大小 Virtual Set Size (KB)
进程可访问的总虚拟内存
包含共享库等,一般较大
RSS 物理内存大小 Resident Set Size (KB)
实际占用的物理内存
关键指标,持续增长=内存泄漏
TTY 控制终端 关联的终端设备
?=无终端(后台进程)
pts/0=终端窗口
判断是否为守护进程
STAT 进程状态 见下方状态码详解 判断进程是否正常
START 启动时间 进程启动的日期/时间
Jan25=1月25日启动
14:30=今天14:30启动
确认是否长时间运行
TIME CPU时间 进程累计使用的CPU时间
45:23=45分23秒
持续增长但业务不繁忙=有问题
COMMAND 命令行 完整的启动命令和参数 查看JVM参数和配置
kill -9 <PID>   //杀死进程(-9 表示强制终止)

3. 端口相关

1. netstat (传统)

# 查看所有端口占用情况
netstat -tunlp

# 查看特定端口(如8080)
netstat -tunlp | grep :8080

# 查看特定端口,显示详细信息
netstat -tunap | grep :8080

# 查看TCP端口
netstat -ntlp

# 查看UDP端口
netstat -nupl

# 组合命令,获取详细信息
netstat -tunlp | grep :8007 | awk '{print $7}' | cut -d'/' -f1 | xargs ps -fp

参数说明:

-t : TCP端口
-u : UDP端口
-n : 以数字形式显示地址和端口
-l : 仅显示监听端口
-p : 显示进程ID和名称
-a : 显示所有连接和监听端口

输出示例:


    Proto     Recv-Q    Send-Q     Local Address           Foreign Address        State       PID/Program name  
    tcp       0         0          0 0.0.0.0:8080          0.0.0.0:*              LISTEN      12345/java

2. ss(推荐,更快)

# 查看所有端口占用,更推荐
ss -tunlp

# 查看特定端口
ss -tunlp | grep :8080

# 查看TCP监听端口
ss -tlp

# 查看UDP监听端口
ss -ulp

# 查看所有TCP连接(包括已建立的)
ss -tnap

返回示例:

  
  Netid   State    Recv-Q   Send-Q    Local Address:Port    Peer Address:Port   Process
  tcp     LISTEN   0        128       0.0.0.0:8080          0.0.0.0:*           users:(("java",pid=12345,fd=42))
  

3. lsof

# 查看端口占用
lsof -i :8080

# 查看TCP端口
lsof -i TCP:8080

# 查看UDP端口  
lsof -i UDP:53

# 查看特定端口范围
lsof -i :8080-8089

# 查看所有网络连接
lsof -i

# 查看特定用户的端口占用
lsof -i -u root

# 查看特定进程的端口
lsof -i -p 12345

返回示例:


  COMMAND     PID     USER      FD     TYPE    DEVICE       SIZE/OFF   NODE     NAME
  chronyd     578     chrony    5u     IPv4    16815        0t0        UDP      localhost:323 
  java        3849    root      207u   IPv6    610625776    0t0        TCP      *:8007 (LISTEN)  

4. 服务相关

查询服务:

systemctl list-units --type=service   //查询服务列表

systemctl --type=service              //查询服务列表

systemctl --type=service | grep aud   //模糊匹配 aud 的服务

操作服务:

# 启动
systemctl start auto_start_ce-tripartite-system-docking_test.service
# 停止
systemctl stop auto_start_ce-tripartite-system-docking_test.service
# 重启
systemctl restart auto_start_ce-tripartite-system-docking_test.service
# 状态
systemctl status auto_start_ce-tripartite-system-docking_test.service

# 重新加载服务(service 文件修改的时候)
sudo systemctl daemon-reload

# 启动服务
systemctl enable docking.service

# 查看服务状态
systemctl status docking.service

# 关闭cesi服务的开机自启动
sudo systemctl disable cesi.service

服务相关的文档:https://www.cnblogs.com/cnff/p/19166112#3-linux-服务

5. 文件相关

1. 查看

find -name “*.log”	  //查询文件

zcat info-2025-10-01.log.gz | grep '要查询的文本'	//在文件中搜索

unzip filename.zip   //解压 zip

2. vim 编辑

vim test.txt    //进入编辑文档

//搜搜,非编辑模式下,输入 /bind 然后回车,模糊查找 ‘bind’,按 ‘n’ 下一个,按 ‘i’ 进入编辑

3. mdkir

创建文件夹

mkdir directory    ## 创建 directory 文件夹

mkdir -p /home/user/project/src/main/java     ## 创建多级文件,及时已经有了也不会报错

6. java 相关

1. SpringBoot jar 包启动

# 启动 jar 包
java -Xms2g -Xmx2g -XX:+UseG1GC -jar springboot-app.jar --spring.profiles.active=prod	 

# > 和 >> 的区别,>> 追加,> 覆盖
nohup java -Xms512m -Xmx1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -XX:+UseG1GC -jar ce-system-1.0.jar > ./ce_log/info.log 2>&1 &	

nohup:让命令在后台运行,并且忽略挂起信号(即终端关闭时命令不会停止)。

java -jar service3.jar --server.port=8082:启动Spring Boot服务,指定jar包和端口。

service3.log:将标准输出(stdout)重定向到文件service3.log。

2>&1:将标准错误(stderr)重定向到标准输出(stdout)。因为标准输出已经重定向到service3.log,所以标准错误也会写入同一个文件。

&:在后台运行命令。

2. jps (JVM Process Status Tool)

列出当前系统的 Java 进程,找启动的 java 项目和文件路径好用

jps -l      # 显示完整包名
jps -v      # 显示 JVM 参数
jps -m      # 显示传递给 main 方法的参数

3. jstat (JVM Statistics Monitoring Tool)

JVM 统计信息监控

jstat -gc <pid> 1000 10    # 每1秒打印一次GC情况,共10次
jstat -class <pid>         # 类加载统计
jstat -compiler <pid>      # JIT编译器统计
jstat -gcutil <pid>        # GC统计摘要

4. jinfo (Configuration Info for Java)

查看和修改 JVM 参数(部分,展示 jvm 参数,Xmx、Xms 等

jinfo <pid>                  # 查看所有参数
jinfo -flags <pid>           # 查看设置的JVM参数
jinfo -sysprops <pid>        # 查看系统属性
jinfo -flag +PrintGCDetails <pid>  # 动态开启GC日志

5. jmap (Memory Map for Java)

内存分析工具,大致展示一下堆内存使用情况

jmap -heap <pid>                # 堆内存摘要
jmap -histo <pid>               # 对象直方图
jmap -dump:format=b,file=heap.bin <pid>  # 生成堆转储文件, format=b 表示二进制
jmap -dump:live,format=b,file=heap.bin <pid>  # 只dump存活对象

6. jhat (JVM Heap Analysis Tool)

堆转储分析工具(内置 HTTP 服务器),目前不太会用

jhat heap.bin          # 分析堆转储文件,把 jmap 生成的文件拉到本地来后,执行这个命令会启动一个 java 进程
# 访问 http://localhost:7000 查看结果

7. jstack (Stack Trace for Java)

线程堆栈分析工具,目前也不太会用

jstack <pid>                     # 生成线程快照
jstack <pid> > stack.txt         # 生成线程快照信息到 stack.txt 文件
jstack -F <pid>                  # 强制生成(当进程挂起时)
jstack -l <pid>                  # 显示锁信息
jstack -m <pid>                  # 混合模式(Java + Native栈)

8. jconsole (Java Monitoring and Management Console)

图形化监控工具,打开是一个图形化工具,如果要连接远程的,需要开放 JMX

jconsole                         # 启动控制台
jconsole <pid>                   # 连接指定进程

9. jcmd (JVM Diagnostic Commands) - Java 7+

多功能诊断命令

jcmd                            # 列出所有Java进程
jcmd <pid> help                 # 查看可用命令
jcmd <pid> Thread.print         # 等同于jstack
jcmd <pid> GC.heap_dump filename=heap.bin  # 等同于jmap -dump
jcmd <pid> VM.flags             # 查看JVM参数
jcmd <pid> VM.system_properties # 查看系统属性
jcmd <pid> GC.class_histogram   # 查看类直方图
jcmd <pid> PerfCounter.print    # 查看性能计数器

10. javap (Class File Disassembler)

类文件反汇编器

javap -c MyClass.class          # 显示字节码
javap -v MyClass.class          # 详细信息
javap -p MyClass.class          # 显示私有成员

7. 权限

# 赋权
chmod 777 test.txt

8. 创建用户

1. adduser 添加用户

# 创建 pz 用户
sudo adduser pz

# 设置用户密码
sudo passwd pz

# 切换用户
su pz
posted @ 2025-12-25 21:13  primaryC  阅读(5)  评论(0)    收藏  举报