尝试计算正常运行时间和电子邮件(如果超过天数)

尝试计算正常运行时间和电子邮件(如果超过天数)

我需要创建一个每天执行(cron作业)的脚本,计算系统的正常运行时间(仅天),如果该数字大于定义的值(例如 30),则通过电子邮件发送系统信息(uname -a)和数量几天到某个地址(例如[email protected])。

我在将天数转换为我可以执行计算并采取行动的东西时迷失了方向。开始使用

uptime | grep -o "up.*day"

命令但随后卡住了。使用 CentOS 7.8。

预先感谢您的任何帮助!

答案1

文档man uptime提供了这个片段

-s, --since- 系统启动以来,yyyy-mm-dd HH:MM:SS格式

这样您就可以获得计数开始的绝对日期/时间

uptime -s
2020-02-12 12:37:16

从当前日期/时间中减去该值,您将得到天数。 (这有点复杂,因为日期数学通常以秒为单位)

# Seconds at boot
secSince=$(date --date "$(uptime -s)" +%s)

# Seconds now
secNow=$(date +%s)

# Difference
secInterval=$((secNow - secSince))

# Convert to days
daysInterval=$((secInterval / (60*60*24)))

echo "$daysInterval day(s) uptime"

如果在计算的时间间隔内添加了闰秒,则报告的日期可能会在当地午夜的几秒内偏差一秒。

相关内容