[console][xxblx@localhost ~]$ curl -Is http://xxblx-duke.com | head -1
HTTP/1.1 200 OK
[xxblx@localhost ~]$ curl -Is http://xxblx-duke.com/123.html | head -1
HTTP/1.1 404 Not Found
[xxblx@localhost ~]$ wget http://xxblx-duke.com/123.html
--2014-04-08 14:02:14-- http://xxblx-duke.com/123.html
Распознаётся xxblx-duke.com (xxblx-duke.com)... 31.28.24.133
Подключение к xxblx-duke.com (xxblx-duke.com)|31.28.24.133|:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 404 Not Found
2014-04-08 14:02:14 ОШИБКА 404: Not Found.[/console]
Когда странички нет, запрос к ней вернет 404-ую ошибку. Если веб-сервер "не против" :)
[console][xxblx@localhost ~]$ curl -Is http://linuxforum.ru | head -1
HTTP/1.1 200 OK
[xxblx@localhost ~]$ curl -Is http://linuxforum.ru/123.html | head -1
HTTP/1.1 200 OK
[xxblx@localhost ~]$ wget http://linuxforum.ru/123.html
--2014-04-08 14:03:42-- http://linuxforum.ru/123.html
Распознаётся linuxforum.ru (linuxforum.ru)... 188.64.170.124
Подключение к linuxforum.ru (linuxforum.ru)|188.64.170.124|:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 200 OK
Длина: нет данных [text/html]
Сохранение в: «123.html»
[ <=> ] 57 794 --.-K/s за 0,06s
2014-04-08 14:03:43 (996 KB/s) - «123.html» сохранён [57794][/console]
Здесь на LF как видно, это не прокатывает. 123.html, по сути, сохраняется как переименованный index.html, несмотря на то что 123.html вроде как и нету.
а вот вопрос если веб сервер упадет то по сути 404 мне выдаваться не будет. у меня проблема с сервером glassfish , он как бы не падает ибо в процессах он висит, но веб веб сервер не доступен. (из за высоких нагрузок). думал определить "упал он или нет" пингом, но вариант не катит так как он частично работает и пингуется . а конкретно нужную мне страничку пингануть нельзя. в плане командой ping
а вот вопрос если веб сервер упадет то по сути 404 мне выдаваться не будет. у меня проблема с сервером glassfish , он как бы не падает ибо в процессах он висит, но веб веб сервер не доступен. (из за высоких нагрузок). думал определить "упал он или нет" пингом, но вариант не катит так как он частично работает и пингуется . а конкретно нужную мне страничку пингануть нельзя. в плане командой ping
я же написал как это можно сделать, через curl дергать страницу.
[quote="bitmaster"]а вот вопрос если веб сервер упадет то по сути 404 мне выдаваться не будет. у меня проблема с сервером glassfish , он как бы не падает ибо в процессах он висит, но веб веб сервер не доступен. (из за высоких нагрузок). думал определить "упал он или нет" пингом, но вариант не катит так как он частично работает и пингуется . а конкретно нужную мне страничку пингануть нельзя. в плане командой ping
я же написал как это можно сделать, через curl дергать страницу.[/quote]
сейчас попробую. отпишу что получилось
в общем скрипт мой готов,
что он делает?
проверяет слово hello на страничке, если такого слова нет то он убивает процесс glassfish а и запускает его заново. скрипт будет в кроне и будет запускаться раз в 5 мин. Так что подскажите если вдруг я что то не учел
[console]#!/bin/bash
#echo "Glassfish PID after 'kill' command = '$PID2'"
return $PID2
}
#stop_domain
curl --silent $ADDRESS|grep Hello
if [ "$?" -eq 0 ]
then
echo "Application server is alive."
else
result=$(stop_domain)
if [[ "$result" == "" ]]
then
#echo "Executing start-domain command..."
/home/glassfishUser/glassfish3/glassfish/bin/asadmin start-domain
#echo "Application server was started successfully!"
fi
[/console]
Пользуясь случаем прошу потыкать носом и подсказать что сделал не так. Вот сегодня накатал скрипт
[console]#!/bin/sh
IP_WEB=192.168.1.108 # IP адрес шары
PID_TOM="/var/run/tomcat6.pid"
WRITELOCK="/var/lib/tomcat6/solr_home/data/index/write.lock"
DIR_IN=/var/Motiw/scripts
DIR_OUT="${IP_WEB}:/var/Motiw/scripts"
filecount=`find $DIR_IN -type f | wc -l`
if [ $filecount -eq 0 ]; then
echo "Error. Not mount script NFS"
#Монтируем /var/Motiw/scripts для tomcat
/bin/mount $DIR_OUT $DIR_IN
if [ $? -ne 0 ]; then
echo ERROR
else
sleep 3
#Проверяем PID tomcat. Если запущен, рестаруем
# и удаляем возможно подвисший write.lock
if [ -e $PID_TOM ]; then
if [ -e $WRITELOCK ]; then rm $WRITELOCK && /etc/init.d/tomcat6 restart
else
echo "${WRITELOCK} отсутствует" && /etc/init.d/tomcat6 restart
fi
else
if [ -e $WRITELOCK ]; then
rm $WRITELOCK && /etc/init.d/tomcat6 start
else
echo "${WRITELOCK} отсутствует" && /etc/init.d/tomcat6 start
fi
fi
fi
echo "mount OK" >> /var/log/mountfix.log
else
#Если все смонтировано, ничего не делаем
echo "mount OK" >> /var/log/mountfix.log && exit
fi
[/console]
Суть его в следующем. Каждые 15 минут в кроне проверяется примонтирован ли диск. Если да, то супер, если нет то монтирует его. Проверяет на наличие файла блокировки. Если он есть - удаляет. Затем перезапускает сервис tomcat. Через одно место реализовал? =)
З.Ы. Надо поработать с синтаксисом. Не осень красиво смотрится. =)
а подскажите как теперь сделать запись в лог файл. в случае если веб сервер был перезапущен. Тоесть скрипт будет в кроне (каждые 5 мин запускаться). если страничка доступна то мы ничего не делаем и ничего не пишем. а вот если она не доступна мы убиваем процесс глассфиша и запускаем его заного и пишем все действия в лог с датой и так далее
вот код
[console]#!/bin/bash
ADDRESS="my_url/index.jsp"
function stop_domain {
PID=`ps -ef|grep java|grep glassfish|awk '{print $2}'`
if [[ "$PID" != "" ]]
then
kill -9 $PID
fi
PID2=`ps -ef|grep java|grep glassfish|awk '{print $2}'`
return $PID2
}
curl --silent $ADDRESS|grep Hello
if [ "$?" -eq 0 ]
then
echo "Application server is alive."
else
result=$(stop_domain)
if [[ "$result" == "" ]]
then
/home/glassfishUser/glassfish3/glassfish/bin/asadmin start-domain
fi[/console]