我的系统管理员如何知道我没有重新启动系统?

nik*_*hil 35 monitoring

我收到系统管理员发来的电子邮件,说我需要重新启动系统才能应用一些补丁。我已经忘记了,几个小时后,我收到另一封邮件,告诉我我还没有重新启动系统。

我已经重新启动了我的系统,但我很惊讶他们如何知道我是否重新启动了我的机器。有人可以解释这是如何工作的吗?

Kev*_*wen 43

可以使用SNMP进行远程检查的快速方法(前提是您的系统管理员已在您的网络上进行了设置):

admin@yourcompany:~$ snmpwalk -v 2c -c <snmpstring> MachineName sysUpTimeInstance
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (9461615) 1 day, 2:16:56.15
Run Code Online (Sandbox Code Playgroud)

最有可能的是,数据将被轮询并存储在某种网络管理/监控系统(即 Nagios 或 Cacti)中。

如果有人对使用该snmpwalk命令感兴趣,请参阅此处的答案以在您的系统上设置基本的 SNMP 配置。


saj*_*i89 28

一个简单的方法是检查uptime命令的输出,它显示您在没有关闭/重新启动的情况下运行系统的时间。

示例输出:

saji@geeklap:~$ uptime
12:41:29 up  3:08,  2 users,  load average: 1.06, 0.85, 0.86
Run Code Online (Sandbox Code Playgroud)

它说我的系统已经开机 3 小时 8 分钟。

管理员可以设置一个 shell 脚本来使用uptime或使用其他一些方法,详见此链接。管理员可以使用的另一种方法是设置要在系统关闭或重新启动时发送的电子邮件,详细信息可在此链接中找到

  • 不太可能@saji89 管理员有更好的事情要做,然后在本地检查每个系统的正常运行时间... (5认同)
  • @Rinzwind,我并不是说他应该使用它。我只是指出他将可以访问这台机器。在这种特殊情况下,管理员有理由进行检查。:) (2认同)

use*_*ser 9

@ saji89提到了uptime命令。我再往下走一步,简单地假设系统管理员在某处有一个脚本可以连接到每台计算机并执行cat /proc/uptime(或类似的操作)。输出的第一个字段是自系统上次重新启动以来的时间(以秒为单位),这比uptime. 例如,我的计算机给出了第一个正常运行时间字段1441218.24withuptime返回up 16 days, 16:20。1441218 秒是 16 天加 58818 秒,58818 秒是 16 1/3 小时。16 天 16 1/3 小时。

当您知道自系统应该重新启动以来的最大时间长度时,此数据使得检查系统自那时起是否已重新启动变得微不足道。

它可以通过诸如 Nagios 之类的监控工具来完成,或者通过系统管理员保存在他的计算机上的单独脚本(或者更确切地说是通过它可以访问,我想)来完成,该脚本依次或并行连接到每台计算机并打印时间自上次以某种格式重新启动以来。这一切都取决于制作它的精细程度。


ari*_*ica 8

另一种方法,只是为了完整起见,是/var/log/wtmp通过最后一个 命令查看。例子:

$ last reboot
reboot   system boot  3.2.0-36-generic Thu Jan 24 16:25 - 17:42 (1+01:17)   

wtmp begins Tue Jan  1 06:30:03 2013
Run Code Online (Sandbox Code Playgroud)

这种方法很受欢迎,因为它也恰好是完美的助记符。

Q: When did the last reboot occur? 
A: Just type 'last reboot'
Run Code Online (Sandbox Code Playgroud)


oni*_*nik 7

当需要重新启动的软件包通过 更新后apt,将reboot-required/var/run/. 系统管理员可以远程检查此文件是否存在,以确定是否因更新而需要重新启动。

  • 我怀疑情况是否如此,因为如果更新需要在安装后重新启动,用户将不得不重新启动两次,如果没有需要重新启动的更新,系统管理员可以远程运行相同的脚本并在后台更新. 在不知道更多的情况下,我猜想是内核映像升级(或其他需要重新启动的东西),用户必须重新启动才能应用新内核。但这只是猜测。 (2认同)