【Linux技术专题「必备基础知识」带你仔细梳理一下平时排查问题查询日志的基本操作和指令

2023年 8月 15日 53.6k 0

Linux文件与目录管理

了解和熟悉Linux系统的文件存储结构、权限设置和命令行工具,将有助于快速定位和解决与日志相关的问题,提高系统管理员和开发人员的工作效率。
在这里插入图片描述

  • 文件路径:Linux系统的日志文件按规定的目录结构组织。了解不同日志文件的存储位置和命名规则,可更快地找到所需的日志文件。例如,系统日志通常位于/var/log/syslog或/var/log/messages,Apache服务器日志可能位于/var/log/apache2等。

  • 目录结构:Linux的日志目录按功能和服务进行分组,如系统日志、安全日志、网络服务日志等各有其子目录。通过这样的分类和组织,可更轻松地定位和管理各类型的日志文件。举例来说,安全相关的日志文件通常位于/var/log/secure或/var/log/auth.log等目录。

  • 文件权限和所有者:Linux系统的文件和目录都具备权限和所有者设置。对于日志文件而言,这非常重要,因为仅有具备足够权限的用户能够访问和查看日志文件。通过正确设置文件权限和所有者,可确保只有授权人员可查看和处理日志文件。

  • 命令行工具:Linux提供了丰富的命令行工具,可用于查看和搜索日志文件,如grep、tail、less等。这些工具使我们能够以灵活高效的方式搜索和过滤日志内容,并根据关键字或时间范围快速定位相关日志条目。

  • 文件目录

    相对路径与绝对路径

    • 绝对路径是指从根目录 / 开始写起的路径。例如,/usr/share/doc 是一个绝对路径。

    • 相对路径是指不从根目录 / 开始写起的路径。相对路径通常根据当前工作目录来确定。例如,如果当前工作目录是 /usr/share/doc,要找到 /usr/share/man 目录,可以使用相对路径 cd ../man

    目录的相关操作标识符

    • . 代表当前目录。
    • .. 代表上一层目录。

    以上的这两个指令,我们平常的使用中很常用,再次不进行过于赘述了,比较简单。

    - 代表前一个工作目录。

    主要是面向于操作的前一个执行指令所在的目录地址。

    假设你当前的工作目录是 /home/user1,现在你想切换到上一个工作目录。

    你可以使用 - 来代表前一个工作目录,然后执行相应的命令。在这个案例中,你可以执行 cd - 命令来返回上一个工作目录。

    示例

    $ pwd
    /home
    
    $ cd /etc
    $ pwd
    /etc
    
    $ cd -
    $ pwd
    /home
    

    首先我们通过 cd /etc 命令切换到 /etc 目录。然后,通过 cd - 命令返回到上一个工作目录 /home。你可以根据需要在不同的目录之间切换,并使用 - 来代表前一个工作目录。

    ~ 代表当前用户的主文件夹。

    ~ 是一个特殊符号,在Linux系统中表示当前用户的主文件夹(也称为家目录或用户目录)。每个用户在系统中都有一个唯一的主文件夹,其中存储了该用户的个人文件和配置信息。

    当你在终端或命令行中使用 ~ 时,系统会自动将其解释为当前用户的主文件夹路径。这对于快速访问个人文件或切换到用户的主文件夹非常方便。

    例如,如果你的用户名是"user1",那么~就等同于/home/user1。无论你当前的工作目录在哪里,使用~可以始终快速回到你的主文件夹。

    示例

    $ cd /usr/share
    $ pwd
    /usr/share
    
    $ cd ~
    $ pwd
    /home/user1
    

    当你在终端或命令行中使用 cd 命令时,~ 可以快速返回当前用户的主文件夹。无论你当前的工作目录在哪里,使用 cd ~ 可以将工作目录切换回主文件夹。

    可执行文件路径的变量: $PATH

    在Linux系统中,$PATH 是一个环境变量,用于存储多个目录的路径。当我们在终端中执行一个命令时,系统会按照 $PATH 的设置去这些目录中搜索与命令名称相匹配的可执行文件。

    例如,当我们在任何目录下输入 ls 命令时,系统会在 $PATH 定义的每个目录中搜索名为 ls 的可执行文件。如果在多个目录中都存在名为 ls 的可执行文件,那么将执行搜索到的第一个匹配的可执行文件。

    示例

    $ echo $PATH
    /usr/local/jdk1.8.0_111/bin:/usr/local/jdk/bin:/usr/local/bin:/usr/bin/mysql:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin
    

    在上面的示例中,$PATH 的值包含了多个目录路径,这些路径是用冒号进行分隔的。当我们执行命令时,系统会根据这些路径去搜索可执行文件。

    通过设置 $PATH ,我们可以添加或删除目录路径,以调整系统搜索可执行文件的顺序和范围。这样可以方便地执行命令,而不需要输入完整的路径。

    注意说明

    不论是 root 用户还是其他用户,都有 /bin/usr/bin 目录,并且这些目录在 $PATH 环境变量中,因此可以在任何地方执行 ls 命令来找到 /bin/ls 可执行文件。

    自己安装的程序包没有添加到系统的 $PATH 变量中,所以在不指定完整路径的情况下无法直接执行其中的脚本文件。因此,我们需要手动使用相对或绝对路径来执行这些脚本文件。

    文件内容查阅

    文件内容检索/截取

    • cat: 以从第一行开始的顺序显示文件内容。
    • tac: 以从最后一行开始的顺序显示文件内容,可以注意到它是 cat 倒写的。
    • nl: 显示文件内容并输出行号。
    • more: 按页逐步显示文件内容。
    • less: 类似于 more,但更强大的是它可以向前翻页。
    • head: 只显示文件的前几行。
    • tail: 只显示文件的最后几行。
    • od: 以二进制方式读取文件内容。

    指令名称:cat

    [root~]# cat [-AbEnTv]
    

    在这里插入图片描述

    指令名称:tac

    tac命令用于反向显示文件内容,即从最后一行开始逐行向前显示。

    tac [选项]... [文件]...
    

    在这里插入图片描述

    分析说明

    tac命令是cat命令的反向版本。它的作用是将文件内容从最后一行开始逐行向前显示,按照逆序输出。与cat命令不同,tac命令以行为单位进行操作,而不是以文件为单位。

    tac指令没有特别复杂的参数和用法。常用的选项有-b和-r。选项-b用于忽略以空白开头的行,这意味着以空格或制表符开头的行将被忽略。选项-r隐含地反转输出行的顺序,即正序变为逆序。可以同时使用两个选项,例如tac -br。

    使用示例
  • 显示文件内容的逆序:

    tac filename.txt
    

    这将以逆序显示filename.txt文件的内容。

  • 忽略空白开头的行,以逆序显示文件内容:

    tac -b filename.txt
    
  • 反转输出行的顺序,以正序显示文件内容:

    tac -r filename.txt
    
  • tac命令可以帮助用户快速查看文件内容的逆序,特别适用于需要查看大型文件时定位到最后几行的情况。

    nl(添加行号打印)

    nl命令用于在打印文件内容时添加行号。

    nl [选项]... 文件...
    
    主要选项
    • b:指定行号的方式,主要有两种:
      - b a:不论是否为空行,都列出行号(类似于cat -n);
      - b t:如果有空行,空的那一行不列出行号(默认值);
    • n:指定行号的显示方式,主要有三种:
      - n ln:行号显示在屏幕的最左边;
      - n rn:行号显示在自身字段的最右边,且不加0;
      - n rz:行号显示在自身字段的最右边,且加0;
    • w:指定行号字段占用的字符数。

    nl命令能够自动为输出的文件内容添加行号。与cat -n略有不同,nl提供了更多的显示设计,包括行号位数和自动补齐0等功能。

    常用选项包括-b和-n。选项-b用于指定行号的方式,可以选择不论是否为空行都列出行号,或者如果有空行,则不列出行号(默认值)。选项-n用于指定行号的显示方式,可以选择行号显示在屏幕的最左边,或者显示在自身字段的最右边,且可以选择是否补齐0。选项-w用于指定行号字段占用的字符数。

    使用示例
  • 默认显示文件内容并添加行号:

    nl filename.txt
    

    这将显示filename.txt文件的内容,并为每行添加行号。

  • 显示行号在行的最左边,不补齐0:

    nl -n ln filename.txt
    
  • 显示行号在行的最右边,不补齐0:

    nl -n rn filename.txt
    
  • 显示行号在行的最右边,补齐0,字段宽度为6个字符:

    nl -n rz -w 6 filename.txt
    
  • nl命令可以方便地为文件内容添加行号,便于查看和定位。可以根据需要选择不同的选项来满足输出样式的要求。

    more

    使用more命令可以逐页查看文件内容。下面是more命令的一些常用操作:

    • 空白键:向下翻一页;
    • Enter键:向下翻一行;
    • /字串:在当前显示内容中向下搜索包含"字串"的关键字;
    • :f:立即显示文件名和当前显示的行数;
    • q:立即退出more,不再显示文件内容;
    • b或[ctrl]-b:向上翻页,只适用于文件,对管道无效。

    使用示例:

  • 查看文件内容并逐页显示:
    more filename.txt
    通过这种方式可以一次显示一页文件内容,按空白键翻页。

  • 在显示的内容中搜索关键字:
    /keyword
    这将向下搜索包含"keyword"的关键字。

  • 显示文件名和当前行数:
    :f
    这将格式显示文件名以及当前显示的行数。

  • 立即退出more:
    q
    使用该命令可以立即退出more,不再继续显示文件内容。

  • 向上翻页(对文件有效):
    b
    或使用[ctrl]-b键进行向上翻页操作。

  • more命令可以方便地逐页查看文件内容,提供了基本的翻页和搜索功能,使查看大型文件变得更加便捷。

    less

    使用less命令可以逐页查看文件内容。下面是less命令的一些常用操作:

    • 空白键:向下翻动一页;
    • [pagedown]键:向下翻动一页;
    • [pageup]键:向上翻动一页;
    • /字串:向下搜寻包含"字串"的内容;
    • ?字串:向上搜寻包含"字串"的内容;
    • n:重复前一个搜寻(与/或?有关);
    • N:反向重复前一个搜寻(与/或?有关);
    • g:前进到文件的第一行;
    • G:前进到文件的最后一行(注意大小写);
    • q:退出less程序;

    less命令相对于more命令更加灵活。在使用more时,只能向后翻页,而使用less时,可以使用[pageup]和[pagedown]等按键来前后翻页查看文件内容。

    head和tail指令

    head命令用于取出文件的前面几行。以下是head命令的一些用法示例:

    head [-n number] 文件
    

    选项与参数:

    • -n:后面接数字,表示显示几行的意思

    可以使用下面的命令来查看文件的前几行:

    head /etc/man_db.conf
    

    默认情况下,head命令会显示文件的前十行。如果想显示前20行,可以使用如下命令:

    head -n 20 /etc/man_db.conf
    

    tail命令用于取出文件的后面几行。以下是tail命令的一些用法示例:

    tail -n number 文件
    

    可以使用下面的命令来查看文件的后几行:

    tail -n 20 /etc/man_db.conf
    

    范例一:如果不知道/etc/man_db.conf有几行,但只想列出100行之后的数据,可以使用下面的命令:

    tail -n +100 /etc/man_db.conf
    

    范例二:可以使用tail命令持续监测/var/log/messages文件的内容:

    tail -f /var/log/messages
    

    在使用tail -f命令后,需要按下[crtl]-c来停止监测。

    通常使用tail命令来实时查看日志文件。

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论