【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 - 命令来返回上一个工作目录。

示例

bash 复制代码
$ pwd
/home

$ cd /etc
$ pwd
/etc

$ cd -
$ pwd
/home

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

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

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

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

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

示例

shell 复制代码
$ cd /usr/share
$ pwd
/usr/share

$ cd ~
$ pwd
/home/user1

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

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

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

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

示例

bash 复制代码
$ 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

bash 复制代码
[root~]# cat [-AbEnTv]

指令名称:tac

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

bash 复制代码
tac [选项]... [文件]...
分析说明

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

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

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

    bash 复制代码
    tac filename.txt

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

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

    bash 复制代码
    tac -b filename.txt
  3. 反转输出行的顺序,以正序显示文件内容:

    bash 复制代码
    tac -r filename.txt

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

nl(添加行号打印)

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

bash 复制代码
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. 默认显示文件内容并添加行号:

    bash 复制代码
    nl filename.txt

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

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

    bash 复制代码
    nl -n ln filename.txt
  3. 显示行号在行的最右边,不补齐0:

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

    bash 复制代码
    nl -n rz -w 6 filename.txt

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

more

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

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

使用示例:

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

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

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

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

  5. 向上翻页(对文件有效): 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命令的一些用法示例:

bash 复制代码
head [-n number] 文件

选项与参数:

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

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

bash 复制代码
head /etc/man_db.conf

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

bash 复制代码
head -n 20 /etc/man_db.conf

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

bash 复制代码
tail -n number 文件

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

bash 复制代码
tail -n 20 /etc/man_db.conf

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

bash 复制代码
tail -n +100 /etc/man_db.conf

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

bash 复制代码
tail -f /var/log/messages

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

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

相关推荐
Json____3 分钟前
学法减分交管12123模拟练习小程序源码前端和后端和搭建教程
前端·后端·学习·小程序·uni-app·学法减分·驾考题库
IpdataCloud6 分钟前
IP数据云 识别和分析tor、proxy等各类型代理
运维·服务器
五味香7 分钟前
Linux学习,ip 命令
linux·服务器·c语言·开发语言·git·学习·tcp/ip
monkey_meng23 分钟前
【Rust类型驱动开发 Type Driven Development】
开发语言·后端·rust
落落落sss31 分钟前
MQ集群
java·服务器·开发语言·后端·elasticsearch·adb·ruby
我救我自己31 分钟前
UE5运行时创建slate窗口
java·服务器·ue5
大鲤余1 小时前
Rust,删除cargo安装的可执行文件
开发语言·后端·rust
她说彩礼65万1 小时前
Asp.NET Core Mvc中一个视图怎么设置多个强数据类型
后端·asp.net·mvc
陈随易1 小时前
农村程序员-关于小孩教育的思考
前端·后端·程序员
_江南一点雨1 小时前
SpringBoot 3.3.5 试用CRaC,启动速度提升3到10倍
java·spring boot·后端