i2ks,
if [ $? -eq 0 ]; then whatewer; fiне работает? Или даже
if program; then whatewer; fi?
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580
Настоятельно просим вас при общении соблюдать Правила форума и законы РФ. Наша тематика вне политики, поэтому воздержитесь от обсуждения ситуации на Украине и связанных с ней событий, независимо от того, какую сторону вы поддерживаете.
Также напоминаем, что наш форум находится в доменной зоне .ru, физически расположен на российских серверах и мы соблюдаем действующее законодательство России. Любые сообщения о политике будут удаляться.
Linux Forum → Работа в командной строке → Помогите написать bash скрипт
Чтобы отправить ответ, вы должны войти или зарегистрироваться
i2ks,
if [ $? -eq 0 ]; then whatewer; fiне работает? Или даже
if program; then whatewer; fi?
да все ок)
в общем скрипт мой готов,
что он делает?
проверяет слово hello на страничке, если такого слова нет то он убивает процесс glassfish а и запускает его заново. скрипт будет в кроне и будет запускаться раз в 5 мин. Так что подскажите если вдруг я что то не учел
ADDRESS="my_url/index.jsp"
function stop_domain {
#echo "stop_domain"
PID=`ps -ef|grep java|grep glassfish|awk '{print $2}'`
#echo "Glassfish PID = '$PID'. Trying to kill it..."
if [[ "$PID" != "" ]]
then
#echo "No need to kill."
kill -9 $PID
fi
PID2=`ps -ef|grep java|grep glassfish|awk '{print $2}'`
#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
и вопрос . почему в функции если разкоментить echo то он будет попадать сюда PID=.. какого хрена
PID=`ps -ef|grep java|grep glassfish|awk '{print $2}'`
Эту конструкцию разве нельзя заменить на
PID=$(/sbin/pidof /path/to/glassfish) ?
и вопрос . почему в функции если разкоментить echo то он будет попадать сюда PID=.. какого хрена
Пропущен CR/LF? Проверяется cat -A your_mega_script.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
З.Ы. Надо поработать с синтаксисом. Не осень красиво смотрится. =)
XliN, имхо нормально все. Работает - не трогай 
а подскажите как теперь сделать запись в лог файл. в случае если веб сервер был перезапущен. Тоесть скрипт будет в кроне (каждые 5 мин запускаться). если страничка доступна то мы ничего не делаем и ничего не пишем. а вот если она не доступна мы убиваем процесс глассфиша и запускаем его заного и пишем все действия в лог с датой и так далее
вот код
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Linux Forum → Работа в командной строке → Помогите написать bash скрипт
Форум работает на PunBB, при поддержке Informer Technologies, Inc