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)
图形化监控工具,打开是一个图形化工具,
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

浙公网安备 33010602011771号