当前位置:首页>Linux>2026年Linux生产环境运维命令全攻略:从入门到精通

2026年Linux生产环境运维命令全攻略:从入门到精通

  • 2026-09-05 23:40:30
2026年Linux生产环境运维命令全攻略:从入门到精通

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

参数解析:

  • • c 创建
  • • x 解压
  • • z gz
  • • j bz2
  • • v 显示过程
  • • f 指定文件

磁盘与挂载

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键)
  • • dd : 删除光标所在的那一整行
  • • ndd : n 为数字。从光标开始,删除向下n列
  • • yy : 复制光标所在的那一行
  • • nyy : n为数字。复制光标所在的向下n行
  • • p,P : p 为将已复制的数据粘贴到光标的下一行,P则为贴在光标的上一行
  • • u : 复原前一个操作
  • • CTRL + r : 重做上一个操作
  • • 小数点 '.':重复前一个动作
  • • :set number :在每一行设置行标号
  • • :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. 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
  1. 2. 现代化工具替代:
    • • 用ss替代netstat(更快更现代)
    • • 用ip替代ifconfig和route
    • • 用journalctl替代部分/var/log/日志查看
  2. 3. 安全加固:
    • • 生产环境谨慎使用sudo免密配置
    • • 遇到权限问题不要轻易setenforce 0,要查明SELinux拒绝原因
    • • 定期使用firewall-cmd或iptables检查防火墙规则
  3. 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秒输出一次延迟采样

最新文章

随机文章