出于一些原因，你可能需要每月收集一次 Linux 系统运行时间报告。如果是这样，你可以根据需要使用以下 bash 脚本 之一。我们为什么要收集这份报告？在一段时间后重启 Linux 服务器是解决某些未解决问题的好方法。（LCTT 译注：本文这些观点值得商榷，很多服务器可以稳定运行几千天，尤其是有了内核热补丁之后，启动并不是必须的。）建议每 180 天重新启动一次。但时间段也许取决于你公司的政策。如果你已经长时间运行服务器而没有重启。这可能导致服务器上出现一些性能或内存问题，我在许多服务器上都注意到了这一点。这些脚本一次性提供了所有系统运行报告。什么是 uptime 命令uptime 命令将告诉你系统已经运行了多长时间。它在一行中显示以下信息：当前时间、系统运行了多长时间、当前登录了多少用户以及过去 1、5 和 15 分钟的平均系统负载。什么是 tuptime?tuptime 是用于报告系统的历史和统计运行时间的工具，可在重启之间保存。它类似于 uptime 命令，但输出更有趣。1）检查 Linux 系统运行时间的 Bash 脚本该 bash 脚本将收集所有服务器正常运行时间，并将报告发送到给定的电子邮箱地址。请替换为你的电子邮箱地址，而不是用我们的，否则你将不会收到邮件。# vi /opt/scripts/system-uptime-script.sh #!/bin/bash > /tmp/uptime-report.out for host in cat /tmp/servers.txt do echo -n "$host: " ssh $host uptime | awk '{print $3,$4}' | sed 's/,//' done | column -t >> /tmp/uptime-report.out cat /tmp/uptime-report.out | mail -s "Linux Servers Uptime Report" "2daygeek@gmail.com"给 system-uptime-script.sh 设置可执行权限。$ chmod +x /opt/scripts/system-uptime-script.sh最后运行 bash 脚本获取输出。# sh /opt/scripts/system-uptime-script.sh你将收到类似以下的报告。# cat /tmp/uptime-report.out 192.168.1.5: 2 days 192.168.1.6: 15 days 192.168.1.7: 30 days 192.168.1.8: 7 days 192.168.1.9: 67 days 192.168.1.10: 130 days 192.168.1.11: 23 days2）检查 Linux 系统是否运行了 30 天以上的 Bash 脚本此 bash 脚本会收集运行 30 天以上的服务器，并将报告发送到指定的邮箱地址。你可以根据需要更改天数。# vi /opt/scripts/system-uptime-script-1.sh #!/bin/bash > /tmp/uptime-report-1.out for host in cat /tmp/servers.txt do echo -n "$host: " ssh $host uptime | awk '{print $3,$4}' | sed 's/,//' done | column -t >> /tmp/uptime-report-1.out cat /tmp/uptime-report-1.out | awk ' $2 >= 30' > /tmp/uptime-report-2.out cat /tmp/uptime-report-2.out | mail -s "Linux Servers Uptime Report" "2daygeek@gmail.com"给 system-uptime-script-1.sh 设置可执行权限。$ chmod +x /opt/scripts/system-uptime-script-1.sh最后添加一条 cronjob 来自动执行。它会在每天早上 7 点运行。# crontab -e 0 7 * * * /bin/bash /opt/scripts/system-uptime-script-1.sh注意： 你会在每天早上 7 点会收到一封电子邮件提醒，它是昨天的详情。你将收到类似下面的报告。# cat /tmp/uptime-report-2.out 192.168.1.7: 30 days 192.168.1.9: 67 days 192.168.1.10: 130 daysvia: https://www.2daygeek.com/bash-script-generate-linux-system-uptime-reports/作者：Magesh Maruthamuthu 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
如何记录 Linux 的系统运行时间的统计信息
Linux/Unix 系统管理员对服务器的系统运行时间有一种奇怪的痴迷。这里有一个关于这个主题的 xkcd 漫画，一个好的系统管理员是一股不可阻挡的力量，他伫立在你家猫咪博客的服务器之前，对抗黑暗势力。我们可以使用 uptime 命令或 w 命令 或 top 命令来判断 Linux 系统运行了多久。我可以使用 tuptime 工具保留每次重新启动的运行时间，以获得系统运行时间的历史和统计报告。这就像 uptime 命令一样，但输出结果更令人印象深刻。最近我发现了另一种称为 uptimed 的工具，用于记录关于机器的系统运行时间和统计信息。让我们看看如何使用 Linux 操作系统上的 uptimed 和 uprecords 来获得运行时间的记录统计信息。查找系统运行时间非常简单，只需在基于 Linux 的系统上键入以下命令即可：$ uptime -p up 2 weeks, 4 days, 7 hours, 28 minutes 要保留有关 uptime 的历史统计信息，请使用 tuptime 或 uptimed 工具。安装 uptimed安装 uptimed 的最简单的方式是通过你的软件包管理器，比如 apt/apt-get/yum 这些你的 Linux 发行版的朋友。在 Debian/Ubuntu Linux 上安装 uptimed键入以下 apt 命令/apt-get 命令：$ sudo apt-get install uptimed 示例输出：Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: libuptimed0 The following NEW packages will be installed: libuptimed0 uptimed 0 upgraded, 2 newly installed, 0 to remove and 3 not upgraded. Need to get 40.7 kB of archives. After this operation, 228 kB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 http://mirrors.linode.com/ubuntu xenial/universe amd64 libuptimed0 amd64 1:0.3.17-4 [9,050 B] Get:2 http://mirrors.linode.com/ubuntu xenial/universe amd64 uptimed amd64 1:0.3.17-4 [31.6 kB] Fetched 40.7 kB in 0s (2,738 kB/s) Preconfiguring packages ... Selecting previously unselected package libuptimed0. (Reading database ... 39163 files and directories currently installed.) Preparing to unpack .../libuptimed0_1%3a0.3.17-4_amd64.deb ... Unpacking libuptimed0 (1:0.3.17-4) ... Selecting previously unselected package uptimed. Preparing to unpack .../uptimed_1%3a0.3.17-4_amd64.deb ... Unpacking uptimed (1:0.3.17-4) ... Processing triggers for systemd (229-4ubuntu21) ... Processing triggers for ureadahead (0.100.0-19) ... Processing triggers for man-db (2.7.5-1) ... Setting up libuptimed0 (1:0.3.17-4) ... Setting up uptimed (1:0.3.17-4) ... Processing triggers for libc-bin (2.23-0ubuntu9) ... Processing triggers for systemd (229-4ubuntu21) ... Processing triggers for ureadahead (0.100.0-19) ... 在 CentOS/RHEL/Fedora/Oracle/Scientific Linux 上安装 uptimed首先 在 CentOS/RHEL 使用 EPEL 仓库：$ sudo yum -y install epel-release 然后，键入以下 yum 命令：$ sudo yum install uptimed 示例输出：Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: centos.excellmedia.net * epel: ftp.cuhk.edu.hk * extras: centos.excellmedia.net * updates: centos.excellmedia.net Resolving Dependencies --> Running transaction check ---> Package uptimed.x86_64 0:0.4.0-6.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved =============================================================================== Package Arch Version Repository Size =============================================================================== Installing: uptimed x86_64 0.4.0-6.el7 epel 47 k Transaction Summary =============================================================================== Install 1 Package Total download size: 47 k Installed size: 98 k Is this ok [y/d/N]: y Downloading packages: uptimed-0.4.0-6.el7.x86_64.rpm | 47 kB 00:01 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : uptimed-0.4.0-6.el7.x86_64 1/1 Verifying : uptimed-0.4.0-6.el7.x86_64 1/1 Installed: uptimed.x86_64 0:0.4.0-6.el7 Complete! 如果你正在使用 Fedora Linux，运行以下 dnf 命令：$ sudo dnf install uptimed 在 Arch Linux 上安装 uptimed键入以下 pacman 命令：$ sudo pacman -S uptimed 在 Gentoo Linux 上安装 uptimed键入以下 emerge 命令：$ sudo emerge --ask uptimed 如何配置 uptimed使用文本编辑器编辑 /etc/uptimed.conf 文件，例如 vim 命令：$ sudo vim /etc/uptimed.conf 最少设置一个 email 地址来发送记录。假定有个兼容 sendmail 的 MTA 安装在 /usr/lib/sendmail。EMAIL=vivek@server1.cyberciti.biz 保存并关闭文件。如何在系统启动时启动 uptimed 服务？使用 systemctl 命令启动 uptimed 服务：$ sudo systemctl enable uptimed 我该如何 启动/停止/重启 或者查看 uptimed 服务的状态？$ sudo systemctl start uptimed ## start it ## $ sudo systemctl stop uptimed ## stop it ## $ sudo systemctl restart uptimed ## restart it ## $ sudo systemctl status uptimed ## view status ## 示例输出：● uptimed.service - uptime record daemon Loaded: loaded (/lib/systemd/system/uptimed.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2017-11-09 17:49:14 UTC; 18min ago Main PID: 11137 (uptimed) CGroup: /system.slice/uptimed.service └─11137 /usr/sbin/uptimed -f Nov 09 17:49:14 gfs04 systemd[1]: Started uptime record daemon. 如何查看 uptime 记录只需键入以下命令即可查看 uptimed(8) 程序的统计信息：$ uprecords 示例输出：uprecords 有一些选项：$ uprecords -? 示例输出：usage: uprecords [OPTION]... -? this help -a do not print ansi codes -b sort by boottime -B reverse sort by boottime -k sort by sysinfo -K reverse sort by sysinfo -d print downtime seen before every uptimes instead of system -c do not show current entry if not in top entries -f run continously in a loop -s do not print extra statistics -w wide output (more than 80 cols per line) -i INTERVAL use INTERVAL seconds for loop instead of 5, implies -f -m COUNT show a maximum of top COUNT entries instead of 10 -M show next milestone -v version information 结论这是一个极好的小工具，可以显示服务器正常运行时间的记录，以证明机器正常运行时间和你的业务连续性。在相关说明中，你可以看到官方的 XKCD 系统管理员 T恤 因为漫画被制作成衬衫，其中包括背面的新插图。via: https://www.cyberciti.biz/hardware/see-records-statistics-about-a-linux-servers-uptime/作者：Vivek Gite 译者：MjSeven 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
Linux Uptime 命令，让你知道你的系统运行了多久
对于一些人来说系统运行了多久是无关紧要的，但是对于服务器管理员来说，这是相当重要的信息。服务器在运行重要应用的时候，必须尽量保证长时间的稳定运行，有时候甚至要求零宕机。那么我们怎么才能知道服务器运行了多久呢？在Linux 下，我们可以使用uptime 命令，而且此命令不必使用root 权限。uptime 命令在系统中已经默认安装了。语法如下：$ uptime 你会在屏幕上看到如下显示：这些信息保存在/proc/uptime 文件中，虽然是以文本方式保存，但是这些数据却不能直接显示，这就需要我们使用uptime 命令来翻译它。以下是如何解读uptime 提供的信息：系统时间在图1中，左起第一条信息是14:04:39，这就是当前系统时间，以24小时格式输出。系统运行时间第二条信息Up 1004 days, 12:20，这是显示你的系统运行时间。图1 显示你的系统已经运行了1004天12小时20分钟，如果你的系统没有运行超过24小时，这里将只会显示小时分钟或者只显示分钟。注意图2、图3的信息，当系统重启后将会清零。已登录用户的数量第三部分的信息是显示已登陆用户的数量。在图1中，显示的是1 user ，即当前登录用户数量。当多个用户在同时登陆系统时，uptime 命令将告诉你用户的数量。平均负载量最后一个信息是系统的平均负载量。回到图1，你看到这样带两位小数的数字0.25, 0.25, 0.19可以换算成百分比，即0.25和0.19分别代表着25%和19%。0.25, 0.25, 0.19分别代表着过去1分钟、5分钟、15分钟系统的平均负载量。负载量越低意味着你的系统性能越好。这就是uptime 命令的日常使用指导，如果想获取更详细的信息，请通过输入man uptime 进入uptime 命令的manual 页面来查看。你的机器已经运行多久了？贴出你的uptime给大家看看吧。via: http://linoxide.com/linux-command/linux-uptime-command/译者：NearTan 校对：Caroline本文由 LCTT 原创翻译，Linux中国 荣誉推出