Linux + создает простой сторожевой процесс в сценарии оболочки

Microsoft вежливо создала всю статью KB, названную, "Как Использовать SQL Server для Анализа блогов", которые должны ответить вопрос заголовка.

Да имеет смысл хранить журналы в SQL-сервере, если ни по какой другой причине, чем смягчение повреждения файла выходит и также создание резервных копий тех файлов более легкое использование планировщик SQL. Профессионалы использования базы данных SQL Server фактически самоочевидны. Плоские текстовые файлы не предлагают способности к анализу данных. Реляционные базы данных, которые могут быть запрошены через SQL, сделаны для хранения информации и извлечения. Та информация может легко быть отобрана для тенденций, статистики, корреляций и и т.д. Это - весь вопрос разработки запросов и отчетов.

Что другое решение? Возможное использование Splunk для сбора информации от плоских файлов но это не то же. Это не статистика вполне тем же способом.

2
задан 19 January 2012 в 22:35
4 ответа

Я бы не рекомендовал пытаться постоянно поддерживать процесс в рабочем состоянии для этого. Есть более простые методы. На вашем компьютере должен быть запущен cron, который является планировщиком периодических задач. Вы можете запланировать периодический запуск процесса, например, раз в минуту, чтобы проверять содержимое файла и делать то, что нужно сделать. Вы можете добавить что-то вроде этого в crontab:

* * * * * /path/to/yourscript

см. man 1 crontab и man 5 crontab и man 8 cron для получения дополнительной информации о cron.

Еще лучше использовать incron, который позволяет вам указать процесс, который будет запускаться при каждом изменении этого файла. Если у вас установлен incron, вы бы добавили в incrontab что-то вроде этого:

/etc/cluster.cf IN_MODIFY /path/to/your/script

Говоря, что каждый раз, когда /etc/cluster.cf изменяется, запускайте ваш скрипт. см. man 5 incrontab и man 1 incrontab

2
ответ дан 3 December 2019 в 10:59

Предполагая, что вы используете дистрибутив SysV, создайте сценарий инициализации и поместите его в /etc/init.d.

Просмотрите любой из уже имеющихся сценариев, чтобы узнать, как для форматирования этого скрипта. Рассмотрим те, которые используют функцию демона. Затем вы должны использовать chkconfig , чтобы скрипт запускался при загрузке. Этот сценарий инициализации должен записать свой PID в файл блокировки. Вам понадобится второй «вспомогательный процесс», чтобы проверить PID первого, прочитав файл блокировки и определив, запущен он или нет. Включите логику для снятия блокировки и перезапустите первый процесс, если он не найдет работающий PID.

1
ответ дан 3 December 2019 в 10:59

Есть объект, единственная задача которого - (повторно) запускать другие вещи, его имя init , и он настраивается через inittab . Чтобы сделать что-то действительно бессмертным, добавьте его в inittab с опцией respawn .

Простой сценарий проверки (кандидат на inittab ) может выглядеть так:

while :
do
     grep -q machineA_is_active /etc/cluster.cf && activation_script
     # here one needs to ensure the above wan't fire again
     # - say, by carelessly wiping off /etc/cluster.cf
     # or carefully editing out the triggering record
     sleep $delay
done
0
ответ дан 3 December 2019 в 10:59

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

sudo crontab -e

затем поместите эту строку в конец вашего файла crontab (внимание, это будет выполняться каждую минуту каждый день, пока вы снова не измените crontab)

* * * * * /usr/sbin/sample_service

затем CTRL-X, Y, ENTER и перезагрузите компьютер.

это является примером такой службы:

    #!/bin/bash
    #
    # watchdog
    #
    # Run as a cron job to keep an eye on what_to_monitor which should always
    # be running. Restart what_to_monitor and send notification as needed.
    #
    # This needs to be run as root or a user that can start system services.
    #
    # Revisions: 0.1 (20100506), 0.2 (20100507)

    NAME=sample_service
    NAME2=sample_service2
    START=/usr/sbin/$NAME
    START2=/usr/sbin/$NAME2
    NOTIFY=joe@gmail.com
    NOTIFYCC=jim@mail.com
    GREP=/bin/grep
    PS=/bin/ps
    NOP=/bin/true
    DATE=/bin/date
    # MAIL=/bin/mail
    RM=/bin/rm

    $PS -ef|$GREP -v grep|$GREP $NAME >/dev/null 2>&1
    case "$?" in
     0)
     # It is running in this case so we do nothing.
      echo "$NAME is RUNNING OK. Relax."

     $NOP
     ;;
     1)
     echo "$NAME is NOT RUNNING. Starting $NAME and sending notices."
     $START 2>&1 >/dev/null &
     NOTICE=/tmp/watchdog.txt
     echo "$NAME was not running and was started on `$DATE`" > $NOTICE
     # $MAIL -n -s "watchdog notice" -c $NOTIFYCC $NOTIFY < $NOTICE
     $RM -f $NOTICE
     ;;
    esac

     # GT06
    $PS -ef|$GREP -v grep|$GREP $NAME2 >/dev/null 2>&1
    case "$?" in
     0)
     # It is running in this case so we do nothing.
      echo "$NAME2 is RUNNING OK. Relax."

     $NOP
     ;;
     1)
     echo "$NAME2 is NOT RUNNING. Starting $NAME2 and sending notices."
     $START2 2>&1 >/dev/null &
     NOTICE=/tmp/watchdog.txt
     echo "$NAME2 was not running and was started on `$DATE`" > $NOTICE
     # $MAIL -n -s "watchdog notice" -c $NOTIFYCC $NOTIFY < $NOTICE
     $RM -f $NOTICE
     ;;
    esac

    exit
0
ответ дан 3 December 2019 в 10:59

Теги

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