Linux 系统管理
- 1. 查看系统信息
- 1.1 查看系统架构
- 1.2 查看 CPU 信息
- 2. ps 查看进程
- 3. kill 杀死进程
- 4. top 实时监控
- 5. free 查看内存
- 6. 磁盘管理
- 6.1 mount / umount:设备文件挂载 / 卸载
- 6.2 df:查看所有已挂载磁盘的使用情况
- 6.3 du:统计查看目录和文件大小
- 6.4 磁盘扩容
- 6.4.1 虚拟磁盘扩容(新增磁盘流程)
- 6.4.2 系统磁盘原地扩容(LVM)
- 6.4.3 新加磁盘扩容(LVM)
- 7. 网络管理核心基础命令
- 8. 软件包管理
- 8.1 基础操作
- 8.2 缓存管理
- 8.3 包信息查询
- 8.4 依赖与修复
- 8.5 卸载清理
- 8.6 其他常用
- 9. systemctl
- 9.1 常用命令表
- 9.2 状态字段简单解读(`systemctl status`)
- 9.3 系统电源 / 运行级别(target)
- 9.4 补充:服务单元文件位置
- 9.5 journalctl
涵盖系统信息查看、进程管理、内存与磁盘管理、网络管理核心命令。
1. 查看系统信息
1.1 查看系统架构
archuname-a1.2 查看 CPU 信息
lscpu2. ps 查看进程
# 查看帮助ps--helpall# BSD 风格命令psaux# Unix 风格命令ps-ef# 查看进程树(父子关系)psaxjf# 找到 strace 进程,但不包含本条命令psaux|grepstrace|grep-vgrep# 查看完整进程启动命令行cat/proc/1806/cmdline|tr'\0'' '3. kill 杀死进程
# 默认发送 SIGTERM(-15),请求进程正常退出killPID# 强杀(-9,SIGKILL),强制终止进程kill-9PID4. top 实时监控
# 进入交互界面后:按 M 键按内存使用率降序排序,按 P 键按 CPU 使用率降序排序,按 q 键退出toptop-ppidtop-uuser5. free 查看内存
# 需要重点关注 available 大小,因为 Linux 系统会尽可能使用空闲内存做缓存free-h6. 磁盘管理
6.1 mount / umount:设备文件挂载 / 卸载
# 查看系统上挂载的设备列表mount# -t 可省略不指定,系统会自动识别文件系统类型mount-tvfat /dev/sdb1 /media/disk# 卸载挂载点umount/media/disk注意:
mount挂载重启后会失效,需要重新挂载;可在/etc/fstab文件中配置,实现开机自动挂载。
6.2 df:查看所有已挂载磁盘的使用情况
df-h| 参数 | 作用 |
|---|---|
| -h | 人类可读格式(GB/MB) |
| -T | 显示文件系统类型(ext4/xfs/ntfs) |
| -i | 显示 inode 使用情况(文件数量) |
| -t ext4 | 只显示指定类型的文件系统 |
| –total | 显示所有分区总和 |
6.3 du:统计查看目录和文件大小
# n 是目录层级,dir 是目标目录,结果从大到小排列du-ah-dndir|sort-hr# 统计当前目录下每个目录大小,按从大到小排序,取前 10 个du-sh*|sort-hr|head-10| 参数 | 作用 |
|---|---|
| -h | 人类可读格式(GB/MB) |
| -s | 只显示总和,不递归列出子目录 |
| -a | 显示所有文件(默认只显示目录) |
| -c | 显示总和(最后一行) |
| -d 1 | 只显示一层子目录(–max-depth=1) |
| –exclude=‘*.log’ | 排除日志文件 |
| -x | 只统计当前文件系统,不跨越挂载点 |
sort -hr:-h按人类可读格式比较大小(如 2K、1G),-r降序排列(从大到小)。
6.4 磁盘扩容
6.4.1 虚拟磁盘扩容(新增磁盘流程)
磁盘分区 fdisk → 创建文件系统 mkfs.ext4 → 挂载使用 mount(或修改 /etc/fstab) → 卸载使用 umount6.4.2 系统磁盘原地扩容(LVM)
- 在虚拟化平台(如 VMware)把磁盘从 20G 改成 40G
- 在操作系统内依次执行:
growpart扩分区 →pvresize→lvextend→resize2fs/xfs_growfs
演示:
[root@openeuler0902 ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda8:0040G0disk ├─sda18:101M0part ├─sda28:201G0part /boot └─sda38:3019G0part ├─openeuler_openeuler0902-root253:0017G0lvm / └─openeuler_openeuler0902-swap253:102G0lvm[SWAP]sr011:014.5G0rom[root@openeuler0902 home]# growpart /dev/sda 3CHANGED:partition=3start=2101248old:size=39839744end=41940991new:size=81784799end=83886046[root@openeuler0902 home]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda8:0040G0disk ├─sda18:101M0part ├─sda28:201G0part /boot └─sda38:3039G0part ├─openeuler_openeuler0902-root253:0017G0lvm / └─openeuler_openeuler0902-swap253:102G0lvm[SWAP]sr011:014.5G0rom[root@openeuler0902 home]# pvresize /dev/sda3Devicereadshort16896bytes remaining Physical volume"/dev/sda3"changed1physical volume(s)resized or updated /0physical volume(s)not resized[root@openeuler0902 home]# lvextend -l +100%FREE /dev/openeuler_openeuler0902/rootDevicereadshort16896bytes remaining Size of logical volume openeuler_openeuler0902/root changed from<17.00GiB(4351extents)to<37.00GiB(9471extents). Logical volume openeuler_openeuler0902/root successfully resized.[root@openeuler0902 home]# resize2fs /dev/openeuler_openeuler0902/rootresize2fs1.47.0(5-Feb-2023)Filesystem at /dev/openeuler_openeuler0902/root is mounted on /;on-line resizing required old_desc_blocks=3, new_desc_blocks=5The filesystem on /dev/openeuler_openeuler0902/root is now9698304(4k)blocks long.6.4.3 新加磁盘扩容(LVM)
- 服务器插一块新硬盘,识别为
/dev/sdb pvcreate /dev/sdb:创建物理卷vgextend <VG名> /dev/sdb:把新 PV 加入卷组lvextend:把空间分给 LV- 文件系统扩容
重点:物理硬盘硬件不能原地扩容,只能加盘,所以大量使用
vgextend。
7. 网络管理核心基础命令
| 命令 | 核心用途 | 常用示例 |
|---|---|---|
| ip | 现代全能网络管理工具,替代 ifconfig/route | ip a(查看 IP)、ip link set eth0 up(启用网卡)、ip route show(查看路由) |
| ss | 查看 socket 统计,替代 netstat,速度更快 | ss -tuln(查看所有监听端口)、ss -tup(显示进程名) |
| ping | 测试网络连通性与延迟 | ping -c 4 8.8.8.8(发 4 个包) |
| traceroute / tracepath | 追踪到目标的路由路径 | traceroute -n baidu.com(-n 不解析域名,更快) |
| nslookup / dig | DNS 解析查询 | dig @114.114.114.114 baidu.com(指定 DNS 服务器) |
| curl / wget | 应用层 HTTP/HTTPS 测试与下载 | curl -I https://example.com(只看响应头) |
8. 软件包管理
8.1 基础操作
| 操作 | Ubuntu apt | openEuler dnf |
|---|---|---|
| 更新软件源 | apt update | dnf makecache |
| 安装包 | apt install xxx | dnf install xxx |
| 删除包 | apt remove xxx | dnf remove xxx |
| 搜索软件 | apt search xxx | dnf search xxx |
| 查看已安装 | apt list --installed | dnf list installed |
| 系统升级 | apt upgrade | dnf upgrade |
8.2 缓存管理
| 操作 | Ubuntu apt | openEuler dnf |
|---|---|---|
| 清理缓存(已下载的安装包) | apt clean | dnf clean all |
| 只清理过期的缓存文件 | apt autoclean | dnf clean expire-cache |
8.3 包信息查询
| 操作 | Ubuntu apt | openEuler dnf |
|---|---|---|
| 查看包详细信息 | apt show xxx | dnf info xxx |
| 查看包是否已安装及版本 | apt list xxx | dnf list xxx |
| 查询某个文件属于哪个包 | apt-file search /path | dnf provides /path |
| 查看指定命令/文件的来源包 | dpkg -S /path | rpm -qf /path |
8.4 依赖与修复
| 操作 | Ubuntu apt | openEuler dnf |
|---|---|---|
| 检查/修复依赖问题 | apt --fix-broken install | dnf check |
| 列出包依赖关系 | apt depends xxx | dnf deplist xxx或dnf repoquery --requires xxx |
| 列出被依赖它的包(反向依赖) | apt rdepends xxx | dnf repoquery --whatrequires xxx |
| 安装本地 deb/rpm 包并自动处理依赖 | apt install ./xxx.deb | dnf install ./xxx.rpm |
8.5 卸载清理
| 操作 | Ubuntu apt | openEuler dnf |
|---|---|---|
| 删除包并清理配置文件 | apt purge xxx | dnf remove xxx(rpm 保留配置) |
| 自动移除不再需要的依赖包 | apt autoremove | dnf autoremove |
8.6 其他常用
| 操作 | Ubuntu apt | openEuler dnf |
|---|---|---|
| 查看可升级的软件包 | apt list --upgradable | dnf list updates |
| 升级单个包 | apt install --only-upgrade xxx | dnf upgrade xxx |
| 查看命令帮助 | apt help | dnf help |
| 重新安装某个包 | apt install --reinstall xxx | dnf reinstall xxx |
| 查看软件源配置 | cat /etc/apt/sources.list | cat /etc/yum.repos.d/*.repo |
| 列出所有软件源仓库 | apt-cache policy | dnf repolist |
9. systemctl
systemctl是systemd的命令行管理工具,现代 Linux(Ubuntu16.04+、openEuler、CentOS7+)默认使用;systemd 是系统 PID=1 的一号进程,负责系统初始化、后台服务管理、挂载、socket、定时器等单元(unit)管理。
一句话:管理系统后台服务,控制启停、开机自启、查看状态,管理系统单元。
你前面的 Ubuntu /openEuler 都支持 systemctl,两套发行版 systemctl 命令完全一致(区别只在包管理器 apt/dnf)。
9.1 常用命令表
| 操作 | 命令 | 说明 |
|---|---|---|
| 启动服务 | sudo systemctl start xxx.service | 立即启动,临时生效 |
| 停止服务 | sudo systemctl stop xxx.service | 立即停止 |
| 重启服务 | sudo systemctl restart xxx.service | stop + start,会断开连接 |
| 平滑重载配置 | sudo systemctl reload xxx.service | 不中断现有连接,仅加载新配置(部分服务不支持) |
| 查看服务状态 | systemctl status xxx.service | 看运行状态、PID、最近日志,排错首选 |
| 启用开机自启 | sudo systemctl enable xxx.service | 创建软链接,开机自动启动,不会立刻启动服务 |
| 启用自启并立刻启动 | sudo systemctl enable --now xxx.service | enable + start 一步到位 |
| 取消开机自启 | sudo systemctl disable xxx.service | 删除自启软链接 |
| 查看是否正在运行 | systemctl is-active xxx.service | 返回active/inactive |
| 查看是否开机自启 | systemctl is-enabled xxx.service | 返回enabled/disabled |
| 查看所有已加载服务 | systemctl list-units --type=service | |
| 查看运行中的服务 | systemctl list-units --type=service --state=running | |
| 查看启动失败服务 | systemctl --failed | 快速排查故障 |
| 重载 systemd 配置 | sudo systemctl daemon-reload | 修改 xxx.service 单元文件后必须执行,刷新缓存 |
| 屏蔽服务(禁止启动) | sudo systemctl mask xxx.service | 强制禁用,start/enable 都无法启动 |
| 取消屏蔽 | sudo systemctl unmask xxx.service | |
| 查看服务依赖 | systemctl list-dependencies xxx.service |
后缀
.service可以省略,systemctl status nginx等价nginx.service
9.2 状态字段简单解读(systemctl status)
Loaded: loaded (/xxx.service; enabled):配置文件已加载,开机自启已开启Active: active (running):正在运行Active: inactive (dead):已停止Active: failed:启动失败
9.3 系统电源 / 运行级别(target)
systemctl get-default # 查看默认启动目标 sudo systemctl set-default multi-user.target # 无图形界面开机 sudo systemctl set-default graphical.target # 图形界面开机 sudo systemctl poweroff # 关机 sudo systemctl reboot # 重启 sudo systemctl suspend # 挂起9.4 补充:服务单元文件位置
/usr/lib/systemd/system/:系统自带服务(不要直接改)/etc/systemd/system/:自定义服务,优先级更高,修改这里
9.5 journalctl
journalctl是systemd 配套的日志查看工具
systemd 会把系统、服务、进程的日志统一交给journald服务收集存储,journalctl就是用来读取这些日志的命令。
一句话理解:
systemctl管服务启停;journalctl管服务 / 系统日志。
常用命令
| 操作 | 命令 | 说明 |
|---|---|---|
| 查看全部日志 | journalctl | 从最早日志开始,分页查看 |
| 实时滚动日志(类似 tail -f) | journalctl -f | 持续输出最新日志,排错最常用 |
| 查看某个服务日志 | journalctl -u nginx.service | -u指定 unit,.service可省略 |
| 实时看某个服务日志 | journalctl -u nginx -f | 跟踪服务实时日志 |
| 只看本次开机后的日志 | journalctl -b | -b= boot,本次启动 |
| 查看上次开机日志 | journalctl -b -1 | 上次启动的日志,排查上次崩溃很有用 |
| 按时间过滤 | journalctl --since "2026-09-12 10:00:00" | 指定起始时间 |
| 只看错误级别日志 | journalctl -p err | priority:err 错误、warn 警告、info 信息 |
| 日志占用磁盘大小 | journalctl --disk-usage | 查看 journal 日志文件占多少空间 |
| 清理旧日志 | sudo journalctl --vacuum-size=500M | 保留日志总大小不超过 500M |
| 输出最新 N 行 | journalctl -n 200 | 输出最后 200 行 |