如何在 Debian 中保留“正常运行时间记录”日志?

如何在 Debian 中保留“正常运行时间记录”日志?

目前,我的服务器使用以下命令将正常运行时间输出到 HTML 页面:

TIME=$(uptime -p) echo ""${TIME}"!" >> /var/www/html/index.new

其生成的输出为:

增加1天1小时2分钟!

我还希望(出于好奇)能够显示我的系统的记录正常运行时间,尽管不确定记录该记录并将其显示回(正常运行时间-p)[天,小时,分钟]的最佳方式] 格式。

是否有现有的工具可以做到这一点?或者我是否需要将正常运行时间记录到文件中并使用 grep 或类似的东西提取最高值?

答案1

安装“uptimed”后,我在脚本中添加了以下几行:

uprecords | head -n 4 | tail -n 1 | awk '{print "Current uptime record is " $3,$4$5,$6" (hr:mis:sec)"}'

当前正常运行时间记录为 1 天 02:05:34(小时:分钟:秒)

这应该非常适合我的需求。

答案2

我建议使用该-s标志来获取系统启动时间的可解析时间。然后再用date和减法。

继续循环执行此操作并将其与记录进行比较。当然,录制时间需要保存到文件中。

(记录文件需要初始化。 echo 0 > record

只要这个脚本继续运行,任何东西都可以简单地读取记录文件来找出当前的记录是什么。

#!/bin/sh

format_time ()
{
    t=$1

    days=$(($t / 86400))
    t=$(($t - 86400*$days))

    hours=$(($t / 3600))
    t=$(($t - 3600*$hours))

    minutes=$(($t / 60))
    t=$(($t - 60*$minutes))

    echo "$days days $hours hours $minutes minutes $t seconds"
}

main ()
{
    # Old record
    record="$(cat record)"

    # When the system started.
    boot="$(date -d "$(uptime -s)" '+%s')"
    while true; do
        # You could also calculate the uptime before the loop and just
        # increment it, but that will rely on the script running 24/7.
        now="$(date '+%s')"
        current_uptime="$(($now - $boot))"
        # Set and save the record when it gets beaten
        if [ "$current_uptime" -gt "$record" ]; then
            record="$current_uptime"
            echo "$record" > record
        fi
        # Status should be printed _after_ potentially having set
        # a new record:
        clear
        echo "Current uptime: $(format_time "$current_uptime")"
        echo "Record uptime: $(format_time "$record")"
        # Don't waste system resources for silly things.
        sleep 1
    done
}

main

答案3

既然您已经在使用uptimed,您也可以安装uprecords-cgiuptimed它呈现网页中存储的信息;默认情况下它将被启用http://localhost/cgi-bin/uprecords.cgi

相关内容