Запустіть tomcat при запуску з адміністративними привілеями


23

Мені потрібен один процес запуску, перш ніж увійти в систему. Як запустити це як послуги? як зробити сервіси в Linux?

У Ubuntu та Fedora? Послуга - індивідуальний tomcat


6
Як запускати сервіси, дуже залежить від дистрибутива Linux. Скажіть, будь ласка, що ви намагаєтеся досягти (і про те, що дистрибутиву, а можливо, і для робочого середовища), тому що зараз я думаю, що ви, мабуть, не думаєте про проблему правильно.
ксенотеррацид

Відповіді:


23

Для запуску служби без або до входу в систему (тобто "при завантаженні") вам потрібно буде створити сценарій запуску і додати його до послідовності завантаження.
До сценарію служби є три частини: запуск, зупинка та перезапуск.
Основна структура сервісного скрипту:

#!/bin/bash
#
RETVAL=0;

start() {
echo “Starting <Service>”
}

stop() {
echo “Stopping <Service>”
}

restart() {
stop
start
}

case “$1″ in
start)
  start
;;
stop)
  stop
;;
restart)
  restart
;;
*)

echo $”Usage: $0 {start|stop|restart}”
exit 1
esac

exit $RETVAL  

Після того, як ви налаштували сценарій на свій смак, просто помістіть його в /etc/init.d/
І додайте його до процесу запуску системної служби (у Fedora, я не користувач Ubuntu,> D):

chkconfig -add <ServiceName>  

Служба буде додана до процесу завантаження системи, і вам не доведеться її вручну запускати знову.

Ура!


2
Зауважте, що при запуску, зупинці та перезапуску зазвичай достатньо для простих сценаріїв init. Ви, ймовірно, також хочете включити дію "status", що легко в Debian та інших дистрибутивах, що включають status_of_proc () у свій пакет init-функцій. Добре керовані пакети включатимуть усі функції, необхідні LSB ( refspecs.freestandards.org/LSB_3.1.0/LSB-Core-generic/… ). Сценарій init, розповсюджений разом з tomcat в Ubuntu, містить усі ці дії, імовірно, можливо, просто використовувати це.
Стівен Д

19

Залежно від системи init, ви створюєте сценарій init по-різному. Fedora дає вам можливість вибирати нову та системну систему, і, звичайно, сумісність SysV.

На початку

  • створити файл визначення служби як /etc/init/custom-tomcat.conf
  • покласти всередину:

    start on stopped rc RUNLEVEL=3
    respawn
    exec /path/to/your/tomcat --and --parameters
    

І ваш Tomcat повинен запуститися при запуску системи.

Системний

  • створити визначення служби в /etc/systemd/system/custom-tomcat.service
  • покласти всередину:

    [Service]
    ExecStart=/path/to/your/tomcat --and --parameters
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

і ввімкніть вашу послугу за допомогою systemctl enable custom-tomcat.service. Він буде запущений при кожному звичайному завантаженні.

Звичайно, є ще кілька варіантів конфігурації для обох систем init, ви можете перевірити їх у їхній документації.


7

Tomcat - досить поширена послуга, я б рекомендував переглянути сценарій init, який надає дистрибутив. Цілком ймовірно, що він працює з вашим персоналізованим двійковим файлом, майже не змінюючи налаштування.


6

Якщо у вас cronдемон, один із заздалегідь визначених кронштейнів хрому - це @reboot, що, природно, працює при запуску системи. Запустіть, crontab -eщоб відредагувати crontabфайл та додати рядок:

@reboot /your/command/here

Це стосується всіх стартапів, або просто перезавантажуються?
WhyNotHugo

Він застосовується ТОЛЬКО до fcron - не vixie-cron або будь-якого іншого cron AFAIK.
Maciej Piechotka

@Maciej Це безумовно працює для vixie-cron; ось що я використовую
Michael Mrozek

@Hugo Усі стартапи
Michael Mrozek

6

Для простого запуску сценарію після запуску комп'ютера, але перед тим, як користувач увійде в систему, ви можете просто відредагувати скрипт /etc/rc.local, який призначений для вирішення саме цієї задачі.


3

Ви можете зробити більш складний сценарій, який дозволяє працювати з дозволом конкретного користувача, як описано нижче:

#!/bin/sh
NAME=myservice
DESC="My Service"
USERGROUP="myservice:myservice"

#Helper functions
start() {
        start-stop-daemon --start --quiet --background --make-pidfile \
                --pidfile /var/run/$NAME.pid --chuid $USERGROUP \
                --exec /usr/local/bin/myservice
}

stop() {
        start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
                --exec myservice --retry 30
}

case "$1" in
  start)
        echo -n "Starting $DESC: "
        start
        echo "$NAME."
        ;;
  stop)
        echo -n "Stopping $DESC: "
        stop
        echo "$NAME."
        ;;
  restart)
        echo -n "Restarting $DESC: "
        #set +e
        stop
        #set -e
        #sleep 1
        start

        echo "$NAME."
        ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart}" >&2
        exit 1
        ;;
esac

exit 0

Сценарій подається в /etc/init.d/myservice, і ви запускаєте службу, виконавши:

/etc/init.d/myservice start

Прочитайте сторінку man на старт-стопі-демон, щоб зрозуміти, як це працює.


1

У Ubuntu або Debian, як ви можете використовувати, щоб додати

update-rc.d your_service defaults

видалити

update-rc.d -f your_service remove

До побачення! \ о

приємно реалізувати статус функцій та перезавантажити силу, щоб бути компілятором LSB


як зробити так, щоб мій демон відобразився в service --status-allсписку?
Necktwi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.