Назад | Перейти на главную страницу

Как запланировать автоматический перезапуск приложения на сервере Linux, скажем, каждые 4 дня

Я хотел бы знать, есть ли простой способ запланировать автоматический перезапуск приложения, такого как OpenVPN на сервере Linux, каждые 4 дня в определенное время.

Спасибо

Используйте cron. Поместите файл в /etc/cron.d, содержащий следующую строку:

0 0 * / 4 * * command_to_restart_openvpn

Видеть этот ответ и вот этот.

Вы можете создать cron задание, которое выполняется каждый день и проверяет, есть ли остаток от деления date +%s по 24*60*60 (секунды в день) кратно четырем. Если нет, то выйдите.

#!/bin/bash
if (( $(date +%s) / (60*60*24) % 4 != 0 )); then exit; fi

или

#!/bin/sh
if [ $(($(date +%s)/(60*60*24)%4)) != 0 ]; then exit; fi

Вы можете изменить «0» на 1, 2 или 3, чтобы указать, какой день четырехдневного цикла является вашим пусковым днем. Как отмечено в первой ссылке выше, при этом не учитываются дополнительные секунды.

Или вы можете заставить свой скрипт сделать свое дело, а затем поставить себя в очередь для повторного запуска с at now + 4 days (вместо «сейчас» можно указать время начала: at 9:00 + 4 days для предотвращения сползания времени).

Если это действительно так который важно получать каждые 4 дня, запускайте этот сценарий при запуске (адаптируйте к вашим местным потребностям):

#!/bin/bash
service openvpn start
while sleep $((60 * 60 * 24 * 4)); do
  service openvpn restart
done

Но вы, вероятно, обнаружите, что ваша жизнь станет лучше, если перезапустите ее через cron, как предлагает Деннис.

У меня есть приложение, которое нужно запускать каждые 20 дней. Для этого я использую сценарий, который проверяет временную метку файла флага (создавая его, если он не существует). Если этот файл был изменен менее 20 дней назад, сценарий завершится. Если нет, он «касается» файла флага, чтобы сбросить его временную метку до текущего момента, и вызывает приложение, которое необходимо запустить. Скрипт запускается как ежедневное задание cron.