我拥有一台采用硬件解决方案的服务器,我想查看它运行的总时间。例如所有正常运行时间的总和。
例如,如果它工作了 3 小时然后停止,3 天后又工作了 5 个小时,总工作时间为 3+5=8
服务器运行了约 2 个月。我可以从某些系统变量中提取此历史记录吗?
答案1
您可以做几件事来跟踪系统的总正常运行时间。
跟踪系统磁盘的正常运行时间
如果您的系统磁盘具有 SMART 功能(很可能具有),并且您启用了智能监控,则可以在 SMART 报告中查看总正常运行时间。
如果还没有,请使用以下命令安装:
sudo apt install smartmontools
您可以使用以下命令查看状态,包括“开机时间”:
sudo smartctl -a /dev/<device>
就我而言是:
sudo smartctl -a /dev/nvme0n1 | grep "Power On Hours"
这使:
Power On Hours: 25,013
唯一的缺点是它只跟踪当前系统磁盘的正常运行时间。这还有一个额外的障碍,即它是磁盘的总通电时间,包括它在以前的系统中的使用时间。因此,如果它不是新磁盘,请从通电时间中减去自安装以来的任何先前运行时间。
安装正常运行时间跟踪守护程序
谢谢这个答案寻找灵感。
您可以安装uptimed
,并将其设置为永远不会丢弃值(LOG_MAXIMUM_ENTRIES=0
在 中设置/etc/uptimed.conf
)。另一个选项是tuptime
。
安装uptimed
方式:
sudo apt install uptimed
运行时,您可以使用以下命令查看总正常运行时间:
uprecords
示例输出:
up 1492 days, 02:57:18 | since Sat Sep 7 00:50:06 2013
down 61 days, 08:11:24 | since Sat Sep 7 00:50:06 2013
%up 96.051 | since Sat Sep 7 00:50:06 2013
对于tuptime
,这只是默认命令:
tuptime
示例输出:
System startups: 3 since 07:24:35 AM 01/20/2020
System shutdowns: 2 ok <- 0 bad
System uptime: 43.18 % - 1 hour, 0 minutes and 27 seconds
System downtime: 56.82 % - 1 hour, 19 minutes and 32 seconds
System life: 2 hours, 19 minutes and 59 seconds
Largest uptime: 35 minutes and 1 second from 07:41:00 AM 01/20/2020
Shortest uptime: 9 minutes and 20 seconds from 09:35:14 AM 01/20/2020
Average uptime: 20 minutes and 9 seconds
Largest downtime: 1 hour, 19 minutes and 13 seconds from 08:16:01 AM 01/20/2020
Shortest downtime: 19 seconds from 07:40:41 AM 01/20/2020
Average downtime: 39 minutes and 46 seconds
Current uptime: 9 minutes and 20 seconds since 09:35:14 AM 01/20/2020
此方法仅从安装并运行的时刻起计算正常运行时间uptimed
。tuptime
答案2
uptime
对此来说并不是很好,但您通常可以假设“平均负载”/“核心数”可以为您提供自机器启动以来的机器工作量的近似值。进行此计算后,1 = 大部分时间处于最大负载,0.5 = 负载为一半,等等。
命令本身的输出在“机器之间”相对无用,因为在 8 核机器上满载时输出为 8.0,而 1.0 几乎不使用。在双核/单处理器机器上,2.0 意味着您正在销毁它,等等。:D
如果您有监控软件(例如这些工作负载在 VM/docker 映像/等中运行),则 VM 主机通常可以显示服务器工作的所有时间以及工作时间的图表。您可以配置它们保留多少数据,但大多数默认只保留一天左右的图表。您必须打开它。