linux怎么查看系统重启原因?LINUX系统不明原因重启解决步骤,在Linux中如何排查系统启动问题?

linux怎么查看系统重启原因?LINUX系统不明原因重启解决步骤,在Linux中如何排查系统启动问题?

linux怎么查看系统重启原因,网上大部分总结的步骤如下:

  1. 查看系统日志:系统日志中存储了系统重启异常的情况及其可能的原因。因此,排查和定位问题时,应尽量先详细查看系统日志,确定重启异常的原因,以便有针对性地解决问题。我们可以使用dmesg命令来查看系统日志:

    $ dmesg

2.查看服务状态:如果在查看系统日志后发现有一些正在运行的服务经常挂起,而挂起的服务可能会引起系统重启,因此我们可以使用systemctl命令来查看服务状态:

复制代码
$ systemctl status

3.检查硬件设备:根据上述查看系统日志和服务状态,如果还不能搞清楚问题原因,那么可以考虑检查硬件状态,比如磁盘、内存以及电源供电等。因此,可以使用lshw命令查看硬件设备情况:

复制代码
$ lshw -short

首先我们排除了硬件故障,UPS故障等问题。

1,查看系统日志

复制代码
[root@pbx /]# cat /var/log/messages|grep nr -i "shutting down"

2,查看匹配行前后各4行

前4行

复制代码
[root@pbx /]# cat /var/log/messages|grep -B 4 "shutting down"

后4行

复制代码
[root@pbx /]# cat /var/log/messages|grep -A 4 "shutting down"

3,查看定时任务

查看定时任务状态

#通过查看发下,所有定时都注销了

复制代码
[root@pbx etc]# crontab -l

sed 获取一段时间日志

复制代码
[root@pbx etc]# sed -n '/Nov 15 04:50:01/,/Nov 15 10:51:54/p' /var/log/cron

通过日志看到有reboot的记录,但是上面查看了crontab-l 没有任务

注意:

crontab支持两种状态:

一、直接编写计划任务;

二、使用目录的方式,放在目录里面的都会定时执行。

4,通过ps 进程查看

复制代码
ps -ef | grep -i reboot

5,crontab 还有2种模式,然后我们就去查看了cron配置文件,发现有sys目录自定义了重启命令。

复制代码
[root@pbx crontab]# cat /etc/cron.d/sys

在Linux中,可以使用以下命令来查看系统重启的原因:

  1. dmesg命令:dmesg命令用于打印出内核环缓冲区的内容,包括系统启动时的信息。使用"dmesg -T | grep 'Restarting system'"命令可以查找包含"Restarting system"的行,以找出系统重启的原因。

  2. last命令:last命令用于查看登录和系统重启的历史记录。使用"last -x"命令可以列出系统重启的记录,倒序显示最近的重启记录。

  3. journalctl命令:journalctl命令用于查看系统的日志消息。使用"journalctl -b -1"命令可以查看上一次的系统启动日志,其中包括系统重启的原因。

  4. /var/log/syslog文件:/var/log/syslog文件是系统的日志文件,其中包含了丰富的系统信息,包括系统重启的原因。可以使用文本编辑器(如vi或nano)打开该文件,并搜索关键词"reboot"来找出重启的原因。

  5. /var/log/dmesg文件:/var/log/dmesg文件记录了系统启动时的信息,可以使用文本编辑器打开该文件,并搜索关键词"reboot"来查找系统重启的原因。

在Linux系统中,可以通过以下方法查看系统的重启原因:

使用dmesg命令查看系统日志: dmesg命令可以显示系统启动时的内核日志,包括系统重启的原因。使用以下命令查看:

复制代码
dmesg | grep -i "reset"

使用last命令查看系统重启历史: last命令可以显示系统的登录和重启历史记录。使用以下命令查看:

复制代码
last reboot

查看上一次重启时间

复制代码
who -b

查看/var/log目录下的日志文件: Linux系统将系统的重启原因记录在/var/log目录下的多个日志文件中,常见的包括/var/log/messages、/var/log/syslog等。使用以下命令查看日志文件中的重启原因:

复制代码
cat /var/log/messages | grep -i "reboot"

使用以下命令来查看最近的重启日志:

复制代码
sudo cat /var/log/syslog | grep "system reboot"

如果上述命令没有返回任何结果,可以尝试查看其他系统日志文件,比如:

复制代码
sudo cat /var/log/kern.log | grep "system reboot"
sudo cat /var/log/messages | grep "system reboot"
sudo cat /var/log/boot.log | grep "system reboot"

如果仍然无法找到重启原因,可以尝试查看系统的"last"命令输出,该命令可以显示最近的系统登录和重启记录:

复制代码
last -x reboot

以上是常见的方法,具体查看系统重启原因的方式可能因Linux发行版和系统配置而有所不同。

在Linux系统中,可以使用以下命令来查看系统重启的原因:

  1. dmesg命令:dmesg命令用于显示系统启动时的内核消息。系统重启后,可以使用此命令来查看是否有与重启相关的错误或警告消息。使用以下命令查看dmesg输出:
    dmesg | grep "restart"

  2. last命令:last命令用于显示系统登录记录和重启记录。可以使用以下命令来查看最近的重启记录:
    last -x reboot

  3. /var/log/messages文件:系统的重启记录通常会被保存在/var/log/messages文件中。使用以下命令来查看该文件的内容:
    cat /var/log/messages | grep "reboot"

  4. journalctl命令:journalctl命令用于查看系统日志。可以使用以下命令来查看最近的重启记录:
    journalctl -b | grep "reboot"

  5. uptime命令:uptime命令用于显示系统的运行时间和当前的负载情况。虽然不直接显示重启原因,但可以通过查看系统运行时间来判断是否发生了重启:
    uptime


  1. dmesg命令:该命令会显示内核的日志消息。重启的原因通常会在这些消息中显示出来。使用以下命令查看dmesg日志:

dmesg -T

  1. /var/log/messages文件:这个文件记录了系统的运行信息,包括重启原因。使用以下命令查看该文件:

cat /var/log/messages

  1. last命令:这个命令用于查看系统的登录记录和用户的登出状态,其中也包括了系统的重启记录。使用以下命令查看系统的重启记录:

last -x | grep reboot

  1. /var/log/wtmp文件:这个文件记录了系统的登录和登出信息,其中也包括了系统的重启记录。使用以下命令查看该文件:

last reboot

  1. uptime命令:该命令会显示系统的运行时间和平均负载。如果系统是最近重启的,它会显示重启时间。使用以下命令查看系统的重启时间:

shell uptime -s

以上命令都可以在终端中直接执行。根据系统和权限的不同,可能需要以root用户身份运行某些命令。

遇到系统出现不明原因的重启,为迅速查找到原因,解决的步骤一定要清晰。

一、判断是硬件故障还是软件故障,如果服务器有管理口,首先从服务器的管理口登录,查看是否有故障报警,当前,主流服务器厂商一般都有管理口,各个厂商的缺省用户名和口令都不一样,可在网上查询到。

二、执行命令,注意时区设置情况,锁定系统重启的时间

复制代码
last reboot

三、执行文件查找命令:

复制代码
 find /var/log -type f grep "Mar 27 16" {} \;|iconv -f UTF-8 -t GBK

这里假设重启的时间是3月27日 16点 00分到 59分的某个时间,可过滤重启时的相关细节

四、寻找多次重启时的相似点

复制代码
 cat /var/log/messages|grep "[Mar 27 16,Mar 27 06]" 

在使用Linux系统时,经常会遇到服务器意外重启或者需要查看服务器重启的记录的情况。红帽操作系统提供了多种方式来查看服务器的重启记录,让管理员能够及时发现问题并进行相应处理。

一种常用的方式是通过系统日志来查看服务器的重启记录。在Linux系统中,系统日志包含了系统发生的各种操作和事件的记录,包括服务器的重启记录。管理员可以通过命令行工具如journalctl来查看系统日志。在红帽系统中,可以使用如下命令来查看系统的重启记录:

复制代码
journalctl --list-boots

这条命令将列出系统的所有启动记录,包括每次启动的时间戳、启动持续时间等信息。通过查看这些记录,管理员可以了解服务器的重启情况,并根据需要进行进一步的排查和处理。

另外一种方式是通过查看/var/log/wtmp文件来获取服务器的启动和关机记录。这个文件记录了系统的登录、注销以及系统的启动和关机等信息。可以通过如下命令查看该文件:

复制代码
last reboot

这条命令将列出最近的服务器重启记录,包括重启的时间、持续时间以及重启的原因等信息。管理员可以通过查看这些记录来追踪服务器的重启情况,及时处理相关问题。

除了查看系统日志和/var/log/wtmp文件外,管理员还可以通过查看/var/log/messages文件来获取服务器的重启记录。这个文件包含了系统的各种消息和事件的记录,包括服务器的重启信息。可以通过如下命令查看这个文件:

复制代码
cat /var/log/messages | grep "reboot"

这条命令将筛选出包含"reboot"关键字的记录,即服务器的重启记录。通过查看这些记录,管理员可以获取服务器的重启情况,并根据需要进行相应的处理。

总的来说,在红帽系统中,管理员可以通过查看系统日志、/var/log/wtmp文件以及/var/log/messages文件来获取服务器的重启记录。通过及时发现和处理服务器的重启问题,可以提高系统的稳定性和安全性,保障服务器的正常运行。希望以上信息对管理员在维护红帽系统时有所帮助。


CentOS 几种重启方式的区别

Linux centos重启命令:

1、reboot 普通重启

2、shutdown -r now 立刻重启(root用户使用)

3、shutdown -r 10 过10分钟自动重启(root用户使用)

4、shutdown -r 20:35 在时间为20:35时候重启(root用户使用)

如果是通过shutdown命令设置重启的话,可以用shutdown -c命令取消重启

Linux centos关机命令:

1、halt 立刻关机

2、poweroff 立刻关机

3、shutdown -h now 立刻关机(root用户使用)

4、shutdown -h 10 10分钟后自动关机

如果是通过shutdown命令设置关机的话,可以用shutdown -c命令取消重启

1.shutdown

shutdown命令安全地将系统关机。 有些用户会使用直接断掉电源的方式来关闭linux,

这是十分危险的。因为linux与windows不同,其后台运行着许多进程,所以强制关机可能

会导致进程的数据丢失﹐使系统处于不稳定的状态﹐甚至在有的系统中会损坏硬件设备。

而在系统关机前使用shutdown命令﹐系统管理员会通知所有登录的用户系统将要关闭。

并且login指令会被冻结﹐即新的用户不能再登录。直接关机或者延迟一定的时间才关机

都是可能的﹐还可能重启。这是由所有进程〔process〕都会收到系统所送达的信号〔signal〕

决定的。这让像vi之类的程序有时间储存目前正在编辑的文档﹐而像处理邮件〔mail〕和

新闻〔news〕的程序则可以正常地离开等等。

shutdown执行它的工作是送信号〔signal〕给init程序﹐要求它改变runlevel。

Runlevel 0被用来停机〔halt〕﹐runlevel 6是用来重新激活〔reboot〕系统﹐

而runlevel 1则是被用来让系统进入管理工作可以进行的状态﹔这是预设的﹐假定没有-h也

没有-r参数给shutdown。要想了解在停机〔halt〕或者重新开机〔reboot〕过程中做了哪些

动作﹐你可以在这个文件/etc/inittab里看到这些runlevels相关的资料。

shutdown 参数说明:

[-t] 在改变到其它runlevel之前﹐告诉init多久以后关机。

[-r] 重启计算器。

[-k] 并不真正关机﹐只是送警告信号给每位登录者〔login〕。

[-h] 关机后关闭电源〔halt〕。

[-n] 不用init﹐而是自己来关机。不鼓励使用这个选项﹐而且该选项所产生的后果往

往不总是你所预期得到的。

[-c] cancel current process取消目前正在执行的关机程序。所以这个选项当然没有

时间参数﹐但是可以输入一个用来解释的讯息﹐而这信息将会送到每位使用者。

[-f] 在重启计算器〔reboot〕时忽略fsck。

[-F] 在重启计算器〔reboot〕时强迫fsck。

[-time] 设定关机〔shutdown〕前的时间。

2.halt----最简单的关机命令

其实halt就是调用shutdown -h。halt执行时﹐杀死应用进程﹐执行sync系统调用﹐

文件系统写操作完成后就会停止内核。

参数说明:

[-n] 防止sync系统调用﹐它用在用fsck修补根分区之后﹐以阻止内核用老版本的超

级块〔superblock〕覆盖修补过的超级块。

[-w] 并不是真正的重启或关机﹐只是写wtmp〔/var/log/wtmp〕纪录。

[-d] 不写wtmp纪录〔已包含在选项[-n]中〕。

[-f] 没有调用shutdown而强制关机或重启。

[-i] 关机〔或重启〕前﹐关掉所有的网络接口。

[-p] 该选项为缺省选项。就是关机时调用poweroff。

3.reboot

reboot的工作过程差不多跟halt一样﹐不过它是引发主机重启﹐而halt是关机。它

的参数与halt相差不多。

4.init

init是所有进程的祖先﹐它的进程号始终为1﹐所以发送TERM信号给init会终止所有的

用户进程﹑守护进程等。shutdown 就是使用这种机制。init定义了8个运行级别(runlevel),

init 0为关机﹐init 1为重启。关于init可以长篇大论﹐这里就不再叙述。另外还有

telinit命令可以改变init的运行级别﹐比如﹐telinit -iS可使系统进入单用户模式﹐

并且得不到使用shutdown时的信息和等待时间。


在Linux中如何排查系统启动问题?

在Linux中排查系统启动问题通常涉及几个关键步骤,包括但不限于检查日志文件、使用救援模式、分析启动过程中的错误信息等。以下是一个详细的排查流程:

  1. 安全模式或救援模式启动
    单用户模式:如果系统能够启动到一定程度,尝试进入单用户模式(某些发行版中可能是救援模式)。这可以通过在GRUB引导加载器界面编辑启动项,添加single或1到内核命令行来实现。单用户模式下,系统将以根用户身份启动,且不启动网络服务,便于故障排查。

救援模式:对于RHEL/CentOS等系统,可以选择从GRUB菜单启动进入救援模式。救援模式提供了有限的环境,用于修复系统。

  1. 检查日志文件
    系统启动过程中的错误通常会被记录在各种日志文件中,主要关注以下几个:

/var/log/boot.log:许多系统会在这里记录启动时的信息。

/var/log/messages 或 /var/log/syslog:这些日志文件记录了广泛的系统活动,包括启动时的错误信息。

/var/log/dmesg 或 journalctl(对于使用systemd的系统):记录了内核启动时的信息和硬件检测结果。可以使用dmesg命令查看最近一次启动的日志,或者使用journalctl -b(查看当前启动日志)或journalctl -b -1(查看上一次启动日志)。

  1. 分析启动错误信息
    仔细阅读上述日志文件,寻找错误(通常以[ERROR]、[CRITICAL]或类似的标签标识)和警告信息。

注意内核 panic 信息,它们通常指示了严重的系统崩溃问题。

  1. 硬件检查
    如果错误信息指向硬件问题(如磁盘错误、内存问题等),使用相应的工具进行检查。例如,使用smartctl检查硬盘健康状态,或使用memtest86+测试内存。
  2. 核心转储分析
    如果系统崩溃并生成了核心转储文件(通常位于/var/crash),可以使用crash工具结合内核映像和核心转储文件来分析崩溃原因。
  3. 系统服务和依赖关系
    使用systemctl status (针对systemd系统)或service status(针对sysvinit系统)检查特定服务的状态,看是否有服务未能正常启动导致的问题。通过systemctl list-units --state=failed查看所有失败的服务。
  4. 核心模块和驱动问题
    如果问题与特定的硬件驱动或核心模块相关,可能需要更新或重新配置这些模块。
  5. 远程求助
    如果以上步骤无法解决问题,考虑将错误信息和日志文件中的相关内容发布到技术论坛或Stack Overflow等平台上寻求帮助。记得隐去敏感信息。
  6. 使用Live CD/DVD或USB
    在极端情况下,可以使用Linux Live CD/DVD或USB启动系统,然后从外部介质访问和修复主系统的文件,这有助于避免启动过程中由于系统文件损坏导致的问题。
    综上所述,你应该能够诊断并解决大多数Linux系统启动问题。记住,耐心和细致是关键,因为问题可能隐藏在大量的日志信息之中。

查看 Linux 系统重启原因

1. 查看系统日志

系统日志记录了系统运行过程中的各种事件和信息,包括系统启动、重启、关机等。我们可以通过查看系统日志来排查系统重启的原因。

在 CentOS 7 中,常用的系统日志文件包括:

  • /var/log/messages: 记录了系统的一般信息,包括启动、重启、关机等事件。
  • /var/log/syslog: 记录了系统的所有日志信息,包括 /var/log/messages 中的日志。
  • /var/log/dmesg: 记录了内核启动过程中的信息,包括硬件检测、驱动加载等信息。

我们可以使用以下命令来查看系统日志:

bash 复制代码
# 查看最近的系统日志
tail /var/log/messages

# 查看所有系统日志
cat /var/log/messages

# 查看内核启动日志
dmesg

在日志文件中,我们可以查找与系统重启相关的关键字,例如 "Restarting system"、"reboot" 等。找到相关日志后,我们可以进一步分析日志内容来确定系统重启的原因。

2. 使用 last 命令

last 命令可以显示最近登录到系统的所有用户,以及他们的登录时间和退出时间。我们可以使用 last 命令来查看系统重启前后的登录情况,从而判断是否有用户在系统重启前进行了操作。

bash 复制代码
last

3. 使用 journalctl 命令

journalctl 命令是 Systemd 的日志管理工具,可以用来查看和管理系统日志。我们可以使用 journalctl 命令来查看系统启动日志,其中包括系统重启的原因。

bash 复制代码
# 查看最近一次的系统启动日志
journalctl -b -1

4. 分析其他信息

除了上述方法之外,我们还可以分析其他信息来排查系统重启的原因,例如:

  • 查看系统运行时间:我们可以使用 uptime 命令来查看系统运行时间。如果系统运行时间较短,则可能表明系统存在硬件问题。
  • 查看系统负载:我们可以使用 tophtop 命令来查看系统负载。如果系统负载过高,则可能表明系统存在性能问题。
  • 检查系统更新:我们可以使用 yum check-update 命令来检查是否有可用的系统更新。如果存在可用的系统更新,则建议安装更新后重新启动系统。

解决 Linux 系统不明原因重启

如果我们无法确定系统重启的原因,我们可以尝试以下步骤来解决问题:

1. 检查硬件问题

硬件问题是导致系统重启的最常见原因之一。我们可以使用以下方法来检查硬件问题:

  • 检查内存:我们可以使用 memtest86+ 等工具来测试内存。
  • 检查硬盘:我们可以使用 smartctl 等工具来检查硬盘。
  • 检查 CPU:我们可以使用 stress 等工具来测试 CPU。

2. 检查软件问题

软件问题也可能导致系统重启。我们可以尝试以下步骤来检查软件问题:

  • 更新系统:我们可以使用 yum update 命令来更新系统。
  • 检查内核版本:我们可以使用 uname -r 命令来检查内核版本。如果内核版本较旧,则建议更新内核。
  • 检查是否存在已知的错误:我们可以搜索已知的错误报告,看看我们的问题是否是一个已知的问题。

3. 禁用自动更新

如果我们在安装系统更新后系统出现重启问题,我们可以尝试禁用自动更新,并手动安装更新。

bash 复制代码
# 禁用自动更新
systemctl disable yum-cron

# 手动安装更新
yum update

4. 寻求帮助

如果我们尝试了上述所有步骤仍然无法解决问题,我们可以寻求社区或专业人士的帮助。

排查 Linux 系统启动问题

在 Linux 中,我们可以使用以下方法来排查系统启动问题:

1. 查看系统日志

我们可以使用上述方法来查看系统日志,并查找与系统启动相关的错误信息。

2. 使用 grub 命令

GRUB 是 Linux 的启动管理器。我们可以使用 grub 命令来查看启动菜单,并选择不同的启动项。

bash 复制代码
grub

3. 使用 systemd 工具

Systemd 是 CentOS 7 的默认系统管理工具。我们可以使用 Systemd 工具来查看和管理系统启动服务。

bash 复制代码
systemctl status <service-name>

4. 使用其他工具

我们可以使用其他工具来排查系统启动问题,例如 chkconfigbootchart 等。

以下是一些具体的排查步骤:

1. 如果系统无法进入 GRUB,则可能是硬件问题

我们可以尝试重新插拔内存条、硬盘等硬件设备,或者更换硬件设备。


在 CentOS 7 上排查系统不明原因重启的步骤如下:

1. 查看系统日志

首先,查看系统日志文件,这些文件包含了系统启动和运行时的重要信息。

查看 dmesg 输出
sh 复制代码
dmesg | less

dmesg 命令会显示内核的消息缓冲区,包含系统启动和硬件相关的信息。寻找关键字如 "panic", "error", "fail" 等。

查看 journalctl 日志
sh 复制代码
journalctl -xe

journalctl 提供了系统日志的详细输出,可以用 -xe 参数查看最近的严重错误。

2. 检查最近的启动记录

查看系统最近启动时间
sh 复制代码
who -b

这个命令会显示系统的最近启动时间。

查看重启日志
sh 复制代码
journalctl --since "2023-07-02 00:00:00" --until "2023-07-03 00:00:00"

journalctl 检查特定时间段的日志,用来发现系统在特定时间段的活动。

3. 检查崩溃转储文件

如果系统启用了 kdump,会在崩溃时生成转储文件。

启用并检查 kdump
sh 复制代码
systemctl status kdump

确保 kdump 服务已启用和运行。如果有生成的转储文件,通常在 /var/crash/ 目录下。

4. 检查硬件错误

硬件故障可能导致系统重启。

查看 lspcilsblk 输出
sh 复制代码
lspci -vv | less
sh 复制代码
lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL

这些命令显示详细的硬件信息,查找任何可疑的硬件问题。

5. 检查电源问题

电源问题也可能导致系统重启。

查看 journalctl 中的电源相关日志
sh 复制代码
journalctl | grep -i power

6. 检查系统资源

系统资源不足(如内存、CPU)也可能导致重启。

使用 tophtop 实时监控系统资源
sh 复制代码
top
sh 复制代码
htop
查看历史资源使用情况
sh 复制代码
sar -r

这个命令显示内存使用情况。

sh 复制代码
sar -u

这个命令显示 CPU 使用情况。

7. 检查系统更新或软件包更新

有时系统更新或软件包更新会导致重启。

查看 yum 历史记录
sh 复制代码
yum history

8. 检查计划任务

定时任务或计划任务(如 cron 作业)可能导致重启。

查看 cron 日志
sh 复制代码
cat /var/log/cron

9. 检查文件系统错误

文件系统错误可能导致系统不稳定和重启。

检查并修复文件系统错误
sh 复制代码
fsck -f /dev/sda1

以上是详细的步骤和命令,帮助你在 CentOS 7 中排查系统重启的问题。通过系统日志、电源、硬件、系统资源等多个方面的检查,可以更全面地了解系统重启的原因并进行相应的解决。

相关推荐
微步_ym1 小时前
RabbitMQ:在Linux上安装RabbitMQ
linux·rabbitmq·erlang
CC.GG1 小时前
【Linux】倒计时和进度条实现
linux
Code Warrior2 小时前
【Linux】库的制作与原理(1)
linux
生涯にわたる学び2 小时前
关于之前知识的一些补充 02
linux·arm开发
汐汐咯2 小时前
linux上安装minconda
linux·运维·服务器
小波小波轩然大波2 小时前
Linux服务器配置(mariadb服务器)
linux·服务器·mariadb
忧郁的橙子.3 小时前
k8s 主节点重启后 从节点 get 异常
linux·运维·服务器
Raymond运维3 小时前
Apache介绍和安装
linux·运维·apache
半梦半醒*3 小时前
nginx的访问控制、用户认证、https
linux·运维·服务器·nginx·https·centos
Skrrapper4 小时前
ubuntu?centos?还是 redhat?Linux 系统选哪个?
linux·ubuntu·centos