Мне нужно запустить один процесс, прежде чем войти в систему. Как запустить его как сервисы? как сделать сервисы в Linux?
В Ubuntu и Fedora? Сервис настроен кот
Мне нужно запустить один процесс, прежде чем войти в систему. Как запустить его как сервисы? как сделать сервисы в Linux?
В Ubuntu и Fedora? Сервис настроен кот
Ответы:
Чтобы запустить службу без входа в систему или перед ее входом в систему (т. Е. «При загрузке»), вам необходимо создать сценарий запуска и добавить его в последовательность загрузки.
Сценарий службы состоит из трех частей: запуск, остановка и перезапуск.
Базовая структура сервисного скрипта:
#!/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>
Служба будет добавлена в процесс загрузки системы, и вам не нужно будет снова запускать ее вручную.
Ура!
В зависимости от системы инициализации сценарий инициализации создается по-разному. Fedora дает вам возможность выбрать и использовать systemd, и, конечно, совместимость с 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
. Он будет запускаться при каждой нормальной загрузке.
Конечно, есть еще несколько параметров конфигурации для обеих систем инициализации, вы можете проверить их в их документации.
Tomcat - довольно распространенный сервис, я бы порекомендовал посмотреть скрипт инициализации, предоставленный дистрибутивом. Скорее всего, он работает с вашим настроенным двоичным файлом, практически без изменений.
Если у вас есть cron
демон, один из предопределенных временных ловушек 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
Прочтите страницу руководства на start-stop-daemon, чтобы понять, как это работает.
В Ubuntu или Debian, как вы можете использовать, чтобы добавить
update-rc.d your_service defaults
удалять
update-rc.d -f your_service remove
До свидания! \ о
хорошо для реализации функций состояния и принудительной перезагрузки, чтобы быть LSB-совместимым
service --status-all
списке?