Linux之 grep、find、ls、wc 命令

news2025/5/19 17:11:38

Linux之 grep、find、ls、wc 命令

“ 在 Linux 世界中,命令行是不可或缺的一部分,而掌握一些常用的命令可以帮助你更有效率地管理文件和系统。本文将为你介绍四個基礎而强大的 Linux 命令:grep、find、ls 和 wc,带你开启高效文件操作的旅程!”

01

概述 

本系列主要讲解Linux运行时命令,包括网络、磁盘、内存、CPU相关参数等,主要是为了分享怎么通过常见的 Linux 命令去排查相关问题。比如:

  1. 发现机器的CPU负荷比较高,那么怎么查到是哪个进程CPU占用率比较高?

  2. 磁盘IO的写入很频繁,怎么查到是哪个进程或线程对磁盘IO频繁的操作?等等。

本系列就是分享诸如这类问题的排查技巧。注意,本系列的核心方向不是去讲解Linux的命令查找、显示当前目录等(比如ls、cat等)基础命令操作。本系列的重点分享内容包括:

  1. Linux基础命令和工具。

  2. CPU性能监控。

  3. 内存性能监控。

  4. 文件IO性能监控。

  5. 网络IO性能监控。

强烈推荐:Linux 大牛,Netflix 高级性能架构师 Brendan Gregg的博客http://www.brendangregg.com。《性能之巅》书籍就是他出版的,主要分为:CPU、内存、磁盘、网络四大块。

下面对应的命令大部分都不是专为某一个模块设计的。所以先把基本的命令都掌握,再去细分每个命令的侧重点。

1.1、监控

常用的命令:

工具描述
free显示系统内存使用情况,包括使用的内存、空闲的内存、缓存和交换区等信息。
ping用于测试网络连接的工具,通过向目标主机发送 ICMP 回显请求并等待回复来测量网络延迟。
vmstatVirtual Memory Statistics,虚拟内存统计工具,提供系统内存、进程、CPU活动等信息。
iostat用于报告中央处理器(CPU)统计信息和整个系统、适配器、tty 设备、磁盘和 CD-ROM 的输入/输出统计信息。
dstat显示了cpu使用情况,磁盘io情况,网络发包情况和换页情况,输出是彩色的,可读性较强,相对于vmstatiostat的输入更加详细且较为直观。
pidstat监控所有或指定进程的资源占用情况,如CPU、内存、设备IO、任务切换、线程等。
top动态显示系统性能信息,包括负载、进程状态、CPU 使用率、内存使用及交换分区的信息。
iotopLINUX进程实时监控工具,类似于 top 命令的工具,用于实时监控磁盘 I/O 使用情况及进程的信息。
htop交互式进程查看器,提供用户友好的界面,支持按键操作以管理进程。一个文本模式的应用程序(在控制台或者X终端中),需要ncurses
mpstat报告 CPU 的统计信息,显示每个 CPU 的使用情况,有助于分析 CPU 性能。
netstat显示与 IP、TCP、UDP 和 ICMP 协议相关的网络连接和统计信息。一般用于检验本机各端口的网络连接情况。
ps显示当前进程的状态和相关信息,类似于 Windows 的任务管理器。
strace跟踪程序执行过程中产生的系统调用及接收到的信号,用于诊断程序问题。
ltrace跟踪进程调用的库函数,帮助分析程序的库函数使用情况。
uptime显示系统当前运行时间和负载信息,为用户提供系统负载状态的一个快照。能够打印系统总共运行了多长时间和系统的平均负载,uptime命令最后输出的三个数字的含义分别是1分钟,5分钟,15分钟内系统的平均负荷。
lsof列出当前系统中打开的文件及相关进程,帮助识别文件使用情况。
perfLinux kernel 自带的性能分析工具,帮助识别程序性能瓶颈,通过分析 CPU 使用情况及热点函数。是Linux kernel自带的系统性能优化工具。优势在于与Linux Kernel的紧密结合,它可以最先应用到加入Kernel的new feature,用于查看热点函数,查看cashe miss的比率,从而帮助开发者来优化程序性能。
tcpdump网络抓包工具,捕获和分析网络数据包,常用于网络故障排查和监控。
sar收集和报告系统活动信息,涵盖 CPU、内存、I/O、网络等性能指标。
blktrace跟踪块设备 I/O 操作,分析系统的磁盘 I/O 性能及行为。

下面这张图是 Brendan Gregg 提供的一个性能优化命令集。可以看到有很多命令可以监控系统的性能,比如文件系统相关、调用栈相关、网络相关等的命令。

1.2、测试

sysbench是一个模块化、跨平台、多线程基准测试工具,可用于以下性能测试:

  1. CPU性能。

  2. 磁盘IO性能。

  3. 调度程序性能。

  4. 内存分配及传输速度。

  5. POSIX线程性能。

  6. 数据库性能(OLTP基准测试)。

Linux CPU使用率主要是从以下几个维度进行统计:

指标描述
%usr普通进程在用户模式下执行的时间
%sys进程在内核模式下的执行时间
%nice被提高优先级的进程在用户模式下的执行时间
%idle空闲时间
%iowait等待I/O完成的时间
%irp处理硬中断请求花费的时间
%soft处理软中断请求花费的时间
%steal是衡量虚拟机CPU的指标,是指分配给本虚拟机的时间片被同一宿主机别的虚拟机占用,一般%steal值较高时,说明宿主机的资源使用已达到瓶颈。

一般情况下,CPU大部分的时间片都是消耗在用户态和内核态上。

sysuser间的比例是相互影响的,%sys比例高意味着被测服务频繁的进行用户态和系统态之间的切换,会带来一定的CPU开销,这样分配处理业务的时间片就会较少,造成系统性能的下降。对于IO密集型系统,无论是网络IO还是磁盘IO,一般都会产生大量的中断,从而导致%sys相对升高,其中磁盘IO密集型系统,对磁盘的读写需要占用大量的CPU,会导致%iowait的值一定比例的升高,所以当出现%iowait较高时,需排查是否存在大量的不合理的日志操作,或者频繁的数据载入等情况;

1.3、优化

Linux Performance Tuning Tools的示意图,展示了Linux系统中不同的工具及其对应的组件。

02

grep 搜索字符 

grep 命令用于在文件中执行关键词搜索,并显示匹配的效果。

基本语法

grep [选项] 模式 [文件...]

部分常用选项:

参数作用
-c仅显示找到的行数
-i忽略大小写
-n显示行号
-v反向选择,仅列出没有关键词的行。v 是 invert 的缩写。
-r递归搜索文件目录
-C n打印匹配行的前后n行
-E使用扩展正则表达式。
-l仅显示包含匹配行的文件名。
-h不显示文件名。
-w仅匹配整个单词。
-o仅显示匹配的模式。
-q静默模式,不输出任何内容。
-A n显示匹配行及其后面的 n 行。
-B n显示匹配行及其前面的 n 行。
-f 文件名从文件中读取模式。

基本正则表达式:

  • .:匹配任意单个字符。

  • *:匹配前一个字符零次或多次。

  • []:匹配括号内的任意一个字符。

  • [^]:匹配括号内以外的任意一个字符。

  • \: 转义字符,用于匹配特殊字符。

  • ^:匹配行首。

  • $:匹配行尾。

  • |:或运算符。

  • ():分组运算符。

扩展正则表达式:

  • +:匹配前一个字符一次或多次。

  • ?:匹配前一个字符零次或一次。

  • {}:匹配前一个字符指定次数。

示例:

  1. 在指定文件查找,查找login关键字。

    grep  login  ImUser.cpp
    
  2. 多个文件中搜索。

    grep  login  ImUser.cpp MsgConn.cpp
    
  3. 在多个文件搜索的时候,可以使用通配符。在以 cpp结尾的文件中,搜索包含login 的行

    grep  login  *.cpp
    
  4. 递归搜索目录下所有文件, 搜索 msg_server目录下所有文件,打印出包含 login的行。

    grep login -r msg_server/
    
  5. 反向查找,查找文件中,不包含 CImUser 的行。

    grep -v CImUser ImUser.cpp
    
  6. 找出文件中包含 login的行,并打印出行号。

    grep  -n login  ImUser.cpp
    
  7. 找出文件中包含 login的行,打印出行号,并显示前后3行。

    grep -C 3 -n login  ImUser.cpp
    
  8. 找出文件中包含 login的行,打印出行号,并显示前后3行,并忽略大小写。

    grep -C 3 -i -n login  ImUser.cpp

注意事项:

  • grep 命令通常用于处理文本文件,但也支持从标准输入读取数据。

  • grep 命令的效率取决于模式的复杂度和文件的大小。

  • grep 命令可以与其他命令结合使用,例如 管道 和 重定向

其他相关命令:

  • egrep:等价于 grep -E,使用扩展正则表达式。

  • fgrep:等价于 grep -F,使用固定字符串匹配。

  • ag:更快更强大的搜索工具。

  • 03

find 查找文件 

find 命令用于在文件系统中搜索文件和目录,并对找到的项目执行操作。通过文件名查找文件的所在位置,文件名查找支持模糊匹配。

基本语法:

find [起始目录] [选项] [表达式]

参数:

  • 起始目录: 指定搜索的起始目录。如果省略,则默认从当前目录开始搜索。

  • 选项: 用于控制搜索行为和输出结果。

  • 表达式: 用于描述要搜索的目标文件或目录。

主要选项:

选项作用
-name 模式根据文件名匹配模式搜索。支持通配符 * 和 ?
-iname 模式根据文件名匹配模式搜索,忽略大小写。
-type 类型根据文件类型搜索。例如 f 表示文件,d 表示目录,l 表示符号链接。
-size +n搜索大小大于 n 个块的文件。
-size -n搜索大小小于 n 个块的文件。
-size n搜索大小等于 n 个块的文件。
-mtime +n搜索修改时间距离现在超过 n 天的文件。
-mtime -n搜索修改时间距离现在少于 n 天的文件。
-mtime n搜索修改时间距离现在正好 n 天的文件。
-atime根据访问时间进行搜索。用法与 -mtime 相同。
-ctime根据文件创建时间进行搜索。用法与 -mtime 相同。
-user 用户名搜索属于特定用户的文件。
-group 组名搜索属于特定组的文件。
-perm 模式根据权限模式搜索文件。例如 -perm 644 搜索权限为 -rw-r--r-- 的文件。
-exec 命令 {} \;对找到的文件执行指定的命令。
-ok 命令 {} \;对找到的文件执行指定的命令,并在执行前提示用户确认。
-print打印找到的文件的路径。
-print0打印找到的文件的路径,并使用空字符作为分隔符。
-depth先搜索子目录再搜索当前目录。
-maxdepth n设置最大搜索深度。
-mindepth n设置最小搜索深度。
!取反运算符,用于排除某些文件或目录。
-o或运算符,用于组合多个搜索条件。
-a与运算符,用于组合多个搜索条件。
()括号用于分组搜索条件。

示例:

  1. 查找当前目录下所有以 .txt 结尾的文件:

    find . -name "*.txt"
    
  2. 查找 /home 目录下所有大于 10M 的文件:

    find /home -size +10M
    
  3. 查找 /tmp 目录下修改时间距离现在超过 7 天的文件:

    find /tmp -mtime +7
    
  4. 查找当前目录下所有权限为 755 的文件:

    find . -perm 755
    
  5. 查找 /var/log 目录下所有以 .log 结尾的文件,并删除它们:

    find /var/log -name "*.log" -delete
    
  6. 查找当前目录下所有目录,并打印它们的路径:

    find . -type d -print
    
  7. 查找当前目录下所有以 .txt 结尾的文件,并把它们复制到 /backup 目录:

    find . -name "*.txt" -exec cp {} /backup \;
    
  8. 查找当前目录下所有以 .txt 结尾的文件,并提示用户是否删除它们:

  9. 04

ls 显示文件 

ls 命令用于列出目录的内容。它可以显示文件和目录的名称、大小、修改时间、权限等信息。

基本语法:

ls [选项] [文件或目录...]
选项描述类别
-a显示所有文件,包括隐藏文件(以 . 开头的文件)。列出文件信息
-l以长格式列出文件信息,包括文件权限、文件大小、文件所有者、修改时间等。列出文件信息
-h以易于阅读的格式显示文件大小,例如 1K、2M、3G 等。列出文件信息
-t按修改时间排序。列出文件信息
-r反转排序顺序。列出文件信息
-S按文件大小排序。列出文件信息
-i显示文件 inode 号。列出文件信息
-d显示目录本身的信息,而不是目录内的文件信息。列出文件信息
-R递归列出所有子目录。列出文件信息
-F在文件名后添加标记,表示文件类型。例如 / 表示目录,* 表示可执行文件,@ 表示符号链接等。文件显示格式
-b将不可打印字符显示为反斜杠转义字符。文件显示格式
-c使用数字字符编码显示文件。文件显示格式
-G显示颜色,用于区分不同类型的文件。文件显示格式
-1单行显示文件名,每个文件名占一行。其他
-C多列显示文件名,根据终端宽度自动调整列数。其他
-m用逗号分隔显示文件名。其他
-n使用数字用户 ID 和组 ID 显示文件信息。其他
-p在目录名后添加 /其他
-q将不可打印字符显示为 ?其他
-s显示文件大小(以块为单位)。其他

示例:

  1. 列出当前目录下所有文件:

    ls
    
  2. 以长格式列出当前目录下所有文件:

    ls -l
    
  3. 列出当前目录下所有文件,包括隐藏文件:

    ls -a
    
  4. 列出当前目录下所有文件,按修改时间排序:

    ls -lt
    
  5. 递归列出 /home/user 目录下所有文件:

    ls -R /home/user
    
  6. 列出当前目录下所有文件,并用颜色区分文件类型:

    ls -G
05
wc 命令

wc 命令用于统计文件中的行数、字数和字节数。利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。

基本语法:

wc [选项] [文件...]

主要选项:

  • -l或--lines: 统计行数。

  • -w或--words: 统计字数。

  • -c或--bytes或--chars: 统计字节数。

  • -m: 统计字符数。

  • -L: 统计最长行的长度。

  • -W: 统计单词数。

示例:

  1. 统计文件 test.txt 的行数、字数和字节数:

    wc test.txt
    
  2. 只统计文件 test.txt 的行数:

    wc -l test.txt
    
  3. 统计多个文件 test.txt 和 data.log 的行数:

    wc -l test.txt data.log
    
  4. 统计文件 test.txt 的最长行的长度:

    wc -L test.txt
    

注意事项:

  • wc 命令默认统计所有三个值(行数、字数和字节数)。

  • wc 命令可以使用多个选项组合,以实现不同的统计功能。

  • wc 命令的输出结果可能会根据文件内容和系统环境有所不同。

其他:

  • wc 命令可以用于统计标准输入的内容,例如:

    cat test.txt | wc -l
    
  • wc 命令可以与其他命令结合使用,例如:

    # 统计文件 `test.txt` 中包含 "error" 字符串的行数。
    grep "error" test.txt | wc -l

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2337354.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI 模型高效化:推理加速与训练优化的技术原理与理论解析

AI 模型高效化:推理加速与训练优化的技术原理与理论解析 文章目录 AI 模型高效化:推理加速与训练优化的技术原理与理论解析一、推理加速:让模型跑得更快的“程序员魔法”(一)动态结构自适应推理:像人类一样…

c++STL——vector的使用和模拟实现

文章目录 vector的使用和模拟实现vector的使用vector介绍重点接口的讲解迭代器部分默认成员函数空间操作增删查改操作迭代器失效问题(重要)调整迭代器 vector的模拟实现实现的版本模拟实现结构预先处理的函数尾插函数push_backswap函数赋值重载size函数reserve函数 迭代器默认成…

git更新的bug

文章目录 1. 问题2. 分析 1. 问题 拉取了一个项目后遇到了这个问题, nvocation failed Server returned invalid Response. java.lang.RuntimeException: Invocation failed Server returned invalid Response. at git4idea.GitAppUtil.sendXmlRequest(GitAppUtil…

github | 仓库权限管理 | 开权限

省流版总结: github 给别人开权限:仓库 -> Setting -> Cllaborate -> Add people GitHub中 将公开仓库改为私有:仓库 -> Setting -> Danger Zone(危险区) ->Change repository visibility( 更改仓…

uniapp自定义底部导航栏,解决下拉时候顶部空白的问题

一、背景 最近使用uniapp开发微信小程序,因为使用了自定义的顶部导航栏,所以在ios平台上(Android未测试)测试的时候,下拉的时候会出现整个页面下拉并且顶部留下大片空白的问题 二、任务:解决这个问题 经…

C++学习之密码学知识

目录 1.文档介绍 2.知识点概述 3.项目准备 4.序列化介绍 5.项目中基础组件介绍 6.基础模块在项目中作用 7.项目中其他模块介绍 8.加密三要素 9.对称加密和非堆成加密 10.对称和非对称加密特点 11.堆成加密算法des 12.des对称加密算法 13.对称加密算法aes 14.知识点…

力扣 797. 所有可能的路径

题目 给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特定顺序) graph[i] 是一个从节点 i 可以访问的所有节点的列表(即从节点 i 到节点 graph[i][j]存在一…

第二篇:linux之Xshell使用及相关linux操作

第二篇:linux之Xshell使用及相关linux操作 文章目录 第二篇:linux之Xshell使用及相关linux操作一、Xshell使用1、Xshell安装2、Xshell使用 二、Bash Shell介绍与使用1、什么是Bash Shell(壳)?2、Bash Shell能干什么?3、平时如何使…

一种改进的CFAR算法用于目标检测(解决多目标掩蔽)

摘要 恒虚警率(CFAR)技术在雷达自动检测过程中起着关键作用。单元平均(CA)CFAR算法在几乎所有的多目标情况下都会受到掩蔽效应的影响。最小单元平均(SOCA)CFAR算法仅当干扰目标位于参考窗口的前后方时才具有…

无人机+智能监控:石油管道巡检迈入“空中智慧时代”

引言:安全与效率的双重革命 在广袤的沙漠、崎岖的山脉或人迹罕至的冻土带,石油管道的安全巡检曾是一项耗时耗力且风险极高的任务。如今,随着无人机巡检技术与视频监控管理平台的深度融合,石油行业正迎来一场智能化变革——从“人巡…

三层交换机SVI功能(交换机虚拟接口)实现各个实训室电脑网络可互通,原本是独立局域网

三层交换机 SVI功能(交换机虚拟接口) 实现VLAN路由 需求 :各实训室使用独立局域网,即每个实训有自己的IP网段, 每个实训室只有内部互相访问。 需求:为了加强各实训室学生的交流,学校要求我们…

vue入门:路由 router

文章目录 介绍安装配置路由模式嵌套路由路由传参编程式导航路由懒加载 底层原理 介绍 vue2 vue router API vue3 vue router API Vue Router 是 Vue.js 的官方路由管理器,它允许你通过不同的 URL 显示不同的组件,从而实现单页面应用(SPA&a…

JVM详解(曼波脑图版)

(✪ω✪)ノ 好哒!曼波会用最可爱的比喻给小白同学讲解JVM,准备好开启奇妙旅程了吗?(๑˃̵ᴗ˂̵)و 📌 思维导图 ━━━━━━━━━━━━━━━━━━━ 🍎 JVM是什么?(苹果式比…

进程(Process)和进程管理

李升伟 整理 进程和进程管理是操作系统的核心概念之一,涉及计算机资源的分配、调度和执行控制。以下是详细的解释: 1. 进程的定义 进程(Process)是正在执行的程序实例,是操作系统进行资源分配和调度的基本单位。它包…

更强的视觉 AI!更智能的多模态助手!Qwen2.5-VL-32B-Instruct-AWQ 来袭

Qwen2.5-VL-32B-Instruct 是阿里巴巴通义千问团队于 2025 年 3 月 24 日开源的多模态大模型,基于 Apache 2.0 协议发布。该模型在 Qwen2.5-VL 系列的基础上,通过强化学习技术优化,以 32B 参数规模实现了多模态能力的突破。 核心特性升级&…

每日算法-250417

每日算法 - 20250417 记录今天的算法学习过程,包含三道 LeetCode 题目。 1005. K 次取反后最大化的数组和 题目 思路 贪心 解题过程 想要获得最大的数组和,我们的目标是尽可能地增大数组元素的总和。一种有效的贪心策略是:每次选择数组中绝…

16.4B参数仅激活2.8B!Kimi-VL-A3B开源:长文本、多模态、低成本的AI全能选手

近日,月之暗面(Moonshot AI)开源了Kimi-VL系列模型,包含Kimi-VL-A3B-Instruct(指令调优版)和Kimi-VL-A3B-Thinking(推理增强版)。这两款模型以总参数16.4B、激活参数仅2.8B的轻量化设…

山东大学软件学院创新项目实训开发日志(17)之中医知识历史问答历史对话查看功能完善

本次完善了历史对话的查看功能,可以让其正常显示标题 后端:在conversationDTO功能构造方法添加title 前端:在历时会话按钮添加标题title即可 前端效果展示,成功(^-^)V:

ZKmall开源商城静态资源管理:Nginx 配置与优化

ZKmall开源商城作为电商平台,其商品图片、前端资源等静态内容的高效管理与分发直接影响用户体验和系统性能。基于Nginx的静态资源管理方案,结合动静分离、缓存优化、安全加固、性能调优四大核心策略,可显著提升平台响应速度与稳定性。以下是具…

Google Gemini 系列AI模型 的详细解析,涵盖其技术特点、版本差异、应用场景及优势

以下是 Google Gemini 系列AI模型 的详细解析,涵盖其技术特点、版本差异、应用场景及优势: 1. Gemini 系列概述 发布背景: Google于2023年推出 Gemini 系列模型,作为其多模态大模型的里程碑,旨在结合文本、图像、音频…