二维码

您的系统的正常运行时间是多少?

2652 人阅读 | 时间:2020年01月03日 13:59

使用该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

接下来,将其传递tsincetuptime

$ 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

里卡多·弗赖尔(Ricardo Fraile)担任系统管理员已有近十年的时间,自1990年代末以来,他就一直在使用Linux和FreeBSD。他将很高兴回答发送到rfraile@rfraile.eu的任何问题或评论。


©著作权归作者所有:来自ZhiKuGroup博客作者没文化的原创作品,如需转载,请注明出处,否则将追究法律责任 来源:ZhiKuGroup博客,欢迎分享。

评论专区
  • 昵 称必填
  • 邮 箱选填
  • 网 址选填
◎已有 0 人评论
搜索
作者介绍
30天热门
×
×
本站会员尊享VIP特权,现在就加入我们吧!登录注册×
»
会员登录
新用户注册
×
会员注册
已有账号登录
×