使用该tuptime
工具跟踪系统的正常运行时间和停机时间 。
如果“开始”表示最后一次启动,则查找系统的正常运行时间很容易。历史uptime
命令将报告该信息。但是,如果“开始”是指系统有史以来第一次启动,会发生什么?还是过去365天?还是上个月?
是否有任何方法可以累积正常运行时间,甚至更好地了解整个系统的寿命?例如,汽车有里程表,您可以从第一天开始就可以看到英里/公里。对于计算机,正是为此目的开发了一种工具:tuptime
。
tuptime
报告系统的历史和统计运行时间和停止时间,并跟踪两次重新启动之间的情况。其主要目标是:
计算系统启动次数。
注册第一次启动时间(自安装以来)。
计算预期和意外的停机次数。
显示自首次启动以来的正常运行时间和停机时间百分比。
显示累计的系统正常运行时间,停机时间和总计。
显示最长,最短和平均的正常运行时间和停机时间。
显示当前的正常运行时间。
使用大多数以前的值打印格式化的表或列表。
注册使用的内核。
从和/或直到给定的启动时间或时间戳记创建报告。
以CSV格式创建报告。
它的工作非常简单。tuptime
落入初始化管理器以在启动和关闭时执行,然后进入cron任务,同时启动常规执行-无需担心任何恶魔。在内部,它查看btime
值(在/ proc / stat中可用)和uptime
值(从/ proc / uptime中获得),基本上就是这样。
使用各自的软件包管理器,在Debian,Ubuntu和衍生发行版中,安装过程很容易,并且应该在所有官方存储库中都可以使用。作为前提条件,它需要Python 3和SQLite库,默认情况下,它们通常包含在核心软件包中。
一旦在系统上可用,就可以获取信息。它具有三种输出格式:默认为摘要,还有表和列表输出以打印注册的行为。
图1. tuptime
安装后的执行示例
第一次执行将报告自系统启动以来的时间,并且这些行是不言自明的(请注意,日期格式基于系统的语言环境设置):
$ tuptimeSystem startups: 1 since 22:21:49 02/02/18System shutdowns: 0 ok - 0 badSystem uptime: 100.0 % - 40 minutes and 22 secondsSystem downtime: 0.0 % - 0 secondsSystem life: 40 minutes and 22 secondsLargest uptime: 40 minutes and 22 seconds from ↪22:21:49 02/02/18Shortest uptime: 40 minutes and 22 seconds from ↪22:21:49 02/02/18Average uptime: 40 minutes and 22 secondsLargest downtime: 0 secondsShortest downtime: 0 secondsAverage downtime: 0 secondsCurrent uptime: 40 minutes and 22 seconds since ↪22:21:49 02/02/18
从较旧的系统中获取此报告时(请参见下文),该信息将变得更加有趣。除了数量增加这一事实外,还有更多有关该行为的事实。例如,该System shutdowns
行有11个“错误”,表明关闭过程未正确执行,可能是由于电源故障或系统挂起。正常运行时间和停机时间所占的百分比反映出此报告来自使用率较低的系统:
$ tuptimeSystem startups: 688 since 22:21:49 09/10/15System shutdowns: 676 ok <- 11 badSystem uptime: 4.6 % - 40 days, 7 hours, 7 minutes ↪and 48 secondsSystem downtime: 95.4 % - 2 years, 105 days, 17 hours, ↪19 minutes and 25 secondsSystem life: 2 years, 146 days, 0 hours, 27 minutes ↪and 13 secondsLargest uptime: 12 hours, 51 minutes and 48 seconds from ↪09:29:18 02/03/16Shortest uptime: 5 seconds from 22:20:54 12/02/17Average uptime: 1 hour, 24 minutes and 21 secondsLargest downtime: 23 days, 3 hours, 23 minutes and 30 seconds ↪from 13:49:42 04/12/16Shortest downtime: 8 seconds from 17:08:00 03/01/17Average downtime: 1 day, 5 hours, 11 minutes and 44 secondsCurrent uptime: 1 hour, 50 minutes and 0 seconds since ↪17:37:32 02/07/18
您可以将报告更改为表格格式(-t
)与其他任何选项结合使用,在这种情况下,因为最近两次启动(-S -2
)是这样:
$ tuptime -t -S -2687 14:07:36 02/04/18 1 hour, 28 minutes and 22 seconds ↪15:35:58 02/04/18 OK 3 days, 2 hours, 1 minute ↪and 34 seconds688 17:37:32 02/07/18 1 hour, 26 minutes and 13 seconds
或者,您可以更改为列表报告格式(-l
)并显示结果,直到第二次启动(-U 2
):
$ tuptime -l -U 2Startup: 1 at 22:21:49 09/10/15Uptime: 50 minutes and 44 secondsShutdown: OK at 23:12:33 09/10/15Downtime: 13 secondsStartup: 2 at 23:12:46 09/10/15Uptime: 1 minute and 2 secondsShutdown: OK at 23:13:48 09/10/15Downtime: 18 hours, 57 minutes and 18 seconds
tuptime
还使用tsince
和 tuntil
选项接受特定日期之间的范围 。两者都需要一个以纪元日期为单位的参数。另一个示例是从过去365天到现在的报告,也许是检查提供商的SLA。
首先,使用以下date
命令获取一年前的纪元日期:
$ date --date="1 year ago" +%s1486490845
接下来,将其传递tsince
给tuptime
:
$ tuptime --tsince 1486490845
这是上个月第一天到最后一天的CSV格式报告示例。同样,使用date
获取第一天和最后一天作为时间戳,并将两者都传递给tuptime
:
$ date -d "-1 month 00:00" +%s1514761200$ date -d "this month -1 second 00:00" +%s1517439599$ tuptime --tsince 1514761200 --tuntil 1517439599 --csv
或者,您可以-l
按照正常运行时间()的顺序列出所有条目()-o u
,而不是以相反的顺序(-r
)列出启动编号,包括正在运行的内核(-k
):
$ tuptime -l -o u -r -k
该手册提供了每个选项的详细信息,并包含一些有关同步日期和时间的有趣注释,这些注释可在出现问题时提供帮助。有关更多信息,请参见https://github.com/rfrail3/tuptime.git。
评论专区