Linux核心命令实战指南:从进程管理到系统监控的必备技能

📅 2026/7/5 11:58:45
Linux核心命令实战指南:从进程管理到系统监控的必备技能
Linux 是服务器、云计算、容器和嵌入式开发领域的基石但很多初学者面对黑乎乎的终端窗口会感到无从下手。这篇文章不绕弯子直接聚焦于那些能让你立刻上手、解决实际问题的核心命令。无论你是需要管理云服务器、排查程序问题还是想高效操作文件掌握这些命令都能让你事半功倍。本文会带你快速过一遍进程管理、系统监控、磁盘操作、网络和服务管理等最常用、最核心的命令并提供清晰的示例和操作思路目标是让你看完就能用用了就有效。1. 核心能力速览Linux 命令能做什么在深入细节之前我们先快速了解通过命令行能解决哪些核心问题。这对于判断学习重点和投入时间至关重要。能力项说明与典型场景进程管理查看运行中的程序ps,top结束卡死或无响应的进程kill,killall这是运维和开发调试的日常。系统监控实时查看 CPU、内存、负载top,vmstat掌握服务器健康状态快速定位性能瓶颈。硬件与系统信息查看 CPU 架构、内核版本、内存详情uname,lscpu,/proc/meminfo,dmidecode用于环境确认和兼容性检查。磁盘与文件系统查看磁盘空间df列出块设备lsblk挂载/卸载存储mount/umount分区管理fdisk处理磁盘空间不足问题。网络与端口查看端口占用netstatlsof -i诊断网络连接这是部署 Web 服务、排查冲突的必备技能。用户与权限管理创建/删除用户useradd/userdel管理用户组wheel修改文件权限保障系统安全。服务管理启动、停止、重启系统服务systemctl并设置开机自启用于管理 Nginx、MySQL、Docker 等。登录与安全审计查看当前及历史登录用户who,w,last检查登录失败记录lastb分析安全日志/var/log/secure。这些命令构成了 Linux 系统管理的骨架无论是个人开发环境还是生产服务器都离不开它们。2. 适用场景与使用边界适合谁运维工程师日常服务器监控、故障排查、性能调优。后端/全栈开发者在 Linux 服务器上部署应用、查看日志、管理进程。学生与初学者学习操作系统原理完成课程实验搭建个人学习环境。任何需要在无图形界面环境下工作的人例如通过 SSH 远程连接云服务器。能解决什么问题快速诊断服务挂了用systemctl status和journalctl看状态和日志。服务器卡了用top或htop看哪个进程吃掉了资源。高效操作批量查找、移动、删除文件在不安装额外软件的情况下完成文本处理、数据提取。自动化脚本将一系列命令写入 Shell 脚本实现部署、备份、监控等任务的自动化。深度控制进行精细的权限设置、网络配置、内核参数调整这些在图形界面中往往难以实现。使用边界与注意事项权限意识很多管理命令需要root权限使用sudo。误操作高权限命令如rm -rf /可能导致灾难性后果。操作前务必确认命令和路径。生产环境谨慎在对线上服务器执行任何修改性命令如删除文件、重启服务前最好先在测试环境验证并有回滚方案。命令差异不同 Linux 发行版如 CentOS/RHEL、Ubuntu/Debian的包管理命令yum/dnfvsapt和部分工具参数可能有细微差别需注意。学习曲线命令行依赖记忆和熟练度初期可能需要常备命令手册man [命令]。3. 环境准备与前置条件学习 Linux 命令你只需要一个可用的 Linux 环境。以下是几种常见的搭建方式本地虚拟机使用 VMware Workstation 或 VirtualBox安装 CentOS、Ubuntu 等发行版。适合深度学习和反复练习。云服务器ECS在阿里云、腾讯云等平台购买或使用免费试用的云服务器。这是最接近生产环境的方式推荐使用。Windows Subsystem for Linux (WSL)适用于 Windows 10/11 用户可以在 Windows 内获得一个完整的 Linux 子系统轻量且方便。Docker 容器拉取一个 Linux 基础镜像如ubuntu:latest在容器内练习。隔离性好随时可重置。通用检查清单连接后首先执行确认系统版本cat /etc/os-release确认内核版本uname -r确认当前用户whoami确认是否有sudo权限sudo -l可能需要输入密码本文后续所有命令示例如无特殊说明均假设你在一个标准的 Bash Shell 环境中操作。4. 进程管理看清并控制正在运行的程序这是最频繁使用的场景之一。你的程序卡住了或者想看看服务器上跑了什么都需要用到进程命令。4.1 查看进程ps命令ps命令用于查看当前进程的快照。最常用的组合是ps aux或ps -ef。# 查看系统所有进程的详细信息BSD风格 ps aux # 查看系统所有进程的详细信息标准风格 ps -ef # 结合 grep 过滤特定进程例如查找 nginx ps aux | grep nginx输出字段解读以ps aux为例USER: 进程所有者PID: 进程ID%CPU: CPU 占用率%MEM: 内存占用率VSZ: 虚拟内存大小RSS: 实际物理内存大小TTY: 启动进程的终端STAT: 进程状态R: 运行, S: 睡眠, Z: 僵尸, D: 不可中断睡眠等START: 进程启动时间TIME: 进程占用CPU总时间COMMAND: 启动命令4.2 动态监控进程与系统资源top命令top命令提供实时动态的系统状态和进程信息视图是性能监控的利器。# 启动 top默认5秒刷新一次 top # 指定刷新频率为2秒 top -d 2 # 仅监控特定PID的进程 top -p [PID]进入top界面后你可以按P大写按 CPU 使用率排序。按M大写按内存使用率排序。按1显示所有逻辑 CPU 核心的详情。按k后输入 PID 来结束一个进程。按q退出。4.3 结束进程kill与killall当进程无响应时需要强制结束它。# 1. 首先用 ps 或 top 找到目标进程的 PID ps aux | grep [进程名关键词] # 2. 使用 kill 命令发送终止信号 kill [PID] # 发送 TERM 信号15请求进程正常退出 kill -9 [PID] # 发送 KILL 信号9强制立即结束进程 # 使用 killall 通过进程名结束进程谨慎使用可能误杀 killall [进程名]信号说明kill -9是最后手段因为进程无法捕获或忽略此信号可能导致资源如临时文件、数据库连接未正确释放。应先尝试kill [PID]。5. 系统监控与信息查看5.1 系统信息一览uname,lscpu,/proc/cpuinfo,/proc/meminfo# 查看所有系统信息内核名称、主机名、内核版本、硬件架构等 uname -a # 查看 CPU 架构 uname -m # 或 arch # 查看详细的 CPU 信息 lscpu # 查看 CPU 型号和核心数 cat /proc/cpuinfo | grep model name | uniq cat /proc/cpuinfo | grep processor | wc -l # 逻辑CPU数 # 查看内存信息 cat /proc/meminfo free -h # 更友好的内存使用情况显示5.2 虚拟内存统计vmstatvmstat报告进程、内存、分页、块 IO、陷阱和 CPU 活动的信息。# 每2秒采集一次共采集5次 vmstat 2 5关键字段解读r: 等待运行的进程数。如果长期大于 CPU 核心数说明 CPU 繁忙。b: 处于不可中断睡眠状态的进程数通常与 IO 相关。swpd: 使用的虚拟内存大小。free: 空闲的物理内存大小。si,so: 每秒从磁盘交换到内存和从内存交换到磁盘的数据量。如果这两个值经常大于0说明物理内存不足开始使用交换分区性能会下降。us,sy,id,wa:us: 用户态 CPU 时间百分比。高表示应用程序繁忙。sy: 内核态 CPU 时间百分比。id: 空闲 CPU 时间百分比。wa: 等待 IO 的 CPU 时间百分比。持续过高可能表示磁盘瓶颈。5.3 硬件信息深度查询dmidecodedmidecode可以读取 DMI桌面管理接口表获取详细的硬件信息。通常需要 root 权限。# 查看所有 DMI 信息信息量巨大 sudo dmidecode # 仅查看系统信息制造商、产品名、序列号等 sudo dmidecode -t system # 仅查看内存信息 sudo dmidecode -t memory # 仅查看 BIOS 信息 sudo dmidecode -t bios6. 磁盘与文件系统管理服务器磁盘空间告警是常见问题以下命令帮你快速定位。6.1 磁盘空间使用情况dfdf报告文件系统的磁盘空间使用情况。# 以人类可读的格式GB, MB显示所有文件系统信息 df -h # 仅显示本地文件系统并以 MB 为单位 df -lBM # 显示指定类型如 ext4的文件系统 df -ht ext46.2 列出块设备lsblklsblk以树状图列出所有块设备硬盘、分区、光盘等。# 列出所有块设备并显示文件系统类型、挂载点等信息 lsblk -f输出示例NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS vda ├─vda1 ├─vda2 vfat FAT32 6175-F96E └─vda3 ext4 1.0 df02e0a1-d28d-41b1-99c2-58f2b684cc79 34G 7% /可以清晰看到设备vda有三个分区其中vda3是 ext4 文件系统挂载在根目录/。6.3 挂载与卸载mountumount当你插入 U 盘、挂载新的云硬盘或 NFS 共享时需要用到这些命令。# 查看当前已挂载的文件系统 mount # 挂载一个设备例如 /dev/vdb1到 /mnt/data 目录 sudo mount /dev/vdb1 /mnt/data # 以只读方式挂载 sudo mount -o ro /dev/vdb1 /mnt/data # 卸载 /mnt/data 上的文件系统 sudo umount /mnt/data # 如果设备忙强制卸载谨慎使用 sudo umount -f /mnt/data持久化挂载需要编辑/etc/fstab文件。6.4 磁盘分区工具fdiskfdisk是经典的磁盘分区工具。操作分区有数据丢失风险务必谨慎# 列出所有磁盘的分区表信息 sudo fdisk -l # 对特定磁盘如 /dev/vdb进行分区操作 sudo fdisk /dev/vdb在fdisk交互界面中常用命令有m帮助n新建分区d删除分区p打印分区表w写入并退出q不保存退出。7. 网络与端口管理7.1 查看端口占用与网络连接netstatssnetstat是一个功能强大的网络工具但较新系统推荐使用ss命令它更快。# 查看所有 TCP 监听端口及对应进程 sudo netstat -tlnp # 或使用 ss sudo ss -tlnp # 查看所有 UDP 监听端口 sudo netstat -ulnp sudo ss -ulnp # 查看所有网络连接包括已建立的 netstat -an ss -an # 查看特定端口如 8080被谁占用 sudo netstat -tunlp | grep :8080 sudo ss -tunlp | grep :80807.2 列出打开的文件lsoflsof功能极其强大可以列出被进程打开的文件、目录、网络端口等。# 安装 lsof如果未预装 # CentOS/RHEL: sudo yum install lsof # Ubuntu/Debian: sudo apt install lsof # 查看哪个进程占用了 80 端口 sudo lsof -i:80 # 查看指定进程PID为 1234打开的所有文件 sudo lsof -p 1234 # 查看指定用户如 nginx打开的文件 sudo lsof -u nginx # 查看所有 IPv4 网络连接 sudo lsof -i 48. 系统服务管理systemctl现代 Linux 发行版如 CentOS 7, Ubuntu 16.04大多使用systemd作为初始化系统其管理工具是systemctl。# 启动一个服务如 nginx sudo systemctl start nginx # 停止一个服务 sudo systemctl stop nginx # 重启一个服务 sudo systemctl restart nginx # 重新加载服务配置不重启进程 sudo systemctl reload nginx # 查看服务状态这是最常用的命令之一 sudo systemctl status nginx # 设置服务开机自启 sudo systemctl enable nginx # 禁止服务开机自启 sudo systemctl disable nginx # 查看服务是否启用开机自启 sudo systemctl is-enabled nginx # 查看所有已启动的服务 sudo systemctl list-units --typeservice --staterunning # 查看所有开机自启的服务 sudo systemctl list-unit-files --typeservice --stateenabledsystemctl status [服务名]的输出非常有用它会显示服务是否活跃active、最近的日志片段如果服务启动失败这里通常会给出错误原因。9. 用户与权限管理9.1 用户管理useradd,passwd,userdel# 创建一个新用户 jack并创建其家目录 sudo useradd -m jack # 为用户 jack 设置密码会提示输入 sudo passwd jack # 创建一个用户并指定家目录和登录shell sudo useradd -m -d /home/jack -s /bin/bash jack # 创建一个用户并加入到附加组 developers, docker sudo useradd -m -G developers,docker alice # 删除用户 jack但保留其家目录 sudo userdel jack # 删除用户 jack 及其家目录和邮件池 sudo userdel -r jack9.2 授予 sudo 权限wheel组与visudo在 RedHat 系如 CentOS中通常将用户加入wheel组来授予sudo权限。# 将用户 jack 加入 wheel 组 sudo usermod -aG wheel jack # 验证用户所属组 groups jack然后需要确保/etc/sudoers文件允许wheel组执行sudo。使用visudo命令安全编辑此文件sudo visudo找到如下行并确保它没有被注释#%wheel ALL(ALL) ALL这表示wheel组的所有成员可以在任何主机上以任何用户身份执行任何命令。10. 登录信息与安全审计了解谁登录了系统对于安全审计至关重要。# 查看当前登录系统的用户信息 who # 或使用 w信息更详细包括用户正在执行的任务 w # 查看所有用户的最后一次登录信息 lastlog # 查看历史登录记录从 /var/log/wtmp 读取 last # 查看失败的登录尝试从 /var/log/btmp 读取需要sudo sudo lastb # 查看系统安全日志包含 SSH 登录等信息需要sudo sudo tail -f /var/log/secure # CentOS/RHEL sudo tail -f /var/log/auth.log # Ubuntu/Debian11. 命令组合与管道发挥真正的威力单个命令强大组合起来更是威力无穷。管道符|可以将一个命令的输出作为另一个命令的输入。经典组合示例查找并结束进程# 找到所有包含 “python” 的进程并强制结束它们 ps aux | grep python | grep -v grep | awk {print $2} | xargs kill -9ps aux列出所有进程。grep python过滤出包含 “python” 的行。grep -v grep排除掉grep命令自身。awk {print $2}提取第二列PID。xargs kill -9将得到的 PID 列表传递给kill -9命令。实时监控日志# 动态查看 Nginx 访问日志并过滤出 404 错误 tail -f /var/log/nginx/access.log | grep 404统计当前目录下文件数量ls -l | grep ^- | wc -lls -l长格式列出。grep ^-过滤出以-开头的行普通文件。wc -l统计行数。12. 常见问题与排查方法问题现象可能原因排查方式解决方案命令找不到1. 命令未安装。2. 命令所在目录不在PATH环境变量中。which [命令名]1. 使用包管理器安装。2. 使用绝对路径执行或将路径加入PATH。权限被拒绝当前用户权限不足。查看文件/目录权限ls -l [文件]使用sudo提权或修改文件权限 (chmod)、所有者 (chown)。磁盘空间不足1. 磁盘已满。2. 某个分区已满。df -h查看各分区使用率。1. 清理大文件find / -type f -size 100M。2. 扩容磁盘或迁移数据。进程无法结束1. 进程处于D不可中断睡眠状态。2. 权限不足。ps aux | grep [进程]查看状态。sudo kill -9 [PID]尝试。1.D状态通常与硬件/驱动有关尝试重启相关服务或服务器。2. 使用sudo。服务启动失败1. 配置文件错误。2. 端口被占用。3. 依赖服务未启动。sudo systemctl status [服务名]查看详细错误。journalctl -u [服务名]查看日志。1. 根据日志修正配置。2.netstat -tunlp | grep :[端口]查杀占用进程。3. 启动依赖服务。无法连接远程服务器1. 网络不通。2. SSH 服务未运行。3. 防火墙阻止。ping [服务器IP]sudo systemctl status sshdsudo firewall-cmd --list-all(firewalld) 或sudo iptables -L1. 检查网络配置。2. 启动 SSH 服务。3. 配置防火墙规则放行端口默认22。13. 最佳实践与使用建议善用帮助遇到不熟悉的命令第一时间查看手册man [命令]或[命令] --help。谨慎使用rm -rf删除文件前先用ls确认路径或使用rm -i交互式删除。可以考虑设置别名alias rmrm -i。操作前备份修改重要配置文件如/etc/ssh/sshd_config前先备份sudo cp 原文件 原文件.bak。使用 Tab 键补全在输入命令、路径时按 Tab 键可以自动补全减少输入错误。历史命令按上/下箭头翻阅历史命令或用history查看!编号执行历史中对应编号的命令。输出重定向覆盖重定向追加重定向。例如ls file.txt将结果保存到文件。编写脚本将重复性的命令序列写入 Shell 脚本.sh文件并赋予执行权限 (chmod x script.sh)实现自动化。理解输出不要只复制命令要尝试理解命令输出的每一列含义这是排查问题的关键。掌握这些核心命令你就具备了在 Linux 世界里自由行走的基础能力。从查看进程、监控系统到管理磁盘和服务这些命令构成了运维和开发的肌肉记忆。最好的学习方式就是在安全的测试环境中反复练习直到形成条件反射。当你遇到问题时知道该用什么命令去查看、去解决你的 Linux 之旅就真正开始了。建议将本文作为手边速查手册在实际操作中不断巩固和深化理解。