2026年Linux生产环境运维命令全攻略:从入门到精通
在当今的云计算和容器化时代,Linux系统依然是服务器领域的绝对主流。无论是传统物理服务器、虚拟机还是容器环境,掌握Linux命令是每一位运维工程师、开发者和系统管理员的必备技能。本文基于2026年最新生产环境实践,为您整理了一份全面且实用的Linux命令指南。
一、系统基础与监控
系统信息查看
# 系统基本信息uname -a # 内核版本和硬件信息cat /etc/os-release # 系统发行版信息hostnamectl # 主机名+系统概览uptime# 运行时长和负载情况lscpu # CPU架构和核心数mpstat -P ALL # 各核心实时使用率free -h # 内存使用情况(人类可读格式)cat /proc/meminfo # 详细内存信息
系统服务管理
# systemd服务管理systemctl start nginxsystemctl stop nginxsystemctl restart nginxsystemctl status nginxsystemctl enable nginxsystemctl disable nginxsystemctl daemon-reloadjournalctl -u nginxjournalctl -fjournalctl -xb # 当前启动journalctl -xb -1 # 上次启动journalctl -u nginx --since "1 hour ago"# 关机/重启sync# 同步写入磁盘rebootshutdown -h nowshutdown -r +10 # 10分钟后重启poweroffinit 0init 6
二、文件系统管理
基础文件操作
# 目录/文件列表ls# 简单列表ls -l # 长格式(权限、大小、时间、属主)ls -a # 显示隐藏文件(.xxx)ls -lh # 人性化显示文件大小(KB/MB/GB)ls -lt # 按修改时间排序(最新在前)ls -ltr # 按修改时间倒序(最旧在前)ls -S # 按文件大小排序ls -R # 递归显示所有子目录ls -d */ # 只显示目录,不显示文件# 创建目录mkdir testdir # 创建单层目录mkdir dir1 dir2 dir3 # 同时创建多个目录mkdir -p a/b/c/d # 递归创建多层目录(父目录不存在自动创建)mkdir -m 755 testdir # 创建时直接指定权限# 删除文件/目录rm file.txt # 删除文件(有提示)rm -f file.txt # 强制删除,不提示rm -rf dirname# 递归删除目录及所有内容(高危)rm -rf /* # 极端高危,会删除系统根目录,严禁执行rmdirdirname# 仅删除空目录# 复制文件/目录cp file.txt /tmp/ # 复制文件到目录cp -i file.txt /tmp/ # 覆盖前提示确认cp -r dir1 /tmp/ # 递归复制目录cp -a dir1 /tmp/ # 归档复制(保留权限、时间戳、软链接)cp -p file.txt /tmp/ # 保留文件属性cp -u file.txt /tmp/ # 仅源文件更新时复制# 移动/重命名mv oldname newname # 文件/目录重命名mv file.txt /tmp/ # 移动文件mv -f file.txt /tmp/ # 强制覆盖不提示mv -i file.txt /tmp/ # 覆盖前提示# 创建空文件/更新时间戳touch test.txt # 不存在则创建,存在则更新时间touch -t 202501011200 file.txt # 指定修改时间为 2025-01-01 12:00
注释:ll 是 ls -l 的常用别名。重要注释:rm -rf 删除后无法恢复,生产环境务必先备份再操作。
文件内容处理
# 全文查看cat file.txt # 正向输出全部内容cat -n file.txt # 显示行号cat -A file.txt # 显示不可见字符(空格、换行、Tab)tac file.txt # 反向输出(从最后一行开始)# 分页查看more file.txt # 向下分页,回车下一行,空格下一页less file.txt # 功能更强,支持上下翻页、搜索less +G file.txt # 直接跳到文件末尾# 头部/尾部查看head -n 10 file.txt # 前10行head -c 100 file.txt # 前100字节tail -n 10 file.txt # 最后10行tail -f catalina.out # 实时跟踪日志(常用)tail -F catalina.out # 日志切割后仍能继续跟踪tail -n +10 file.txt # 从第10行开始显示到末尾# 文本搜索grep "error" log.log # 查找包含关键词的行grep -i "error" log.log # 忽略大小写grep -w "error" log.log # 全词匹配grep -c "error" log.log # 统计匹配行数grep -n "error" log.log # 显示行号grep -v "error" log.log # 反向匹配(排除)grep -r "key" /etc/ # 递归目录搜索grep -E "warn|error" log.log # 多关键词匹配(扩展正则)grep --color=auto "error" log.log # 高亮显示grep Aug /var/log/messages # 在文件 '/var/log/messages'中查找关键词"Aug"grep ^Aug /var/log/messages # 在文件 '/var/log/messages'中查找以"Aug"开始的词汇grep [0-9] /var/log/messages # 选择 '/var/log/messages' 文件中所有包含数字的行grep Aug -R /var/log/* # 在目录 '/var/log' 及随后的目录中搜索字符串"Aug"# 流编辑sed 's/old/new/g' file.txt # 全局替换 old → newsed -i 's/old/new/g' file.txt # 直接修改文件(in-place)sed '/^$/d' file.txt # 删除空行sed '/test/d' file.txt # 删除包含 test 的行sed -n '5,10p' file.txt # 打印 5~10 行sed 's/^/prefix /' file.txt # 行首添加内容sed 's/$/ suffix/' file.txt # 行尾添加内容# 文本去重与排序sort file.txt # 按字典序排序sort -n file.txt # 按数字排序sort -r file.txt # 倒序sort -u file.txt # 排序并去重sort file.txt | uniq# 去重sort file.txt | uniq -c # 统计重复次数# 按列截取awk '{print $1}' file.txt # 打印第一列awk '{print $NF}' file.txt # 打印最后一列awk '/error/{print $0}' file.txt # 匹配行并打印awk -F ':''{print $1,$3}' /etc/passwd # 指定分隔符为:awk 'BEGIN{sum=0}{sum+=$1}END{print sum}' file.txt # 求和# 文本内容对比comm -1 file1 file2 # 比较两个文件的内容(去除'file1'所含内容)comm -2 file1 file2 # 比较两个文件的内容(去除'file2'所含内容)comm -3 file1 file2 # 比较两个文件的内容(去除两文件共有部分)paste file1 file2 # 合并两个文件或两栏的内容paste -d '+' file1 file2 # 合并两个文件或两栏的内容,中间用"+"区分
搜索技巧:在 less 中输入 /关键词 向下搜索,?关键词 向上搜索,n 下一个,N 上一个。
文件查找与定位
# 文件搜索find / -name "file.txt"# 全局按名称搜索find /home -name "*.log"# 通配符搜索find / -type f -size +100M # 查找大于100M的文件find / -type f -mtime -7 # 7天内修改过的文件find / -type f -atime -1 # 1天内访问过的文件find / -type f -ctime -1 # 1天内状态改变的文件find / -user root # 属主为rootfind / -perm 755 # 权限为755find / -name "*.log" -delete # 找到后直接删除find / -name "*.log" -execcp {} /tmp \; # 找到后执行命令locate *.mp4 # 寻找 .mp4结尾的文件# 快速索引updatedb # 更新索引库locate file.txt # 快速查找# 命令查找which nginx # 查找命令可执行路径whereis nginx # 查找二进制、配置、man 路径typecd# 查看命令类型(内建/外部)
文件权限管理
# 权限说明# r=4 w=2 x=1# u 所有者,g 所属组,o 其他用户,a 所有# 修改权限chmod 755 file.sh # rwxr-xr-xchmod 644 file.txt # rw-r--r--chmod u+x file.sh # 给所有者加执行权限chmod g+w file.txt # 给组加写权限chmod o-r file.txt # 撤销其他用户读权限chmod -R 755 /data # 递归修改目录权限chgrp group1 file1 # 改变文件的群组# 修改所有者/组chown user1 file.txt # 修改所有者chown :group1 file.txt # 修改组chown user1:group1 file.txt # 同时修改chown -R user1:group1 /data # 递归修改# 特殊权限chmod u+s /usr/bin/passwd # SUIDchmod g+s /data/share # SGIDchmod o+t /tmp # 粘滞位 Sticky Bit
压缩与解压
# tar 打包解压# gz 压缩tar -zcvf archive.tar.gz dir/# bz2 压缩tar -jcvf archive.tar.bz2 dir/# xz 压缩tar -Jcvf archive.tar.xz dir/# 解压tar -zxvf archive.tar.gztar -jxvf archive.tar.bz2tar -Jxvf archive.tar.xztar -xvf archive.tar # 自动识别格式tar -zxvf archive.tar.gz -C /tmp/ # 解压到指定目录# zip / unzipzip -r dir.zip dir/unzip dir.zipunzip dir.zip -d /tmp/# gzip / bzip2gzip file.txtgunzip file.txt.gzbzip2 file.txtbunzip2 file.txt.bz2
参数解析:
磁盘与挂载
fdisk -l # 磁盘分区lsblk # 块设备信息blkid # 查看 UUIDmount /dev/sdb1 /mnt # 挂载umount /mnt # 卸载umount -l /mnt # 强制懒卸载df -h # 挂载查看du -sh dirname# 查看目录总大小du -sh * # 查看当前目录所有文件/目录大小du -h --max-depth=1 / # 查看根目录一级目录占用df -i # 查看 inode 使用情况iostat # 查看io读写/cpu使用情况sar -u 1 10 # 查看 cpu 使用情况(1秒1次,共10次)sar -d 1 10 # 查询磁盘性能mount /dev/hda2 /mnt/hda2 # 挂在hda2盘mount -t ntfs /dev/sdc1 /mnt/usbhd1 # 指定文件系统类型挂载(如ntfs)mount -o loop xxx.iso /mnt/cdrom # 挂载iso文件mount /dev/sda1 /mnt/usbdisk # 挂载usb盘/闪存设备umount -v /dev/sda1 # 通过设备名卸载umount -v /mnt/mymnt # 通过挂载点卸载fuser -km /mnt/hda1 # 强制卸载(慎用)echo"/dev/sdb1 /mnt ext4 defaults 0 0" >> /etc/fstab # 开机挂载
Vim 高效操作
- •
x,X : 在一行中,x为向后删除一个字符(相当于del键),X为向前删除一个字符(相当于backspace键) - •
ndd : n 为数字。从光标开始,删除向下n列 - •
p,P : p 为将已复制的数据粘贴到光标的下一行,P则为贴在光标的上一行 - •
:n1,n2 m n3 移动n1-n2行(包括n1,n2)到n3行之下 - •
:n1,n2 co n3 复制n1-n2行(包括n1,n2)到n3行之下 - •
:n1,n2 d 删除n1-n2行(包括n1,n2)行
三、进程与网络管理
进程管理
# 查看进程ps -ef # 标准格式全进程ps aux # BSD 格式ps -ef | grep nginx # 查找指定进程pstree # 进程树pstree -p # 显示 PIDtop # 实时进程监控htop # 增强版 topuptime# 系统负载ps -auxf | sort -nr -k 4 | head -10 # 找出占用内存资源最多的前 10 个进程ps -auxf | sort -nr -k 3 | head -10 # 找出占用 CPU 资源最多的前 10 个进程ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | head查看 cpu # 内存占用情况# 杀死进程kill PID # 温和终止kill -9 PID # 强制杀死kill -15 PID # 正常终止pkill nginx # 按进程名杀死killall nginx # 杀死所有同名进程# 后台运行command & # 后台运行nohupcommand & # 退出终端继续运行jobs# 查看后台任务fg %1 # 切回前台bg %1 # 后台继续运行
网络与端口
ifconfig # 网卡信息ip addr # 替代 ifconfigip route # 路由ping ip # 测试连通性ping -c 3 ip # 只发3个包telnet ip port # 测试端口连通nc -vz ip port # 端口探测netstat -lntp # 监听端口ss -lntp # 更快的 netstatss -s # 套接字统计nslookup domain # DNS 解析dig domain # DNS 详细信息hostname # 主机名hostnamectl set-hostname new-host # 修改主机名
四、用户与安全管理
# 用户管理useradd user1 # 创建用户useradd -m user1 # 创建家目录userdel -r user1 # 删除用户及家目录passwd user1 # 设置密码usermod -G group1 user1 # 附加组groupadd group1 # 创建组groupdel group1 # 删除组id user1 # 用户信息who# 当前登录用户w # 详细登录信息last # 登录历史# sudo配置visudo # 编辑sudo配置文件# 添加:username ALL=(ALL) NOPASSWD:ALL # 免密码sudo(生产环境慎用)
五、系统维护
日志管理
# 系统日志查看tail -f /var/log/messagestail -f /var/log/securetail -f /var/log/cron# systemd日志(现代系统)journalctl -xe # 查看所有日志(出问题第一时间运行)journalctl -u nginx # 查看特定服务日志journalctl --since "1 hour ago"# 只看最近一小时日志# 传统日志文件tail -f /var/log/messages # 实时跟踪系统日志(RHEL系)tail -f /var/log/syslog # 实时跟踪系统日志(Debian系)tail -n 100 /var/log/nginx/access.log # 查看最后100行# 日志过滤grep "error" /var/log/*.log# 全局搜索错误日志tail -f /var/log/syslog | grep sshd # 实时过滤特定内容
定时任务
crontab -e # 编辑当前用户定时任务crontab -l # 查看定时任务**crontab 时间格式**:| 字段 | 含义 | 示例 ||------|------|------|| `*/5 * * * *` | 每5分钟 | 监控脚本 || `0 2 * * *` | 每天凌晨2点 | 数据备份 || `0 0 * * 0` | 每周日零点 | 周报生成 || `0 3 1 * *` | 每月1号3点 | 月度清理 |
软件包管理
# RHEL/CentOS系(2026年推荐使用dnf)dnf install nginx # 安装软件包dnf remove nginx # 卸载软件包dnf list installed # 查看已安装包dnf provides */netstat # 查找命令所属包# Ubuntu/Debian系apt update # 更新软件源(安装前必做)apt install nginx # 安装软件包apt remove nginx # 卸载软件包apt list --installed # 查看已安装包
六、高级技巧与最佳实践
常用 Shell 技巧
history# 历史命令!100 # 执行第100条历史!! # 执行上一条ctrl + r # 搜索历史ctrl + c # 终止命令ctrl + z # 挂起ctrl + d # 退出终端
命令组合与高效使用
# 查找大文件并排序find / -type f -size +100M -execls -lh {} \; | sort -k5 -hr# 监控系统资源变化watch -n 1 'df -h; echo; free -h; echo; uptime'# 批量杀进程ps aux | grep 'pattern' | awk '{print $2}' | xargs kill# 实时监控多个日志文件tail -f /var/log/nginx/access.log /var/log/nginx/error.log# 高频监控与排查命令集# 1. 实时连接状态(TCP层)ss -lnt sport = :80 or sport = :443 # 监听状态ss -ant sport = :80 | awk '{print $6}' | sort | uniq -c # 按状态统计连接数# 2. 进程与工作模式ps aux --sort=-%cpu | grep nginx # CPU占用排序pstree -p $(pgrep nginx | head -1) # 查看主从进程结构# 3. 日志实时分析(关键!)tail -f /var/log/nginx/access.log | awk '{print $9}' | sort | uniq -c # 实时统计HTTP状态码tail -f /var/log/nginx/access.log | grep -E "5[0-9]{2}"# 实时抓取5xx错误# 4. 性能与瓶颈定位time curl -o /dev/null -s -w "HTTP状态码:%{http_code}\n总耗时:%{time_total}s\n" http://localhost/healthstrace -p $(pgrep nginx | head -1) -c # 系统调用统计(需谨慎)
场景化检查清单:
- • 网站变慢时:先
ss -s看连接溢出,再tail -f日志看响应时间。 - • 大量5xx错误:
grep错误日志定位后端服务,用curl测试上游健康。 - • CPU飙升:
strace抓取进程系统调用,或perf top看热点函数。
2026年生产环境最佳实践
- 1. 容器化环境适配:随着Kubernetes和容器技术的普及,掌握cgroups v2资源控制成为必备技能:
# cgroups v2资源限制mkdir -p /sys/fs/cgroup/limitedecho"4G" > /sys/fs/cgroup/limited/memory.maxecho"2" > /sys/fs/cgroup/limited/pids.max
- • 用
journalctl替代部分/var/log/日志查看
- • 遇到权限问题不要轻易
setenforce 0,要查明SELinux拒绝原因 - • 定期使用
firewall-cmd或iptables检查防火墙规则
- 4. 脚本化运维:将常用操作封装成脚本,提高效率并减少人为错误。
七、特定服务管理
数据库(以MySQL为例)
核心关注点:查询性能、锁、连接数、缓冲池、磁盘IO。
# 连接与会话mysqladmin processlist # 或登录后执行 SHOW FULL PROCESSLIST;ss -lnt sport = :3306 # 数据库端口连接状态# 性能与资源# 查看InnoDB状态(关键!)mysql -e "SHOW ENGINE INNODB STATUS\G" | grep -A 10 "LATEST DETECTED DEADLOCK"# 死锁信息mysql -e "SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool%';"# 缓冲池命中率# 慢查询与锁# 实时抓取慢查询日志(若开启)tail -f /var/log/mysql/slow.log | grep -E "Query_time: ([5-9]|\d\d+)"# 5秒以上查询mysql -e "SELECT * FROM information_schema.INNODB_LOCKS;"# 当前锁信息# 系统层资源iostat -x 1 | grep -E "Device:|sda"# 数据库磁盘IO(通常数据盘独立)pidstat -d -p $(pgrep mysqld) 1 3 # 进程磁盘IO详细统计
场景化检查清单:
- • 数据库响应慢:先查
processlist看有无长查询,再查InnoDB状态看锁竞争。 - • 连接数打满:
ss验证连接数,调整max_connections或杀空闲连接。 - • 磁盘IO高:
iostat确认,优化慢查询或考虑缓冲池扩容。
消息队列(以Redis为例)
核心关注点:内存使用、连接数、持久化、键空间。
# 内存与键空间redis-cli info memory | grep -E "used_memory:|mem_fragmentation_ratio"# 内存使用和碎片率redis-cli info keyspace # 各数据库键数量# 连接与客户端redis-cli info clients | grep -E "connected_clients|blocked_clients"# 连接和阻塞客户端redis-cli client list # 详细客户端信息# 持久化状态redis-cli info persistence | grep -E "rdb_last_save_time|aof_rewrite_in_progress"# RDB/AOF状态# 性能监控redis-cli --latency-history -i 5 # 每5秒输出一次延迟采样