Linux查看文件和日志的常用命令

2023-11-07

Linux查看文件和日志的常用命令

当项目部署和运行起来后,会产生很多的运行日志。日志的内容是程序里定义的重要输出信息,还有程序出错的报错信息。

查看日志文件大部分是去日志中获取一些数据,确认某些信息,还有定位问题时查看报错信息。查看文件是查看代码文件和配置文件,确认是否需要修改。

在服务器上查看文件,都没有图形界面(当然可以把日志导出到 windows 中查看,但不是很方便,而且比较大的文件一般软件打不开),所以需要熟悉 Linux 中常用的查看命令。

我先 vim date.sh 创建了一个 Shell 脚本 date.sh ,里面的代码如下,用于生成一个模拟的日志文件。

#! /bin/bash
i=0
until [[ $day == "2019-12-31" ]]
do
        day=$(date -d "2019-01-01 $i days" +%Y-%m-%d)
        echo $day
        ((i++))
done

执行命令将 2019 年的所有日期写到 date.log 文件中。

sh date.sh > date.log

一、grep 命令

使用 grep 可以根据指定的内容在文件中匹配满足条件的行,匹配到的内容会高亮显示。

如找包含“10”的行,执行命令后会匹配到所有包含“10”的行(每个月10号的日期和所有10月的日期)。

grep 10 date.log

可以加参数(使用--help查看详细参数)来辅助查询。

如使用 -n 显示行号。

grep -n 10-01 date.log

可以多次使用 grep 命令,不断缩小匹配的数据范围,直到精准地找到某行日志。如要找国庆节所在的行并查看这是一年的第几天,但不知道日期的格式,先匹配10,匹配的数据有很多,再匹配10-01和加上-n参数,就可以完成了。

二、vi 和 vim 命令

vi 和 vim 都是 Linux 系统中的编辑器, vim 是从 vi 发展出来的,功能更丰富一些,最直观的区别是 vim 查看和编写代码时有颜色提示,方便编写程序。

一般不会使用 vi 和 vim 查看日志,因为日志是不需要编辑的。

使用 vi 和 vim 主要是查看配置文件和代码文件,查看时如果需要修改,立即就可以切换模式进行编辑,更方便。

vim date.sh

三、cat 和 tac 命令

cat 命令会一次将整个文件的内容显示出来,tac(cat倒着写) 命令一样,cat 是从头往尾显示,tac 是从尾往头显示,显示顺序刚好相反。

tac date.log

cat 命令适合查看内容比较少的文件(最好小于一个屏幕)。不适合使用来查看比较大的文件,那样需要滚动屏幕(大文件会滚动很久),而且也不方便查找想找的内容(配合其他参数使用另说)。

如果查看时想查看行号,可以加-n参数或-b参数,-n会计算空行的数量,-b不会计算空行的数量,更多参数信息使用--help查看。

cat -b date.log

四、tail 和 head 命令

tail 命令是从尾部显示内容,head 命令是从头部显示内容。

tail date.log
head date.log

tail 和 head 命令默认都是显示10行内容,可以使用-n参数指定显示的行数,-n还可以省略,直接在-(杠)后跟行数,如下面两个命令都是显示5行内容。

tail -n 5 date.log
tail -5 date.log

还有一个经常使用的参数-f,表示循环读取。因为到服务器上查看日志时,不可能将项目停掉再查看日志。项目运行着就会继续往日志文件中写内容,调试时也需要查看实时的日志信息,使用-f可以循环读取实时的日志内容。-f参数会占用一个终端,使用 Ctrl+Z 或 Ctrl+C 都可以停掉。

tail -f date.log

对于比较大的日志文件(如有10万行的日志文件),tail 可以与 head 配合使用,也可以与前面的 cat 和 grep 配合使用,在实际使用时可以灵活运用。 date.log 文件一共365行,假如要查看第101行到第110行,同时要显示行号,可以用如下命令。

cat -b date.log | head -110 | tail -10

五、more 和 less 命令

more 命令和 less 命令是查看文件里的所有内容,按页来展示日志信息。

more 和 less 会从文件开头显示一页的内容(根据屏幕大小自动分页,也可以自定义页的大小),按回车键往后滚动一行,按空格键往后滚动一页,按B键往回滚动一页,可以随时按q键退出浏览。

对于比较大的日志文件,使用 more 和 less 命令比 cat 命令好用很多。

more date.log
less date.log

more 命令与 cat 命令一样,一开始就会将整个文件的内容都加载出来,显示内容多少根据屏幕大小自动显示,屏幕下方会显示当前处于文件中的大概位置,有一个百分比进度,当查看到文件最后,进度到100%,自动退出显示。

less 命令一开始不会将整个文件的内容都加载出来,而是边查看边加载,没有显示进度。less 命令可以使用上下方向键任意上下按行滚动显示,也可以使用左右方向键向左或向右滚动屏幕,对于比较长的行可以方便查看右边的内容,而 more 不能。当 less 查看到文件末尾时,会显示 END,不会自动退出,需要自己使用q退出。

使用 more 和 less 时,可以使用参数来协助查看,如使用-s参数可以将多个连续的空行显示成一行。

more 要查看行号,可以按=(等号)键显示当前行的行号,less 要查看行号,可以使用-N参数显示所有行的行号。

less -N date.log

要了解更多参数可以使用--help查看,less 的参数比 more 多很多,说明 less 支持的功能更多。

六、nl 命令

nl 命令的功能主要是设置行号显示的,不过在显示行号的同时也会显示对应的内容,所以可以用来查看文件的内容。

nl 命令与 cat 相似,会一次将文件中的所有内容显示到控制台。

默认显示时就有行号,且不计算空行的数量。

nl date.log

可以使用-b参数来指定是否计算空行的数量,指定-b为a会计算,指定-b为t不计算。

可以使用-w参数指定行数占用多少位,默认是6位,使用-n参数指定行号的对齐方式,指定-n为ln会左对齐,指定-n为rn会右对齐,指定-n为rz会右对齐并且前面补0,补满-w指定的位数。

nl -b t -n rz date.sh

在 Linux 中查看文件内容的常用命令大概就以上这些了,它们都是 Linux 自带的。还有一些根据它们扩展出来的命令,有些需要安装后才能使用,如果上面的命令不满足使用需求时,可以按需去安装一些其他命令。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux查看文件和日志的常用命令 的相关文章

  • 从脚本内更改自动热键托盘图标

    如何从 Autohotkey 脚本中将托盘图标更改为 my ico 例如 当脚本暂停时 为此 我在托盘菜单中提出了自己的 暂停脚本 菜单项 SingleInstance ignore Menu Tray Tip AutoCase 0 11
  • IE9-11 检测变换样式:preserve-3d

    我为一个项目制作了一个 3d 类型的菜单 自然 IE 会引起问题 因为 IE10 即使 3d 变换工作 也不支持变换样式 preserve 3d 我尝试了解决方法 通过对 3d 菜单容器的每个子元素应用变换 但至少可以说 动画看起来很糟糕
  • 如何制作过期/签名视频嵌入网址

    我是新来的 正在学习网络开发等等 我只知道如何将我的视频嵌入网站中 任何菜鸟都可以轻松获得源代码 他们也可以嵌入它 但在许多网站中 视频 src 均使用重定向器链接进行编码 例如 它会在一段时间后过期 在本例中是一天 我了解到这是一个签名网
  • 使用 QtWebEngine 将 C++ 对象暴露给 Qt 中的 Javascript

    使用 QtWebkit 可以通过以下方式将 C 对象公开给 JavascriptQWebFrame addToJavaScriptWindowObject如中所述https stackoverflow com a 20685002 5959
  • Qt 布局,在小部件大小更改后调整到最小大小

    基本上我有一个QGridLayout里面有一些小部件 最重要的是 2 个标签 我用它们将图像绘制到屏幕上 好吧 如果用户愿意 他可以更改传入图像的分辨率 从而强制标签调整大小 我们假设标签的初始大小是320x240 用户将 VideoMod
  • Python 中的字符串slugification

    我正在寻找 slugify 字符串的最佳方法 蛞蝓 是什么 https stackoverflow com questions 427102 in django what is a slug 我当前的解决方案基于这个食谱 http code
  • bash:gitolite:找不到命令

    我正在尝试使用 Gitolite 在 Gitlab 中创建一个新分支 我完成安装步骤 当我遇到 设置 gitolite 部分时 我遇到了麻烦 我跟着这个link http sitaramc github com gitolite setup
  • ASP.NET Core MVC 视图组件搜索路径

    在此处的文档中 https learn microsoft com en us aspnet core mvc views view components view aspnetcore 2 2 https learn microsoft
  • xsi:type 属性搞乱了 C# XML 反序列化

    我使用 XSD exe 根据 XML 架构 xsd 文件 自动生成 C 对象 我正在反序列化 OpenCover 输出 但其中一个部分类未正确生成 这是导致异常的行
  • 一些基本的 PHP 问题 [已关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我只是有一些基本的 php 问题来加深我对学习的理解 但我找不到简单的答案 我有一个 php ajax 应用程序 它生成 mysql
  • Azure Functions 计时器触发器线程安全

    我想知道是否有人知道如果您在 Azure 函数上设置了 Cron 设置 如果其任务执行时间超过 5 分钟 则每 5 分钟运行一次 会发生什么情况 它备份吗 或者我应该实现一个锁定功能 以防止某些东西 例如在循环中 处理先前调用已经处理的数据
  • SimpleIoC - 在缓存中找不到类型:Windows.UI.Xaml.Controls.Frame

    第一次由 SimpleIoC 实例化我的 ViewModel 时 我遇到了以下错误 我相信我已经按应有的方式设置了容器 但由于某种原因 我仍然收到以下错误 任何想法或帮助将非常感激 Microsoft Practices ServiceLo
  • svn 强制迁移

    我正在考虑将我们的 svn 代码库迁移到 perforce 看看谷歌搜索结果 我确实找到了两个具有相同功能的工具 P4转换ftp ftp perforce com pub perforce tools p4convert docs inde
  • React 错误:目标容器不是 DOM 元素

    我刚刚开始使用 React 所以这可能是一个非常简单的错误 但我们开始吧 我的html代码非常简单 load staticfiles
  • 从 JavaScript 中的 OnClientClick 事件中阻止 C# 中的 asp:Button OnClick 事件?

    我有一个asp Button在我的网页上 它调用 JavaScript 函数和代码隐藏方法 后者进行调用以导航到另一个页面 在 JavaScript 函数中 我正在检查条件 如果不满足这个条件 我想中止导航 以便OnClick方法未被调用
  • 自定义字符串查询操作的 Linq to NHibernate 可扩展性?

    我希望能够在 NHibernate Linq 表达式中使用自定义字符串查询 举例来说 这只是一个例子 我希望能够选择包含属性的实体 该属性是特定字符串的字谜 var myEntities EntityRepository AllEntiti
  • Keystore getEntry 在 Android 9 上返回 NULL

    c我已对存储在 Android 密钥库中的登录密码进行了加密和解密 在 Android 9 上 我观察到应用程序在尝试解密密码时崩溃 我无法重现它 但拥有 Pixel 3 的用户是崩溃的设备之一 下面是我如何从密钥库解密密码 private
  • 计算包含字母/数字的行数

    我想要实现的目标很简单 但是解释起来有点困难 我不知道在 postgres 中这是否真的可能 我处于相当基础的水平 SELECT FROM WHERE LEFT JOIN ON HAVING 等等基本的东西 我正在尝试计算包含特定字母 数字
  • Java 和/C++ 在多线程方面的差异

    我读过一些提示 多线程实现很大程度上取决于您正在使用的目标操作系统 操作系统最终提供了多线程能力 比如Linux有POSIX标准实现 而windows32有另一种方式 但我想知道编程语言水平的主要不同 C似乎为同步提供了更多选择 例如互斥锁
  • 如何使用 dql 从数据表中获取唯一值?

    我有一个表 其中有一列存储了各种值 我想使用 dql 从该表中检索唯一值 Doctrine Query create gt select rec school gt from Records rec gt where rec city ci

随机推荐

  • 手撕代码:统计1到n二进制数中1出现的总次数

    题目描述 互娱手撕代码题 统计从1到n这n个数的二进制表示中1出现的次数 思路分析 思路一 直接的做法是从1遍历到n 对于每个数和1做与操作 之后 对于这个数不断做右移操作 不断和1做与操作 直到当前数为0 这样的算法复杂度为O nlogn
  • C++ 播放音频流(PCM裸流)

    直接上代码 如果有需要可以直接建一个win32控制台程序然后将代码拷过去改个文件名就可以用了 注意将声道和频率与你自己的文件对应 当然我自己也用VS2008写了个例子上传了 如果有需要下载地址如下 点击打开链接 这份代码是打开文件截取一段数
  • vue-amap 高德地图定位 点击获取经纬度和具体地址的使用

    官方文档地址 点这里 经纬度获取只要通过点击事件就可以通过e lnglat来获取 然后就是插件Geocoder使用了 在main js中initAMapApiLoader中写入 AMap Geocoder 注意 官方文档中有提示 所以插件中
  • webpack5 (三)

    webpack 高级配置 其实就是对 webpack 进行优化 让代码在编译 运行时性能更好 1 提升开发体验 2 提升打包构建速度 3 减少代码体积 4 优化代码运行性能 一 提升开发体验 sourcemap 在编译打包后所有的 css
  • 图片无损放大软件Topaz Gigapixel AI 5.5.2 win mac 汉化 mac只有英文版

    Topaz Gigapixel AI 5 5 2 win mac 汉化版 mac只有英文版 今天给大家带来一款超级强大的无损放大图片软件 在放大的同时还能够为你优化图片 真的不要太棒 这个软件的名字叫 Topaz Gigapixel AI
  • 【深度学习】卷积神经网络之图像分类|CNN、AlexNet、VGG、GoogLeNet、ResNet

    一 CNN 卷积神经网络分为卷积层 池化层 全连接层 softmax层 卷积层 卷积核与输入层中的一个区域相连 计算内积后加上权重 激活函数层 激活函数层包括在卷积层中 将相连的神经元进行激活 通常使用ReLu激活函数 m a x 0
  • 什么是元宇宙数字人,它距离我们还有多远呢?

    近期 元宇宙数字人 成为全球热议的焦点 众多资本方争相进入 使得互联网正在迎来转型为 元宇宙 的窗口期 究竟什么是 元宇宙数字人 它距离我们还有多远呢 元宇宙 最早是由是由科幻作家尼尔 斯蒂芬森于1992年在其著作 雪崩 中提出原始概念 元
  • list用Stream通过实体类的指定字段去重,排序

    public void testSelect List
  • 二叉树的前序,中序,后序,层序遍历实现(递归,迭代两种方式)

    先定义Node节点对象 public class Node public int value public Node left public Node right public Node int value Node left Node r
  • Qt - 菜单栏、工具栏、状态栏(自定义菜单)

    菜单栏 工具栏 状态栏 主窗口框架拥有自己的布局 包括以下组件 菜单栏 菜单栏包含了一个下拉菜单项的列表 这些菜单项通过QAction动作类实现 一个主窗口只能有一个菜单栏 工具栏 工具栏一般用于显示常用的菜单项 也可插入其他窗口部件 一个
  • 小程序授权登录流程详情步骤

    样式展示实例 这个原理是 我们开发的软件 调用微信app弹框 这个框主要是获取当前微信登录的用户的信息 允许 取消 允许就是允许我们开发的软件 获取微信的登录的用户信息 通俗 获取微信用户的信息去登录 不允许 通俗 不允许获取微信用户的信息
  • java学习-批量查看多个文件夹下多个xls格式的excel文件

    windows下目录展示执行命令 dir B S E rs 2017 E rs 2018 E rs 2019 E rs 2017 已支付 201701 xls E rs 2017 已支付 201702 xls E rs 2017 已支付 2
  • Consul(注册中心)部署

    目录 前言 一 Docker consul 注册中心 1 什么是consul 2 consul干什么 3 常见的注册中心 4 Consul 特性 5 Consul的使用场景 6 Consul的基本架构 二 consul集群 1 server
  • #include errors detected.Please update your includePath...或者 cannot open source file...

    本文主要介绍一种使用vscode解决include头文件时常遇到的一个问题的一种快捷解决方式 在写C 程序时经常会碰到这样的问题 就是 include lt gt 下方有个条红色的波浪线 你将鼠标挪过去 然后编辑器提示你 include e
  • 【C++】运算符重载 一

    C 允许在同一作用域中的某个函数和运算符指定多个定义 分别称为函数重载和运算符重载 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明 但是它们的参数列表和定义 实现 不相同 当您调用一个重载函数或重载运算符时 编译
  • @vitejs/plugin-vue requires vue (>=3.2.13) or @vue/compiler-sfc to be present in the dependency tre

    当npm run serve 的时候 出现这个错误 vitejs plugin vue requires vue gt 3 2 13 or vue compiler sfc to be present in the dependency t
  • TensorFlow入坑之旅(碰壁篇)

    前言 为了进一步提升用 公 户 司 体 利 验 润 数据分析可谓是至关重要的一环 然而由于人工分析数据有诸多限制 计算错误 成本 数学基础要求高等一系列因素 机器学习显得多么重要 于是 我也只能踏上机器学习这条路呀 开发环境 1 系统 wi
  • Electron 菜单

    自定义菜单 const app BrowserWindow Menu require electron console log process platform 创建窗口 function createWindow console log
  • vim一般模式进入编辑模式

    i 在光标前插入字符 I 在光标所在行的行首插入字符 a 在光标后插入字符 A 在光标所在行的行末插入字符 o 在光标所在行下插入新的一行 O 在光标所在行上插入新的一行 r 替换光标所在的字符 只替换一次 R 一直替换光标所在的字符 直到
  • Linux查看文件和日志的常用命令

    Linux查看文件和日志的常用命令 当项目部署和运行起来后 会产生很多的运行日志 日志的内容是程序里定义的重要输出信息 还有程序出错的报错信息 查看日志文件大部分是去日志中获取一些数据 确认某些信息 还有定位问题时查看报错信息 查看文件是查