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

2095

积分

0

好友

277

主题
发表于 昨天 17:17 | 查看: 5| 回复: 0

作为 Linux 运维工程师,你是否也常遇到这样的困扰:一些非常实用的命令,用的时候想不起来,等到想用又得临时去查资料或问 AI,不仅打断了工作节奏,还影响了效率?

本文将为你整理一份工作中真正高频使用的 Linux 操作技巧清单。内容覆盖进程管理、文件处理、系统调试、数据筛选、资源监控等核心运维场景。这些命令精炼、易记,旨在帮助你构建一个随用随查的“记忆工具箱”,告别频繁查找的烦恼。

一、进程管理:信号发送、端口占用一键排查

与进程打交道的操作是运维日常的核心。从查看端口被谁占用,到精准查找进程 PID 并发送信号,再到让程序稳定地在后台运行,掌握下面这些命令能让你快速定位并解决问题。

  1. 端口/进程文件占用查询

    • lsof -i:port:查看指定端口的占用情况(通常需要 root 权限或你是端口的所有者)。
    • lsof -p pid:查看某个进程打开的所有文件,可以快速定位进程的工作目录或它正在读写哪些文件。
  2. 进程 PID 查找与信号发送

    • pgrep -f pattern:通过匹配命令行内容来查找进程的 PID,比单看进程名更精准。
    • killall -sigXXX procname:向指定进程名发送信号(如 -9 代表 SIGKILL)。注意,进程名需要精确匹配且区分大小写。
    • pkill -sigXXX -f pattern:按命令行模式匹配进程并发送信号,特别适合处理那些启动命令较复杂的进程。
  3. 后台运行与守护进程

    • cmd &:将程序放到后台运行。但注意,如果终端断开,该程序通常会因为收到 SIGHUP 信号而退出。
    • nohup cmd &:忽略挂断信号,即使用户注销,程序也能继续在后台运行。这是运维工作中启动后台服务的常用方式。

二、系统监控:资源、内存、共享内存全掌握

快速掌握系统的资源限制、进程的内存使用细节以及共享内存的状态,是排查系统性能问题和内存泄漏的关键所在。

  1. 系统资源限制配置

    • ulimit -a:显示当前所有的系统资源限制配置。
    • ulimit -c 大小:设置 core dump 文件的最大容量。
    • ulimit -s 大小:调整进程栈(stack)的大小,可以根据业务需求进行适配。
  2. 进程内存详情查询

    • pmap pid:查看指定进程详细的内存映射信息,可以精准分析进程的每一块内存占用情况,对于排查内存泄漏或异常增长非常有帮助。
  3. 共享内存属性查看

    • ipcs -m -i shmid:查询指定共享内存段的详细属性,包括创建者进程 ID(CPID)、最后操作进程 ID(LPID)、连接/拆离时间等,是定位共享内存相关问题的利器。
  4. 磁盘空间统计

    • du -sh 目录:快速显示某个目录的总磁盘使用空间,简单直观。
    • du --max-depth=N 目录:指定遍历的目录层级数 N,可以分级查看磁盘占用,帮助你快速定位大文件或大目录,是日常运维巡检的必备命令。

三、文件处理:格式、编码、时间戳高效处理

在日常运维中,我们总会遇到一些令人头疼的文件问题:Windows 传过来的文件格式错乱、编码不兼容导致乱码、需要批量修改文件时间戳等等。下面这些命令可以帮你一键解决,省去大量手动操作的麻烦。

  1. 文件格式与编码修复

    • dos2unix file:清除从 Windows 系统传到 Linux 的文件中多余的 ^M 符号,解决因换行符差异导致的格式错乱问题。想了解更多细节可以阅读这篇Linux运维必学:dos2unix命令解决跨平台文件格式坑
    • locale:查看当前系统的区域和编码设置。
    • export LC_ALL=zh_CN.utf8:快速将当前 shell 的编码环境设置为 UTF-8,临时解决因环境变量导致的乱码问题。
  2. 文件时间戳管理

    • touch file:如果文件不存在则创建空文件;如果文件存在,则将其访问和修改时间更新为当前时间。
    • find 目录 -type f | xargs touch -c:批量修改某个目录下所有文件的时间戳,-c 选项确保不会创建原本不存在的文件。
  3. 文件拼接与内容提取

    • paste 文件1 文件2:默认以 TAB 为分隔符,将两个文件的内容按行拼接在一起,适合批量整合数据。
    • strings 文件:从二进制文件(如可执行程序、core dump 文件)中提取所有可打印的字符串,能帮你快速查找其中包含的路径、关键字等信息。
  4. core 文件路径自定义

    • echo /data/corefile/core_%e_%t > /proc/sys/kernel/core_pattern:这条命令可以按“进程名+时间戳”的格式命名 core dump 文件,并指定其存储路径。将核心转储文件集中管理,极大地方便了后续的问题追溯与调试分析。

四、数据筛选与处理:排序、匹配、截取精准操作

从海量日志或数据文件中进行排序、匹配、转换和截取,是运维数据分析的基本功。掌握以下命令组合,处理效率远超手动操作。

  1. 文件排序

    • sort 命令功能强大,通过不同参数适配各种需求:
      • -n:按数值大小进行排序。
      • -r:反向排序。
      • -c:检查文件是否已经排序好。
      • -o 输出文件:将排序结果写入指定文件。
      • -M:按月份名称缩写(如 Jan, Feb)进行排序。
  2. 高效内容匹配

    • grep 是文本匹配的瑞士军刀,高频参数必须熟记:
      • -i:忽略大小写。
      • -v:反向选择,输出不匹配的行。
      • -A/B/C n:显示匹配行之后 (After)、之前 (Before)、或前后 (Context) 的 n 行内容。
      • -E:支持扩展正则表达式,可以实现多条件匹配,例如 grep -E “test|meta” 会匹配包含 “test” 或 “meta” 的行。
  3. 字符转换与删除

    • tr 命令用于对字符进行快速转换或删除操作:
      • echo "HELLO WORLD" | tr 'A-Z' 'a-z':将所有大写字母转换为小写。
      • echo "hello 123 world" | tr -d '0-9':删除字符串中的所有数字。
  4. 字段截取与多文件匹配

    • awk 是数据处理领域的利器,运维工作中几个高频用法包括:
      1. awk -F 分隔符:指定字段分隔符。支持多分隔符,例如 -F '[,:]' 表示以逗号或冒号分隔。
      2. NRFNR:内置变量,NR 表示当前处理的总行号(跨文件累计),FNR 表示当前文件内的行号。
      3. substr($n, start, len):截取第 n 个字段中从 start 位置开始、长度为 len 的子串。例如 substr($3,12,8)
      4. 利用数组和 FNR,可以实现两个文件基于关键字段的关联查询(类似 JOIN 操作),高效处理大数据量的匹配需求。
  5. 命令行参数转换

    • xargs cmd:将标准输入(stdin)的数据转换为后面命令 cmd 的命令行参数。它解决了某些命令不支持从管道直接读取参数的问题。例如:echo "one two three" | xargs mkdir 等价于执行 mkdir one two three

五、系统调试与开发辅助:库、二进制、命令替换

这些技巧更偏向于开发和深度调试场景,能帮你快速查看库函数、分析二进制文件,以及实现灵活的命令组合。

  1. 库函数与二进制调试

    • nm 库名:列出库文件(如 .so, .a)中定义的所有符号(函数名、变量名等)。
    • objdump -d 二进制文件:对可执行文件或目标文件进行反汇编。可以结合 grep 查看特定函数的汇编代码。
    • c++filt 汇编函数名:将 C++ 编译器改编过(mangle)的汇编级函数名还原为人类可读的原始名称。
  2. 命令替换

    • $( ) 或反引号 ``:它们的作用是先执行内部命令,然后用该命令的输出结果替换掉整个表达式,从而组合成新的命令。例如:echo today is $(date "+%Y-%m-%d"),会动态拼接出当前的日期。
  3. 精准输出控制

    • echo -en-e 选项启用反斜杠转义解释(如 \n 换行、\t 制表符),-n 选项表示输出后不自动添加换行符。这在编写需要精细控制输出格式的 Shell 脚本时非常有用。
  4. 时间戳互转

    • date -d @时间戳:将秒级时间戳转换为常规的本地时间格式。
    • date -d “YYYYMMDD” +%s:将常规的日期时间字符串转换为 UTC 秒级时间戳。无需再手动计算,非常方便。

六、文件查找与重定向:精准查找、输出管控

快速定位文件、灵活控制命令的输出与错误信息,是运维工作最基础却也最高频的操作。这些技巧你必须熟练掌握。

  1. 文件精准查找

    • find 目录 结合丰富的查找表达式:
      • -name 文件名:按文件名查找(支持通配符)。
      • -type f:只查找普通文件。
      • -size +/-20k:按文件大小查找,+20k 表示大于 20KB,-20k 表示小于 20KB。
      • -maxdepth 2:指定最大搜索目录深度为 2 层。
      • -mtime/-mmin +/-n:按文件修改时间查找,-mtime +7 表示修改时间在 7 天以前。
  2. 输出重定向
    必须清晰理解 Linux 中文件描述符的重定向规则:

    • >/dev/null:丢弃标准输出(stdout,文件描述符 1)。等同于 1>/dev/null
    • 2>:重定向标准错误(stderr,文件描述符 2)。例如 2>error.log
    • 2>&1:将标准错误重定向到标准输出。常与丢弃输出组合使用:>/dev/null 2>&1,表示将 stdout 和 stderr 都丢弃。

七、Shell 基础:数组与定时任务

掌握 Shell 数组的基本用法和定时任务的配置,能满足大部分脚本编写和自动化定时运维的需求。

  1. Shell 数组

    • nums=(29 100 13 8 91 44):定义一个数组。注意:等号两边不能有空格,元素放在括号内
    • ${nums[idx]}:按索引获取数组元素。使用大括号 {} 是为了明确变量名的边界,避免歧义。这在需要批量处理一系列数据的脚本中很实用。
  2. 定时任务 crontab

    • crontab -e:编辑当前用户的定时任务。
    • crontab -l:列出当前用户的所有定时任务。
    • 时间格式必须严格遵守:分、时、日、月、星期几、要执行的命令。这是实现自动化运维(如定时备份、日志清理)的基石。

以上整理的 Linux 命令行技巧,虽然看起来有些零散,但它们确实覆盖了运维工作中绝大多数的高频场景,每一个都具有很强的实用性。希望这份清单能成为你手边的效率工具。当然,如果你是已经熟稔于心的大佬,还请多多指教。如果你在实践中有更多心得,欢迎到技术社区云栈社区与大家交流分享。




上一篇:2026年中国互联网大厂员工数量盘点:技术驱动与全球化成新增长点
下一篇:通义千问大模型负责人林俊旸离职,阿里重申开源AI战略不变
您需要登录后才可以回帖 登录 | 立即注册

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

GMT+8, 2026-3-7 08:45 , Processed in 0.416845 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

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