Форум русскоязычного сообщества Ubuntu


Автор Тема: Создания скрипта автозапуска ubuntu 8.10  (Прочитано 3986 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн MrakoBes

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Здравствуйте, уважаемые. Собственно, вопрос вот в чем.
Скачал себе tomcat6.0.20 бинарный.  Все это дело скопировал в /usr/local/apache-tomcat-6.0.20

Проверил- работает. Томкат запускается(bin/startup.sh), localhost:8080 отвечает. Скрипт bin/shutdown.sh завершает его работу.

Следующий шаг- нужно прописать его в автозагрузку. Иду в папку /etc/init.d и создаю скрипт tomcat6:
export JAVA_HOME=/usr/lib/jvm/java-6-sun/bin/java
export JRE_HOME=/usr/lib/jvm/java-6-sun/jre
export CLASSPATH=/usr/share/java

TOMCAT_NAME=Tomcat-6.0.20
BASEDIR=/usr/local/apache-tomcat-6.0.20
PID=$CATALINA_PID

tomcat_start () {
echo "Sarting $TOMCAT_NAME"
"$BASEDIR"/bin/startup.sh
}

tomcat_stop () {
echo "Stopping $TOMCAT_NAME"
        "$BASEDIR"/bin/shutdown.sh
}

case  "$1" in
   start|stop)
tomcat_${1}
;;

   restart)
tomcat_stop
tomcat_start
;;

    status)
echo "This function isn't working yet $PID"
    #    if [ -n "$PID" ]; then
    #        echo "$TOMCAT_NAME is running (pid $PID)."
    #        exit 0
    #    else
    #        echo "$TOMCAT_NAME is not running."
    #        exit 1
    #    fi
        ;;
esac

Затем создаю символьную ссылку в папку /etc/rc5.d командой:
sudo ln -s /etc/init.d/tomcat6 /etc/rc5.d/S9tomcat6
Все красиво  :) Все работает. Но! Я в скрипте закомментировал модуль status потомучто мне так и не удалось его реализовать. Переменной PID ничего не присваивается и соответственно она постоянно в значении FALSE

В файле bin/catalina.sh, который как раз запускается скриптом startup.sh есть вот такие строчки:
# -----------------------------------------------------------------------------
# Start/Stop Script for the CATALINA Server
#
# Environment Variable Prequisites
#
#   CATALINA_HOME   May point at your Catalina "build" directory.
#
#   CATALINA_BASE   (Optional) Base directory for resolving dynamic portions
#                   of a Catalina installation.  If not present, resolves to
#                   the same directory that CATALINA_HOME points to.
...
#   CATALINA_PID    (Optional) Path of the file which should contains the pid
#                   of catalina startup java process, when start (fork) is used
...
# $Id: catalina.sh 750920 2009-03-06 14:43:19Z markt $
# -----------------------------------------------------------------------------

Отсюда я и сделал вывод, что после запуска catalina.sh переменной CATALINA_PID (глобальной для всей системы) присваивается PID tomcat сервера.

Подскажите пожалуйста, уважаемые знатоки, где я не прав?  :-\
« Последнее редактирование: 16 Январь 2010, 15:44:34 от MrakoBes »

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Создания скрипта автозапуска ubuntu 8.10
« Ответ #1 : 16 Январь 2010, 16:00:02 »
#   CATALINA_PID    (Optional) Path of the file which should contains the pid
#                   of catalina startup java process, when start (fork) is used
В этой переменной должно содержаться имя файла, в который будет записан PID при старте системы. А переменные в основном локальные, если не указано иначе.

Оффлайн MrakoBes

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Создания скрипта автозапуска ubuntu 8.10
« Ответ #2 : 16 Январь 2010, 16:10:33 »
Хмм... А где искать этот файл?

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Создания скрипта автозапуска ubuntu 8.10
« Ответ #3 : 16 Январь 2010, 16:19:39 »
Его надо придумать а не искать. Обычно такие файлы хранят в /var/run/четотам.pid

Оффлайн MrakoBes

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Создания скрипта автозапуска ubuntu 8.10
« Ответ #4 : 16 Январь 2010, 16:53:56 »
Нашел пример подобного скрипта: https://www.switch.ch/aai/docs/shibboleth/SWITCH/1.3/idp/tomcat

Все точно так, как говорит Mam(O)n

Я создал файл /var/run/tomcat6.pid (хотя мне кажется этого можно было не делать, он бы создался сам), задал ему права 0744 иначе команда cat говорила permission denied
Вот как выглядит теперь мой скрипт:
(Нажмите, чтобы показать/скрыть)

При перезапуске сервера в pid файл вносится номер  :) Но мне вылетает вот такая ошибка (первая строчка):
/var/run/tomcat6.pid: 1: 20045: not found
Stopping Tomcat-6.0.20
Using CATALINA_BASE:   /usr/local/apache-tomcat-6.0.20
Using CATALINA_HOME:   /usr/local/apache-tomcat-6.0.20
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-6.0.20/temp
Using JRE_HOME:       /usr/lib/jvm/java-6-sun/jre
Sarting Tomcat-6.0.20
Using CATALINA_BASE:   /usr/local/apache-tomcat-6.0.20
Using CATALINA_HOME:   /usr/local/apache-tomcat-6.0.20
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-6.0.20/temp
Using JRE_HOME:       /usr/lib/jvm/java-6-sun/jre

И переменная PID снова оказывается пустой  :-\

Оффлайн Mam(O)n

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Создания скрипта автозапуска ubuntu 8.10
« Ответ #5 : 16 Январь 2010, 17:36:50 »
Учим *sh скриптование.. Чтобы результат работы команды подставился в присваивание, команду нужно заключать в обратные апострофы или в конструкцию $(команда). Например: PID=$(cat $PIDFILE) или PID=`cat $PIDFILE`. А в bash можно вообще так PID=$(<$PIDFILE)

Оффлайн MrakoBes

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Создания скрипта автозапуска ubuntu 8.10
« Ответ #6 : 16 Январь 2010, 20:17:05 »
 8) Олично заработало как надо!
manowar@manowar-laptop:/usr/games$ sudo /etc/init.d/tomcat6 status
Tomcat-6.0.20 is running (pid 27019).

Спасибо за подсказку, коллега!

Вот так теперь выглядит мой скрипт /etc/init.d/tomcat6 Вдруг кому пригодится:
(Нажмите, чтобы показать/скрыть)

На этой оптимистичной ноте можносчитать тему закрытой!


Пользователь решил продолжить мысль 16 Январь 2010, 22:39:49:
В процессе пользования этим чудом, обнаружился косяк. Так как команда status определяет запущен ли сервер по записи в pid файле, то при остановке pid файл нужно удалять или обнулять, а при старте, он будет создаваться автоматически, как я и говорил выше. Иначе, если сервер был запущен хотя бы один раз (а в моем случае pid файл создается по умолчанию при загрузке системы), то что потом с ним не делай, status не покажет ничего иного, кроме как Tomcat is running.

Таким образом в функцию остановки сервера в моем скрипте, я добавил следующую строку:
rm $PIDFILE
А вот скрипт целиком:
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 16 Январь 2010, 22:39:49 от MrakoBes »

 

Страница сгенерирована за 0.07 секунд. Запросов: 22.