我需要创建一个每天执行(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"
如果在计算的时间间隔内添加了闰秒,则报告的日期可能会在当地午夜的几秒内偏差一秒。