31

i2ks,

if [ $? -eq 0 ]; then whatewer; fi

не работает? Или даже

if program; then whatewer; fi

?

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580

32

да все ок)

It is good day to die ...
MS Windows 10
Заметки о главном...

33

в общем скрипт мой готов,
что он делает?
проверяет слово hello на страничке, если такого слова нет то он убивает процесс glassfish а и запускает его заново. скрипт будет в кроне и будет запускаться раз в 5 мин. Так что подскажите если вдруг я что то не учел

 Консоль:
#!/bin/bash

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

34

и вопрос . почему в функции если разкоментить echo то он будет попадать сюда  PID=.. какого хрена

35

bitmaster пишет:
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.

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580

36

Пользуясь случаем прошу потыкать носом и подсказать что сделал не так. Вот сегодня накатал скрипт

 Консоль:
#!/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


Суть его в следующем. Каждые 15 минут в кроне проверяется примонтирован ли диск. Если да, то супер, если нет то монтирует его. Проверяет на наличие файла блокировки. Если он есть - удаляет. Затем перезапускает сервис tomcat. Через одно место реализовал? =)

З.Ы. Надо поработать с синтаксисом. Не осень красиво смотрится. =)

MX 23.6 Libretto x86_64
Чем больше я работаю админом, тем больше понимаю, насколько волшебна фраза - "Нет технической возможности!"

37

XliN, имхо нормально все. Работает - не трогай ab

Истинный hotplug - это обычная электрическая розетка: воткнул - работает, и никаких драйверов.
Arch Linux/Xfce/Xiaomi Mi Notebook Pro 15.6 | Slackware64-current/Xfce/Lenovo G580

38

а подскажите как теперь сделать запись в лог файл. в случае если веб сервер был перезапущен. Тоесть скрипт будет в кроне (каждые 5  мин запускаться). если страничка доступна то мы ничего не делаем и ничего не пишем. а вот если она не доступна мы убиваем процесс глассфиша и запускаем его заного и пишем все действия в лог с датой и так далее
вот код

 Консоль:
#!/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

39

Так и пиши в лог

echo "То, что хочешь записать" >> /полный_путь/log.file