3

Я хочу написать оболочку или Perl-код, который будет уведомлять меня через x дней. В основном на сервере SUSE Linux требуется перезагрузка через 208 дней, иначе система зависнет. Это известная ошибка. Поэтому, чтобы избежать этого, я хочу, чтобы письмо с уведомлением приходило мне раньше, чем через 8 дней, что-то в этом роде ... просто предупреждение ...

Сценарий должен проверить текущее время безотказной работы, а затем рассчитать оставшиеся дни, необходимые для общего количества 208 дней. Надеюсь, это имеет смысл.

2 ответа2

7

Вы можете легко определить время работы в днях с помощью 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

Очевидно, что ваше действие зависит от вас. Вы можете отправлять себе сообщения по электронной почте, планировать перезагрузку с помощью команды at или делать все остальное, что вы считаете необходимым сделать.

Возможно, вы также захотите настроить этот скрипт как ежедневное задание cron, чтобы он запускал определенное вами действие при превышении порога времени безотказной работы. Если у вас есть root-доступ, вы можете просто перенести скрипт в /etc/cron.daily/ или настроить свой личный crontab для вызова этого скрипта один раз в день.

1

Вдохновленный ответом 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .