Листинг скрипта настройки cron-задачи перезапуска eCA-VA

#!/bin/bash
 
# Расписание в формате cron
 
CRON_SCHEDULE="0 0 * * *"
 
# Название systemd-сервиса
 
SERVICE_NAME="aecava.service"
 
 
 
 
if [ "$EUID" -ne 0 ]; then
 
  echo "Пожалуйста, запустите скрипт с правами суперпользователя."
 
  exit 1
 
fi
 
 
 
 
if ! command -v crontab &> /dev/null; then
 
  echo "Ошибка: crontab не найден. Установите пакет cron."
 
  exit 1
 
fi
 
 
 
 
if systemctl is-active --quiet crond; then
 
  echo "Служба crond запущена."
 
elif systemctl is-active --quiet cron; then
 
  echo "Служба cron запущена."
 
else
 
  echo "Ошибка: cron не запущен. Попробуйте запустить:"
 
  echo "  sudo systemctl start crond"
 
  echo "  sudo systemctl start cron"
 
  exit 1
 
fi
 
 
 
 
if ! command -v systemctl &> /dev/null; then
 
  echo "Ошибка: systemctl не найден. Убедитесь, что система поддерживает systemd."
 
  exit 1
 
fi
 
 
 
 
 
 
 
setup_cron() {
 
  echo "Настройка cron для автоматического перезапуска сервиса..."
 
 
 
 
  CRON_CMD="$CRON_SCHEDULE logger -t RestartService \"Перезапуск сервиса $SERVICE_NAME\" && systemctl restart $SERVICE_NAME"
 
 
 
 
  (crontab -l 2>/dev/null | grep -v "$SERVICE_NAME"; echo "$CRON_CMD") | crontab -
 
 
 
 
  echo "Cron настроен: сервис $SERVICE_NAME будет перезапускаться по расписанию $CRON_SCHEDULE."
 
  logger -t RestartService "$(date '+%Y-%m-%d %H:%M:%S') - Cron настроен с расписанием $CRON_SCHEDULE для сервиса $SERVICE_NAME"
 
}
 
 
 
 
 
 
 
main() {
 
  if [ -z "$CRON_SCHEDULE" ] || [ -z "$SERVICE_NAME" ]; then
 
    echo "Ошибка: CRON_SCHEDULE или SERVICE_NAME не заданы. Проверьте конфигурацию в начале скрипта."
 
    exit 1
 
  fi
 
 
 
 
setup_cron
 
 
 
 
}
 
 
 
 
main

Листинг скрипта удаления cron-задачи перезапуска eCA-VA

#!/bin/bash
 
 
 
 
SERVICE_NAME="aecava.service"
 
 
 
 
if [ "$EUID" -ne 0 ]; then
 
  echo "Пожалуйста, запустите скрипт с правами суперпользователя (sudo)."
 
  exit 1
 
fi
 
 
 
 
remove_cron() {
 
  echo "Удаление cron-задание для сервиса $SERVICE_NAME..."
 
  crontab -l 2>/dev/null | grep -v "$SERVICE_NAME" | crontab -
 
 
 
 
  if [ $? -eq 0 ]; then
 
    echo "$(date '+%Y-%m-%d %H:%M:%S') - Cron-задание для $SERVICE_NAME успешно удалено."
 
  else
 
    echo "$(date '+%Y-%m-%d %H:%M:%S') - Ошибка при удалении cron-задания для $SERVICE_NAME."
 
    exit 1
 
  fi
 
}
 
 
 
 
main() {
 
  if [ -z "$SERVICE_NAME" ]; then
 
    echo "Ошибка: SERVICE_NAME не задано. Проверьте конфигурацию в начале скрипта."
 
    exit 1
 
  fi
 
 
 
 
  remove_cron
 
}
 
 
 
 
main