简介
在这个实验中,你将学习如何检查 Linux 中内核崩溃(kernel panic)设置是否处于激活状态。本实验将指导你使用 sysctl
命令来检查并临时修改 kernel.panic
设置,该设置决定了系统在发生严重错误后的行为。
你还将探索如何通过检查 /etc/sysctl.conf
文件来验证 sysctl
配置,并查看 /proc/sys/kernel
目录中的内核参数,以了解这些设置如何影响系统行为。
在这个实验中,你将学习如何检查 Linux 中内核崩溃(kernel panic)设置是否处于激活状态。本实验将指导你使用 sysctl
命令来检查并临时修改 kernel.panic
设置,该设置决定了系统在发生严重错误后的行为。
你还将探索如何通过检查 /etc/sysctl.conf
文件来验证 sysctl
配置,并查看 /proc/sys/kernel
目录中的内核参数,以了解这些设置如何影响系统行为。
sysctl kernel.panic
检查崩溃(panic)设置在这一步中,我们将探讨如何使用 sysctl
命令检查内核的崩溃(panic)设置。kernel.panic
设置决定了内核在发生崩溃时的行为。内核崩溃(kernel panic)是一种系统无法恢复的严重错误,通常会导致系统停机或重启。
sysctl
命令是一个强大的工具,用于在运行时读取和修改内核参数。这些参数控制着系统行为的各个方面。
要检查 kernel.panic
设置的当前值,请打开终端并输入以下命令:
sysctl kernel.panic
此命令将显示 kernel.panic
设置的当前值。你应该会看到类似以下的输出:
kernel.panic = 0
值 0
表示系统在发生内核崩溃后不会自动重启。如果该值大于 0
,则表示内核在自动重启前将等待的秒数。
现在,让我们尝试更改 kernel.panic
的值。要将其设置为 10 秒,请使用以下带有 sudo
的命令:
sudo sysctl kernel.panic=10
系统会提示你输入密码。输入密码后,该命令会将 kernel.panic
的值设置为 10。
要验证更改是否成功,请再次运行 sysctl
命令:
sysctl kernel.panic
你现在应该会看到:
kernel.panic = 10
这证实了 kernel.panic
设置已成功修改。
需要注意的是,使用 sysctl
所做的更改是临时的,重启后将会丢失。要使更改永久生效,你需要修改 /etc/sysctl.conf
文件,我们将在下一步中介绍。
cat /etc/sysctl.conf
验证 sysctl
配置在上一步中,我们学习了如何使用 sysctl
命令临时更改 kernel.panic
设置。然而,这些更改不是持久的,重启后将会丢失。要使更改永久生效,我们需要修改 /etc/sysctl.conf
文件。
/etc/sysctl.conf
文件是 sysctl
的主要配置文件。它包含了一系列内核参数及其期望的值。系统启动时,会读取该文件并应用指定的设置。
要查看 /etc/sysctl.conf
文件的内容,请打开终端并使用 cat
命令:
cat /etc/sysctl.conf
此命令将显示文件的内容。你可能会看到一些注释(以 #
开头的行)和一些现有的设置。
## /etc/sysctl.conf - Configuration file for setting system variables
## See /etc/sysctl.d/ for additional system variables.
## See sysctl.conf (5) for more information.
现在,让我们将 kernel.panic
设置添加到这个文件中。我们将使用 echo
命令将该设置追加到文件末尾。
echo "kernel.panic = 10" | sudo tee -a /etc/sysctl.conf
以下是该命令的详细解释:
echo "kernel.panic = 10"
:这部分创建了我们要添加到文件中的文本。|
:这是一个管道符号,它将 echo
命令的输出作为输入传递给 tee
命令。sudo tee -a /etc/sysctl.conf
:tee
命令从标准输入读取内容,并将其同时写入标准输出和一个或多个文件。
sudo
:允许我们写入需要管理员权限的文件。-a
:将文本追加到文件末尾,而不是覆盖文件内容。/etc/sysctl.conf
:我们要修改的文件。运行此命令后,让我们验证该设置是否已添加到文件中。再次使用 cat
命令:
cat /etc/sysctl.conf
你现在应该会在文件末尾看到 kernel.panic = 10
这一行。
## /etc/sysctl.conf - Configuration file for setting system variables
## See /etc/sysctl.d/ for additional system variables.
## See sysctl.conf (5) for more information.
kernel.panic = 10
要应用这些更改,你可以重启系统,也可以运行以下命令:
sudo sysctl -p
此命令告诉 sysctl
读取 /etc/sysctl.conf
文件并应用其中的设置。
现在,kernel.panic
设置在重启后将保持不变。
/proc/sys/kernel
中的内核参数在这一步中,我们将探索另一种查看内核参数的方法:/proc/sys/kernel
目录。该目录为内核变量提供了一个虚拟文件系统接口。此目录中的每个文件都代表一个内核参数。
/proc
目录是 Linux 中的一个特殊目录,它提供有关正在运行的进程和内核的信息。它是一个虚拟文件系统,这意味着其中的文件和目录实际上并不存在于磁盘上,而是在访问时由内核动态创建的。
要列出 /proc/sys/kernel
目录中的文件,请打开终端并使用 ls
命令:
ls /proc/sys/kernel
此命令将显示一个文件列表,每个文件代表一个内核参数。你会看到像 hostname
、domainname
、osrelease
、version
等文件。
acpi_video_flags ctrl-alt-del dmesg hostname modules_disabled osrelease powersave-nap pty random realtime-max-usleep shmmax shmall shmmni sysrq tainted threads-max unknown_nmi_panic version yama
要查看特定内核参数的值,你可以对相应的文件使用 cat
命令。例如,要查看系统的主机名,请使用以下命令:
cat /proc/sys/kernel/hostname
这将显示系统的当前主机名。
labex
同样,要查看内核版本,请使用以下命令:
cat /proc/sys/kernel/osrelease
这将显示内核版本。
5.15.0-76-generic
正如我们在第一步中看到的,你也可以使用 sysctl
命令来查看这些参数。例如,以下命令等同于 cat /proc/sys/kernel/hostname
:
sysctl kernel.hostname
/proc/sys/kernel
目录提供了大量有关内核配置和状态的信息。对于需要了解和监控系统行为的系统管理员和开发人员来说,这是一个宝贵的资源。
需要注意的是,虽然你可以查看这些文件,但通常需要 root 权限才能直接修改它们。不过,使用 sysctl
是修改内核参数的首选方法,因为它提供了更可控和一致的接口。
在本次实验中,我们探索了如何使用 sysctl
命令在 Linux 中检查并临时修改 kernel.panic
设置。我们了解到,kernel.panic
决定了内核在遇到严重错误时的行为,值为 0 表示不自动重启,大于 0 的值表示重启前的延迟秒数。
我们使用 sysctl kernel.panic
查看当前设置,并使用 sudo sysctl kernel.panic=10
临时更改该设置。本次实验还强调了使用 sysctl
所做的更改在重启后不会保留,若要进行永久配置,需要修改 /etc/sysctl.conf
文件,后续步骤将对此进行介绍。