Обработка отказа с системным-журналом-ng?

Поместите логический код для тестирования Вашего условия в самом сценарии, не пытайтесь вставить его (или связать его с) крон - сложная логика не то, для чего был разработан крон.

Так, в Вашем сценарии Вы тестируете условие и, если это оценивает к истинному, Вашим выполнениям кода обработки. Если это оценивает ко лжи, выйдите из сценария чисто.

При предположении, что 'условия' изменяются в результате обработки сценария (например, наблюдение папки для входящих файлов, которым нужны обработка и обработка одного файла каждые 20 м), затем в конечном счете условие оценит ко лжи все время, потому что вся работа была сделана.

Из Ваших комментариев похоже на контроль доступности некоторого сервера.

Я не делаю чертовски много с ударом, но как насчет этого:

#!/bin/bash

if [ `ps ax | grep $0 | wc -l` -le 3 ]; then     #1
  if [ `arping ...` -ne 1 ]; then                #2
    sleep 1200
    if [ `arping ...` -eq 1 ]; then              #3
      # do your processing here
    fi
  fi
fi

Первое, если оператор (#1) удостоверяется, что это - единственный экземпляр этого конкретного сценария, который работает. Если другой сценарий (все еще) работает, мы выходим и ничего не делаем.

Второй (#2) является Ваша начальная буква, 'хост дающий отклик на ping-запрос' тест. Если это не, то сценарий ожидает 1200-е (20 минут) прежде, чем протестировать снова (#3).

Так, если два ping - на расстоянии в 20 минут - покажут, что Ваш хост стал достижимым затем, то Ваш код обработки будет работать.

Если Вы хотите упростить вещи немного, попробуйте это:

#!/bin/bash

if [ `arping -w 59 ...` -ne 1 ]; then
  sleep 1079
  if [ `arping -w 59 ...` -eq 1 ]; then
    # do your processing here
  fi
fi

Если Вы наложите крайний срок изнасилования немного менее чем 1 минуты (-w 59) для Ваших проверок и настроите сумму сна, то можно в значительной степени гарантировать, что два теста и промежуточный сон будут завершены в течение 20-минутного периода, таким образом, не должно будет быть никакого перекрытия со смежными периодами и никакой потребности проверить, чтобы видеть, работает ли другой сценарий все еще.

Любой из вышеупомянутых сценариев был бы, конечно, вызван через статическую запись крона, которая работает каждые 20 минут:

*/20 * * * * /path/to/script.sh
3
05.02.2014, 15:25
1 ответ

Сам системный-журнал-ng не делает этого. Однако вот несколько способов достигнуть высоконадежного входа, отсортированного на увеличивающихся уровнях сложности/стоимости:

  • Просто добавление обоих серверов и всегда пишет в обоих, самый легкий.

  • Имейте резервную конфигурацию системного журнала вокруг со вторым именем сервера. Имейте cronjob или что-то для проверки локального системного журнала на отчеты об ошибках соединения к серверу и, когда каждый будет найден, системный журнал перезапуска с резервной конфигурацией

  • Установка haproxy в tcp-режиме на локальном сервере и установка его, чтобы использовать основной сервер сначала и перейти к второму в случае, если первые сбои. Системный журнал набора для входа к локальному haproxy экземпляру вместо непосредственно к удаленным серверам

  • Установка кластера лог-серверов с совместно используемыми дисками на SAN, коммерческий HA (например, Кластера Veritas)... Это дорого; стоит ли это того, будет зависеть от того, какого количества это будет стоить Вам для потери некоторых журналов.

2
27.01.2020, 21:28

Теги

Похожие вопросы