如何使用正常运行时间来触发动作?

如何使用正常运行时间来触发动作?

我想编写 shell 或 perl 代码,在 x 天后给我通知。基本上在 SUSE Linux 服务器上,208 天后需要重新启动,否则系统会冻结。这是一个已知错误。因此,为了避免这种情况,我希望在 8 天之前收到通知邮件之类的......只是一个警报......

该脚本必须检查当前正常运行时间,然后计算总共 208 天所需的剩余天数。希望这有意义。

答案1

您可以使用 awk 轻松确定天数内的正常运行时间:

# Print days of uptime, or zero if less than 1 day.
uptime | awk '/days?/ {print $3; next}; {print 0}'

您可以将其与命令替换结合使用,根据结果执行任何您想要的操作。例如:

#!/bin/bash
days () { uptime | awk '/days?/ {print $3; next}; {print 0}'; }
UPTIME_THRESHOLD=200
if [ $(days) -ge $UPTIME_THRESHOLD ]; then
    : # Take some action.
fi

显然,您要采取的行动取决于您自己。您可以给自己发送消息,使用命令,或者任何你认为有必要做的事情。

您可能还希望将此脚本设置为每日 cron 作业,这样当超出正常运行时间阈值时,它将触发您定义的操作。如果您具有 root 访问权限,您可以直接将脚本放入/etc/cron.daily/,或者您可以设置您的个人 crontab 以每天调用一次此脚本。

答案2

受 CodeGnome 答案的启发,为 Mac 制作了一个小脚本,计算机在 8:30 开启后会显示通知。还必须配置 cron 每分钟运行一次。

#!/bin/bash
timeup () { uptime | awk  '{print $3}'; }
UPTIME="8:30,"
if [ $(timeup) == $UPTIME ]; then
    osascript -e 'tell app "Finder" to display dialog "8:30 uptime! Go Home!"' &
    osascript -e 'display notification "8:30 uptime! Go Home!" with title "Go Home!!"' &
fi

相关内容