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: 记录了内核启动过程中的信息,包括硬件检测、驱动加载等信息。

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

# 查看最近的系统日志
tail /var/log/messages

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

# 查看内核启动日志
dmesg

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

2. 使用 last 命令

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

last

3. 使用 journalctl 命令

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

# 查看最近一次的系统启动日志
journalctl -b -1

4. 分析其他信息

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

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

解决 Linux 系统不明原因重启

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

1. 检查硬件问题

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

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

2. 检查软件问题

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

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

3. 禁用自动更新

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

# 禁用自动更新
systemctl disable yum-cron

# 手动安装更新
yum update

4. 寻求帮助

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

排查 Linux 系统启动问题

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

1. 查看系统日志

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

2. 使用 grub 命令

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

grub

3. 使用 systemd 工具

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

systemctl status <service-name>

4. 使用其他工具

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

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

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

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


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

1. 查看系统日志

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

查看 dmesg 输出
dmesg | less

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

查看 journalctl 日志
journalctl -xe

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

2. 检查最近的启动记录

查看系统最近启动时间
who -b

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

查看重启日志
journalctl --since "2023-07-02 00:00:00" --until "2023-07-03 00:00:00"

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

3. 检查崩溃转储文件

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

启用并检查 kdump
systemctl status kdump

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

4. 检查硬件错误

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

查看 lspcilsblk 输出
lspci -vv | less
lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL

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

5. 检查电源问题

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

查看 journalctl 中的电源相关日志
journalctl | grep -i power

6. 检查系统资源

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

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

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

sar -u

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

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

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

查看 yum 历史记录
yum history

8. 检查计划任务

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

查看 cron 日志
cat /var/log/cron

9. 检查文件系统错误

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

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

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