2

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

 10 months ago
source link: https://blog.51cto.com/alex4dream/7088106
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Linux文件与目录管理

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

【Linux技术专题】「必备基础知识」带你仔细梳理一下平时排查问题查询日志的基本操作和指令_搜索
  1. 文件路径:Linux系统的日志文件按规定的目录结构组织。了解不同日志文件的存储位置和命名规则,可更快地找到所需的日志文件。例如,系统日志通常位于/var/log/syslog或/var/log/messages,Apache服务器日志可能位于/var/log/apache2等。
  2. 目录结构:Linux的日志目录按功能和服务进行分组,如系统日志、安全日志、网络服务日志等各有其子目录。通过这样的分类和组织,可更轻松地定位和管理各类型的日志文件。举例来说,安全相关的日志文件通常位于/var/log/secure或/var/log/auth.log等目录。
  3. 文件权限和所有者:Linux系统的文件和目录都具备权限和所有者设置。对于日志文件而言,这非常重要,因为仅有具备足够权限的用户能够访问和查看日志文件。通过正确设置文件权限和所有者,可确保只有授权人员可查看和处理日志文件。
  4. 命令行工具: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]
【Linux技术专题】「必备基础知识」带你仔细梳理一下平时排查问题查询日志的基本操作和指令_搜索_02
指令名称:tac

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

tac [选项]... [文件]...
【Linux技术专题】「必备基础知识」带你仔细梳理一下平时排查问题查询日志的基本操作和指令_日志文件_03

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

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

  1. 显示文件内容的逆序:
tac filename.txt

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

  1. 忽略空白开头的行,以逆序显示文件内容:
tac -b filename.txt
  1. 反转输出行的顺序,以正序显示文件内容:
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用于指定行号字段占用的字符数。

  1. 默认显示文件内容并添加行号:
nl filename.txt

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

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

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

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

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

使用示例:

  1. 查看文件内容并逐页显示:
more filename.txt

通过这种方式可以一次显示一页文件内容,按空白键翻页。

  1. 在显示的内容中搜索关键字:
/keyword

这将向下搜索包含"keyword"的关键字。

  1. 显示文件名和当前行数:
:f

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

  1. 立即退出more:

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

  1. 向上翻页(对文件有效):

或使用[ctrl]-b键进行向上翻页操作。

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

使用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命令来实时查看日志文件。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK