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


35

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

从那以后,我重新启动了系统,但令他们惊讶的是,他们怎么知道我是否重新启动了计算机。有人可以解释这是如何工作的吗?


10
也许你应该问他?
Marco Ceppi

1
哇,我从来没有意识到有太多的方法。多谢你们!
nikhil 2013年

Answers:


43

可以使用SNMP(在您的SysAdmin已在您的网络上进行设置的情况下)完成快速远程检查此问题的方法:

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

最有可能的是,将对数据进行轮询并将其存储在某种类型的网络管理/监视系统(即Nagios或Cacti)中。

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


好东西。有人在这里创建了一个脚本,看起来很难维护,而这条衬里看起来不错:D谢谢,并给予
好评

@Rinzwind谢谢。这是我有时使用的另一种衬里sudo hping3 -c 2 -p 80 --tcp-timestamp -S <IPaddress> 2>&1 | grep uptime
Kevin Bowen

每个常规的监视软件都可以执行此操作,但是SNMP是最常见的监视程序,这是一个很好的示例。+1。
gertvdijk

28

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

样本输出:

saji@geeklap:~$ uptime
12:41:29 up  3:08,  2 users,  load average: 1.06, 0.85, 0.86

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

管理员可以设置shell脚本以使用uptime或使用其他方法,如本链接中所述。管理员可以使用的另一种方法是设置要在系统关闭或重新启动时发送的电子邮件,有关详细信息,请访问此链接


如果他们没有登录我的计算机的权限,可以远程完成吗?
nikhil

1
出于管理目的,管理员绝对可以访问您的系统。:)
saji89

5
不太可能@ saji89管理员要做的更好的事情是,然后在本地检查每个系统的正常运行时间
Rinzwind 2013年

2
@Rinzwind,我不是在告诉他应该使用它。我只是指出他将可以使用该机器。在这种情况下,管理员有理由检查。:)
saji89

1
喔好吧。但是我有更好的事情要做,然后检查系统的正常运行时间;)@ saji89
Rinzwind 2013年

9

@ saji89提到了uptime命令。我再往前走一步,简单地假设sysadmin在某个地方有一个脚本,该脚本连接到每台计算机并执行cat /proc/uptime(或等效操作)。输出的第一个字段是自上次重新引导系统以来的时间(以秒为单位),它比的输出要容易得多uptime。例如,我的计算机给出了1441218.24带有uptimereturning 的第一个正常运行时间字段up 16 days, 16:20。1441218秒是16天加58818秒,而58818秒是16 1/3小时。16天16 1/3小时。

当您知道自从应该重新启动系统以来的最长时间时,使用此数据就很容易检查自从那时以来是否已重新启动系统。

可以通过诸如Nagios之类的监视工具来完成,也可以通过sysadmin保留在其计算机上的单独脚本(或者,我想可以通过它来访问)来实现,该脚本依次或并行连接到每台计算机并打印时间。自上次以某种格式重新启动以来。这一切都取决于制作方法的复杂程度。


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

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

Q: When did the last reboot occur? 
A: Just type 'last reboot'

7

当需要重新启动的软件包已通过更新时apt,将reboot-required创建一个名为的文件/var/run/。系统管理员可以远程检查此文件的存在,以确定是否由于更新而需要重新启动。


系统管理员要求OP重新启动计算机以“应用一些补丁”。至少对我而言,这意味着实际更新是在引导过程中通过某种机制进行的。(也许是引导脚本执行了类似的命令apt-get -y upgrade。)因此,reboot-required因为从apt的角度来看,不需要重新引导。
CVn

2
我怀疑是这种情况,因为如果安装后更新需要重新启动,并且如果没有要求重新启动的更新,则用户将必须重新启动两次,因此sysadmin可以远程运行相同的脚本并在后台更新。在不了解更多信息的情况下,我猜想有一个内核映像升级(或其他需要重新引导的更新),并且用户必须重新引导才能应用新内核。但这只是猜测。
onik

2

这个 ...

应用一些补丁

是关键部分。

如果管理员很好,他可能会从HIS机器上设置更新,因此PC不必从Web下载相同的文件。如果是这样,他可以从自己的计算机上看到谁下载了补丁。

然后,他只需要查看已加载补丁程序的系统的IP地址,然后向未加载补丁程序的系统发送和发送电子邮件。该电子邮件甚至可以是自动生成的邮件。想象有500台机器。如果有几种方法可以用他自己的机器来完成,则手动检查每个方法都是浪费时间。

这样做的一个非常重要的原因:管理员需要控制他需要维护的系统上正在发生的事情。因此,他应该始终具有一个控制点(即拥有所有工具的他自己的机器),可以在其中看到任何机器的状态。


3
您可能需要重新启动才能应用补丁程序,但不能保证下载仅在重新启动时进行。
Karthik T

2

答案中描述了几种有效的方法。对于大型公司而言,登录并检查正常运行时间会很奇怪,但对于较小的公司却可以实现。系统管理员本来可以通过SNMP进行检查,但是可以在其中使用相同的“麻烦”参数。

就我而言,最可能的情况是:

  1. 系统管理员运行某种检查软件(可能是Nagios)来检查计算机群集中的问题。诸如NRPE插件之类的东西将用于大多数系统,并且可以向您显示正常运行时间(除了光盘,登录的用户等)。
  2. 可以使用类似的方法来检查在哪里运行。如果可以检查要更新的补丁程序(您正在使用的内核),则“所有用户是否正在更新”脚本仍将指向您的计算机,处于“不良”状态。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.