Microsoft вежливо создала всю статью KB, названную, "Как Использовать SQL Server для Анализа блогов", которые должны ответить вопрос заголовка.
Да имеет смысл хранить журналы в SQL-сервере, если ни по какой другой причине, чем смягчение повреждения файла выходит и также создание резервных копий тех файлов более легкое использование планировщик SQL. Профессионалы использования базы данных SQL Server фактически самоочевидны. Плоские текстовые файлы не предлагают способности к анализу данных. Реляционные базы данных, которые могут быть запрошены через SQL, сделаны для хранения информации и извлечения. Та информация может легко быть отобрана для тенденций, статистики, корреляций и и т.д. Это - весь вопрос разработки запросов и отчетов.
Что другое решение? Возможное использование Splunk для сбора информации от плоских файлов но это не то же. Это не статистика вполне тем же способом.
Я бы не рекомендовал пытаться постоянно поддерживать процесс в рабочем состоянии для этого. Есть более простые методы. На вашем компьютере должен быть запущен 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
Предполагая, что вы используете дистрибутив SysV, создайте сценарий инициализации и поместите его в /etc/init.d.
Просмотрите любой из уже имеющихся сценариев, чтобы узнать, как для форматирования этого скрипта. Рассмотрим те, которые используют функцию демона. Затем вы должны использовать chkconfig
, чтобы скрипт запускался при загрузке. Этот сценарий инициализации должен записать свой PID в файл блокировки. Вам понадобится второй «вспомогательный процесс», чтобы проверить PID первого, прочитав файл блокировки и определив, запущен он или нет. Включите логику для снятия блокировки и перезапустите первый процесс, если он не найдет работающий PID.
Есть объект, единственная задача которого - (повторно) запускать другие вещи, его имя 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
очень простое (не самое элегантное) решение для сторожевого таймера - создать задание 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