我正在做一个 24 小时的代码马拉松,不得不重新启动无数次,想知道是否有办法确切地知道有多少计算机重新启动或崩溃。
mre*_*hub 13
系统重启通常记录在二进制文件中/var/log/wtmp。读取该文件的最简单方法是使用该last命令,该命令在每次重新启动时打印如下行:
reboot system boot 3.10-3-amd64 Fri May 2 19:30 - 21:02 (5+01:32)
Run Code Online (Sandbox Code Playgroud)
因此,如果您发出last reboot,您将获得记录到wtmp文件中的所有重新启动的列表。
可以直接调用
last reboot
Run Code Online (Sandbox Code Playgroud)
每次系统重新启动时,伪用户reboot 都会登录。因此,上次重新启动将显示自创建日志文件以来所有重新启动的日志。
它另外给出了开始日志文件的时间 ( /var/log/wtmp)。如果您也对过去感兴趣,通常会存储一个或多个包含过去日志的文件 ( /var/log/wtmp.1)...
下面是一个小示例脚本,用于计算一天内重新启动和崩溃的次数。
您可以运行它以/bin/bash Myscript.sh获得今天的结果或/bin/bash Myscript.sh "Tue May 20"5 月 20 日的结果
#!/bin/bash
Today=`date`
StrDay=${1:-${Today:0:10}}
N_Crash=`last -F |grep crash | grep "$StrDay" | sort -k 7 -u | wc -l`
N_Reboot=`last -F | grep reboot | grep "$StrDay" | wc -l `
echo "# Today $Today Report for crash and reboot on $StrDay "
echo "# Crashes $N_Crash"
echo "# Reboot $N_Reboot"
Run Code Online (Sandbox Code Playgroud)
注意:重新启动时您几乎没有问题,因为每次重新启动时都会有一行。
这个崩溃计数只是指示性的:在崩溃的情况下,您可以有很多行(例如,每个 shell 一行)。更重要的是,如果崩溃不是突然的,您可以为同一个崩溃设置不同的时间(如果它在边界内,可能是一秒或一分钟)。此外,即使这种情况更为罕见,您也可以使 shell 崩溃而不会导致系统崩溃。sort 选项尝试同时删除重复的行。要获得正确的结果,您应该仅将重新启动的行数计为重新启动,而不会在之前崩溃的情况下将重新启动计为崩溃。
| 归档时间: |
|
| 查看次数: |
8193 次 |
| 最近记录: |