一、系统版本

1. uname -a:查看系统内核版本

命令类型系统调用/内置核心工具(属于 GNU coreutils 核心工具包)

常用参数

uname -a:显示全部系统信息(内核名、主机名、内核版本、编译时间、架构等)。

uname -r:仅显示内核版本号(如 5.15.0-88-generic)。

使用场景:当你需要确认当前系统的 Linux 内核版本(以判断是否支持某些底层特性或安全补丁)时使用。

2. hostnamectl:查看系统全面信息

命令类型系统服务管理命令(systemd 工具集的一部分)。

常用参数:直接输入 hostnamectl 或 hostnamectl status。

输出内容:它会优雅地展示静态主机名、操作系统发行版(Operating System)、内核版本(Kernel)、硬件架构(Architecture)等。

使用场景:现代 Linux 系统(CentOS 7+, Ubuntu 16.04+)中最推荐的命令,一条命令看全所有信息。

3. cat /etc/os-release:查看发行版信息

命令类型文本查看命令(利用 cat 读取系统配置文件)。

原理:/etc/os-release 是一个符合自由桌面(Freedesktop.org)标准的配置文件,几乎所有现代 Linux 发行版都包含它。

使用场景:编写自动化脚本时最常用,因为它的输出是通用的 KEY=VALUE 格式(如 NAME="Ubuntu", VERSION="22.04 LTS"),极易被脚本解析。

二、性能与资源监控(系统瓶颈排查)

面试官:“服务响应变慢/卡死了,你上服务器怎么排查?”

(一)系统整体负载

第一步:先看系统整体负载,定位瓶颈大类(CPU / 内存 / IO)

1.先执行 uptime 查看 1、5、15 分钟平均负载,判断服务器整体压力是否过高。

2.执行 top 查看实时资源:

l 按 P 看 CPU 占用最高进程,M 看内存占用最高进程;

l 按 1 查看每个 CPU 核心使用率;

l 重点观察三个指标:

%us 用户 CPU 高:业务程序代码消耗 CPU;

%wa IO 等待高:磁盘读写瓶颈;

Swap 交换分区大量使用:物理内存不足。

(二)CPU瓶颈

第二步:如果怀疑 CPU 瓶颈

1.top 找到高 CPU 的进程 PID;

2.用 ps -ef | grep PID 确认是哪个服务;

3.java 程序  jstack PID > stack.log 确定代码位置

  临时操作 kill -9 PID

(三)CPU内存耗尽

1.free -h 查看系统当前内存

2.sync 同步数据

3.可重启服务器解决或者

Top 查询高内存PID kill -9 PID

(四)磁盘空间

1. df -h   确认哪个分区满了

2. Cd  /  进入根目录 定位大文件

   Du -sh *  

3.rm -f 文件名  清除过期、无用日志文件

三、CPU型号

1.lscpu(推荐,格式化清晰)

   直接展示:CPU 型号、架构、核心、线程、主频、缓存等所有信息。

2.cat /proc/cpuinfo       

#proc 英文程序  内存虚拟目录

     /proc/cpuinfo 是一个虚拟文件,记录了CPU的原始详细信息

Linux 系统把 CPU 信息存在这个虚拟文件中。如果你只想看型号,可以用 grep 过滤一下:

1.png

 

关键字段说明

model name:CPU 型号(最关键)

cpu cores:物理核心数

siblings:逻辑 CPU 总数

processor:逻辑 CPU 编号

physical id:物理 CPU 插槽 ID

 

四、网络与连接

(一)查看网卡、IP状态

1. ip address (或 简写 ip  a)

    ifconfig

   作用: 查看所有网卡的 IP 地址、MAC 地址和状态(UP/DOWN)。

   备忘: 老旧系统用 ifconfig,现代系统推荐 ip 命令。

2.ip link

   作用: 专门查看链路层状态,确认网卡物理上是否连接(比如网线插好没)。

3. ethtool <网卡名>

作用: 查看网卡的物理属性(速度 Speed、双工模式 Duplex、网线连接状态 Link detected)

(二)查看端口监听、进程占用(高频)

1. netstat -tulnp(传统命令)

2. ss -tulnp(推荐,比 netstat 快,海量连接场景性能好)

 -t TCP、-u UDP、l 监听、n 不解析域名、p 显示进程 PID

3. 根据端口查进程:

bash
lsof -i:8080
netstat -tulnp | grep 8080

(三)连通性、延迟、丢包排查

1. ping 目标IP/域名
测试三层网络连通、延迟、是否丢包

2. traceroute IP
路由追踪,定位哪一跳网络延迟高、断网

3. telnet IP 端口
测试 TCP 端口是否可通

4. curl -I http://ip:port / wget
测试应用层接口能否正常访问

(四)抓包分析(定位请求异常、丢包、重传)

bash
# 抓取指定网卡、指定端口流量
tcpdump -i eth0 port 8080 -w test.pcap
# 控制台实时打印
tcpdump -i eth0 host 192.168.1.10

抓包文件可以用 Wireshark 打开详细分析。

(五)防火墙、路由排查

1. 查看路由表

bash
route -n
ip route

2. 防火墙放行规则

bash
# firewalld
firewall-cmd --list-all
# iptables
iptables -L -n

 

 

五、文件和文本处理

(一)文件操作命令

1. cd 切换目录、pwd 当前路径、ls -lh 详细列表

2. mkdir -p a/b/c 递归创建目录

3. rm -rf 删除(面试必提醒:慎用,禁止直接 rm -rf /)

4. cp 复制、mv 移动 / 重命名

5. chmod 755 file 权限、chown user:group file 修改属主属组

6. ln -s 源 软链接 创建软链接

(二)文件查看 & 日志排查(最常用)

1. cat:小文件全量查看

2. more / less:分页查看大日志

l     less:最推荐的分页查看工具。支持向前/向后翻页、关键词搜索。

快捷键:Space(下翻页)、b(上翻页)、/向后搜索、?向前搜索、q(退出)。

l more:早期的分页工具,只能向前翻页,功能不如 less 强大。

3. 查看文件首尾

l     head:查看文件的前几行(默认 10 行)。

head -n 20 file.txt(查看前 20 行)

l    tail:查看文件的后几行(默认 10 行)。

tail -n 20 file.txt(查看后 20 行)

tail -f log.txt:实时追踪文件末尾的更新,排查日志必备。

4. grep "关键词" xxx.log 过滤日志

 -i忽略大小写;-v反向过滤;-n显示行号

5. find / -name "*.log" 全局查找文件

(三)常用压缩解压命令

1. tar 命令

tar 命令几乎可以处理 Linux 下 90% 的压缩包。它的核心参数非常固定,你只需要记住两套组合拳:

❶ 压缩(打包)公式

tar -[压缩格式参数]cvf  压缩包名.tar.[格式]  要压缩的文件或目录

·  -c:创建新的压缩包(Create)

·  -v:显示压缩过程(Verbose,可选)

·  -f:指定压缩包的文件名(File,必须作为最后一个参数,后面直接紧跟文件名)

❷ 解压(释放)公式

tar -[压缩格式参数]xvf  压缩包名.tar.[格式]  [-C 目标目录]

·  -x:解压/释放文件(eXtract)

·  -C:大写 C,指定解压到哪个目录下(如果不加,默认解压到当前目录)

�� 针对不同格式,替换其中的 [压缩格式参数]:

根据不同的压缩算法,tar 的参数和文件后缀如下:

2.png

 

3.png

 

2. 跨平台神器:zip 与 unzip

如果需要和 Windows 用户交换文件,.zip 是最佳选择,因为 Windows 原生支持。

4.png

 

六、进程管理

1. ps:查看静态进程快照

核心用法ps -ef | grep java 或 ps aux | grep nginx(查看某个服务进程是否还在运行,并获取其 PID)。

2. kill:终止进程

核心用法

kill PID:发送 SIGTERM (15) 信号,尝试优雅关闭进程。

kill -9 PID:发送 SIGKILL (9) 信号,强制杀死进程(常问 15 和 9 的区别)。

3. 后台运行进程 nohup

bash
# 后台运行,日志默认输出到 nohup.out
nohup python test.py &

# 指定日志文件
nohup python test.py >
output.log 2>&1 &

命令拆解(非常核心):

 nohup ... &:头尾组合,代表后台运行且免疫终端关闭。

 > output.log:将标准输出(原本打印在屏幕上的内容)重定向到 output.log 文件中。

 2>&1:将错误输出(2)也合并到标准输出(1)中,这样报错和正常日志都会写进同一个文件。