Мені потрібен один процес запуску, перш ніж увійти в систему. Як запустити це як послуги? як зробити сервіси в Linux?
У Ubuntu та Fedora? Послуга - індивідуальний tomcat
Мені потрібен один процес запуску, перш ніж увійти в систему. Як запустити це як послуги? як зробити сервіси в Linux?
У Ubuntu та Fedora? Послуга - індивідуальний tomcat
Відповіді:
Для запуску служби без або до входу в систему (тобто "при завантаженні") вам потрібно буде створити сценарій запуску і додати його до послідовності завантаження.
До сценарію служби є три частини: запуск, зупинка та перезапуск.
Основна структура сервісного скрипту:
#!/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>
Служба буде додана до процесу завантаження системи, і вам не доведеться її вручну запускати знову.
Ура!
Залежно від системи 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, ви можете перевірити їх у їхній документації.
Tomcat - досить поширена послуга, я б рекомендував переглянути сценарій init, який надає дистрибутив. Цілком ймовірно, що він працює з вашим персоналізованим двійковим файлом, майже не змінюючи налаштування.
Якщо у вас cron
демон, один із заздалегідь визначених кронштейнів хрому - це @reboot
, що, природно, працює при запуску системи. Запустіть, crontab -e
щоб відредагувати crontab
файл та додати рядок:
@reboot /your/command/here
Ви можете зробити більш складний сценарій, який дозволяє працювати з дозволом конкретного користувача, як описано нижче:
#!/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 на старт-стопі-демон, щоб зрозуміти, як це працює.
У Ubuntu або Debian, як ви можете використовувати, щоб додати
update-rc.d your_service defaults
видалити
update-rc.d -f your_service remove
До побачення! \ о
приємно реалізувати статус функцій та перезавантажити силу, щоб бути компілятором LSB
service --status-all
списку?