找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1686

积分

0

好友

220

主题
发表于 2026-2-11 10:05:57 | 查看: 31| 回复: 0

在日常运维工作中,涉及 Linux 系统的操作占比超过80%。从服务器部署、服务监控到故障排查,运维的几乎每个环节都离不开 Linux 命令行。许多运维工程师常常感到困惑:明明学了不少命令,遇到实际问题时却依然手足无措。这背后的核心原因,往往是知识过于零散,缺乏核心技能点的串联以及在真实场景中的应用。

本文整理了运维工作中使用频率最高、最能解决实际问题的10个 Linux 技能点。它们涵盖了基础命令的深层用法和实用的系统调优技巧,你可以将其视为一份速查手册,在遇到问题时按图索骥。

一、效率基石:3个超实用组合命令,覆盖80%运维场景

1. 文件定位三剑客:find + grep + xargs

这是一个经典的组合,用于在文件系统中精准定位和处理目标文件。

示例:查找 /data 目录下所有包含 “LOGIN” 内容的 .log 文件。

find /data -type f -name "*.log" | xargs grep -i "LOGIN"

Linux终端中查找包含LOGIN的日志文件

另一个常见场景是日志清理。例如,查找并删除 /data 目录下最近7天内修改过的 .log 文件。安全起见,务必先预览再操作。

# 1、先查找并预览
find /data -type f -name "*.log"   -mtime -7 -print
# 2、确认无误后,再执行删除(任选一种方式)
find /data -type f -name "*.log"  -mtime -7 | xargs rm -f
find /data -type f -name "*.log"  -mtime -7 -delete

查找和删除7天内的日志文件命令

避坑指南:

  • 预览防误删:在执行删除操作前,务必使用 -print-ls 预览结果,避免误删系统关键文件。
  • 处理特殊字符:当文件名包含空格等特殊字符时,应使用 -print0xargs -0 配对使用,确保正确解析。
  • 生产环境先备份:对于重要数据,删除前建议先进行备份。
  • 交互式确认:对于安全性要求极高的操作,可以使用 -ok 参数,在删除前逐一确认。
# 删除包含空格等特殊字符的文件
find /data -type f -name "*.log" -mtime -7 -print0 | xargs -0 rm -f
# 交互式确认删除
find /data -type f -name "*.log" -mtime -7 -ok rm -f {} \;

2. 进程管理:从查看、杀死到监控

进程管理是 运维/DevOps/SRE 的日常。核心命令包括:

  • ps aux:查看系统所有进程快照。
  • top:实时监控系统资源占用和进程状态。
  • kill:向进程发送信号,终止其运行。

实战场景:CPU使用率飙升的三步排查法

  1. 定位高CPU进程:运行 top 命令,查看占用CPU最高的进程PID(默认按CPU排序,也可按P键)。
    top命令查看系统进程和资源占用
  2. 确认进程详情:使用 ps aux | grep 进程PID 命令,查看该进程的详细启动命令和资源占用。
    ps命令查看指定PID的进程详情
  3. 终止进程:如果确认该进程异常或无用,先尝试 kill -15 PID(发送SIGTERM信号,允许进程清理后退出);若无效,再使用 kill -9 PID(发送SIGKILL信号,强制立即结束)。

实用技巧分享:
我曾处理过一个 Kubernetes 集群故障:凌晨三点用户查询突然变慢。值班人员查看应用日志无果。我到场后发现集群某个核心节点的 CPU 使用率异常飙升。通过 topps 命令快速定位,发现是一个非官方的 Prometheus 监控代理异常运行导致的。将其 kill 后,节点和集群性能立刻恢复正常。事后查明是某员工私自部署所致。

  • 进程树查看:使用 pstree -p 命令(需安装 psmisc 包:yum install -y psmisc)可以直观地看到进程的父子关系,便于追踪问题源头。

3. 权限管理:避免“Permission denied”的终极方案

Linux权限基于三组身份:所有者(u)、所属组(g)、其他人(o)。每种身份有三种权限:读(r=4)、写(w=2)、执行(x=1)。

核心操作:

  • chmod 755 文件名:设置文件为所有者可读可写可执行(rwx),组和其他人只读可执行(r-x)。
  • chmod +x 脚本.sh:给脚本添加执行权限(最常用)。
  • chmod -R 777 目录名:递归修改目录及其内部所有文件的权限为全开放(慎用,安全隐患大)。

避坑指南:授权后仍“权限不足”?检查SELinux!
有时即使文件权限设置正确,操作仍被拒绝。这很可能是 SELinux 安全上下文在作祟。

  1. 检查状态getenforce。返回 Enforcing 表示开启。
  2. 临时关闭(重启后失效)setenforce 0。返回 Permissive 模式。
  3. 永久关闭:编辑 /etc/selinux/config 文件,将 SELINUX=enforcing 改为 SELINUX=disabled,然后重启系统。

二、进阶核心:4个效率提升工具,让运维效率翻倍

1. 日志分析三板斧:grep + awk + sed

文本处理是日志分析的基石。

  • grep:精准过滤
    grep -n "error" 日志文件      # 显示匹配行的行号
    grep -C 5 "error" 日志文件    # 显示匹配行及其前后各5行内容

    示例:检查安全日志中的错误

    grep -n "error" secure*

    在secure日志中搜索error关键词

  • awk:数据提取神器
    awk ‘{print $1}‘ access.log    # 提取日志文件第一列(如IP地址)

    示例:提取所有尝试SSH登录(成功或失败)的IP地址并去重

    grep -E 'Accepted|Failed' secure | awk '{print $11}' | sort -u

    使用grep、awk和sort提取并去重SSH登录IP

  • sed:流编辑器,用于替换/删除
    sed -i 's/旧内容/新内容/g‘ 文件  # 全局替换
    sed -i ‘/关键字/d’ 文件           # 删除包含关键字的行

    示例:将文件 AB.txt 中的所有 “123” 替换为 “321”
    使用sed命令进行文件内容替换

2. 系统监控:不止会用top

全面的系统监控涵盖内存、磁盘、网络/系统 等方面。

  • 内存监控
    • free -g:以GB为单位查看内存使用概况。
    • vmstat 1 5:每1秒采样一次,共5次,查看虚拟内存、进程、CPU等状态。
      vmstat命令监控系统内存和CPU状态
  • 磁盘监控
    • df -h:查看各磁盘分区的空间使用情况。
    • du -sh *:查看当前目录下各文件和子目录的大小。
      示例:查看当前目录文件大小并排序
      du -sh * | sort -h

      使用du和sort命令按大小排序目录内容

  • 网络监控
    • ss -an:比 netstat 更快更高效,查看所有网络连接和监听端口。
    • ping & traceroute:基础网络连通性和路由追踪工具。
      示例:查看谁在监听或使用80端口
      ss -an | grep 80

      使用ss命令查看80端口连接状态

3. 管道与重定向:运维的“粘合剂”

  • 管道符 |:将一个命令的标准输出作为下一个命令的标准输入。
    ps aux | grep nginx  # 在所有进程中查找nginx进程
  • 重定向
    • >:覆盖重定向(输出到文件,原内容清空)。
    • >>:追加重定向(输出到文件末尾)。
    • 2>:错误重定向(将标准错误输出到文件)。
      示例:将所有 secure 日志中的 error 信息筛选出来保存到文件
      cat /var/log/secure* | grep -i "error" > a.txt

      将筛选出的错误日志重定向到文件

4. 计划任务:crontab的正确使用姿势

crontab 格式:分 时 日 月 周 要执行的命令

  • 示例:每天凌晨3点执行备份脚本。
    0 3 * * * /bin/sh /usr/local/bin/backup.sh
  • 避坑指南
    1. 环境变量问题:crontab 的执行环境与用户 Shell 环境不同,脚本中最好使用绝对路径,或在脚本开头显式设置 PATH
    2. 使用绝对路径:命令和脚本都应使用绝对路径(如 /usr/bin/mysql,而不是 mysql)。
    3. 任务管理:添加任务后,用 crontab -l 查看。修改配置后,通常需要重启 cron 服务:systemctl restart crond

三、实战必备:3个常用故障排查场景

1. 磁盘满了怎么办?三步定位法

  1. 定位满的分区df -h,查看哪个分区的使用率是100%。
  2. 查找大文件/目录:在已满的分区下,使用 du -sh * 逐层定位占用空间最大的目录。
  3. 清理或扩容:删除无用的大文件(如日志、临时文件)或扩展磁盘空间。

注意:不要直接删除 /var/log/ 下的系统日志文件,可能导致服务异常。可使用 echo "" > 大日志文件truncate -s 0 大日志文件 来安全清空。

高级定位技巧

# 快速找出/var/log下最大的10个文件或目录
du -sh /var/log/* 2>/dev/null | sort -rh | head -10

# 使用ncdu工具进行交互式可视化分析(需安装)
ncdu /

# 查找整个系统中大于1G的文件
find / -type f -size +1G -exec ls -lh {} \; 2>/dev/null | head -10

2. 端口被占用,服务无法启动?快速解决

  1. 查找占用端口的进程
    lsof -i:80                # 方法1:查看占用80端口的进程
    ss -tunlp | grep :80      # 方法2(推荐,更高效)
    netstat -tulnp | grep 80  # 方法3

    使用ss命令查看占用80端口的进程

  2. 终止进程:获取进程PID后,使用 kill -9 PID 强制终止。
  3. 检查系统服务:如果端口被系统服务(如防火墙firewalld)占用,考虑停止或配置该服务。

3. 服务启动失败?五步排查法

按照以下顺序,可以系统性地定位大部分服务启动问题。

  1. 查看服务状态systemctl status 服务名,获取初步错误信息。
  2. 查看启动日志journalctl -u 服务名 -f --since “5 min ago” 实时跟踪日志,或直接查看服务的专属日志文件。
    使用journalctl查看httpd服务日志
  3. 检查配置文件语法:例如,Nginx 用 nginx -t,Apache 用 httpd -t
  4. 检查权限和SELinux上下文:确保服务有权限访问其所需的文件、目录和端口。检查 ls -lZgetenforce
  5. 检查端口与依赖:确认监听端口未被占用 (ss -tlnp),并且服务依赖的其他服务已正常启动 (systemctl list-dependencies 服务名)。

四、核心学习心法

  1. 以用代学:从实际遇到的问题出发去学习和搜索命令,用一次胜过死记硬背十次。
  2. 重视基础:Linux 的权限模型、进程管理和文件系统是理解一切高级操作的基石,务必牢固掌握。
  3. 积累实战案例:将每次故障排查的过程、命令和解决方案记录下来,形成你自己的“运维手册”,这是你最重要的经验资产。

掌握以上这些核心技能,足以让你从容应对日常工作中80%的 Linux 运维挑战。技术之路漫长,在 云栈社区 与更多同行交流,分享和积累实战经验,是持续成长的最佳途径。

Linux运维核心技能思维导图总结




上一篇:ARIMA模型深度实战:时间序列预测在量化交易中的Python实现与解析
下一篇:深入解析LLM-Driven OOP:如何设计基于大语言模型的下一代编程语言
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-23 14:19 , Processed in 0.893202 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表