Как можно использовать время безотказной работы для запуска действия?

Как можно использовать время безотказной работы для запуска действия?

Я хочу написать код оболочки или 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

Связанный контент