Preciso executar um processo antes de efetuar o login no sistema. Como executá-lo como serviços? como faço para fazer serviços no Linux?
No Ubuntu e Fedora? O serviço é personalizado tomcat
Preciso executar um processo antes de efetuar o login no sistema. Como executá-lo como serviços? como faço para fazer serviços no Linux?
No Ubuntu e Fedora? O serviço é personalizado tomcat
Respostas:
Para executar um serviço sem ou antes de efetuar login no sistema (por exemplo, "na inicialização"), você precisará criar um script de inicialização e adicioná-lo à sequência de inicialização.
Há três partes em um script de serviço: iniciar, parar e reiniciar.
A estrutura básica de um script de serviço é:
#!/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
Depois de ajustar o script ao seu gosto, basta colocá-lo em /etc/init.d/
E adicioná-lo ao processo de inicialização do serviço do sistema (no Fedora, eu não sou um usuário do Ubuntu,> D):
chkconfig -add <ServiceName>
O serviço será adicionado ao processo de inicialização do sistema e você não precisará iniciá-lo manualmente novamente.
Felicidades!
Dependendo do sistema init, você cria o script init de maneira diferente. O Fedora oferece a você o sistema inicial e o sistema para escolher e, é claro, compatibilidade com SysV.
/etc/init/custom-tomcat.conf
ponha dentro:
start on stopped rc RUNLEVEL=3
respawn
exec /path/to/your/tomcat --and --parameters
E seu Tomcat deve iniciar na inicialização do sistema.
/etc/systemd/system/custom-tomcat.service
ponha dentro:
[Service]
ExecStart=/path/to/your/tomcat --and --parameters
Restart=always
[Install]
WantedBy=multi-user.target
e habilite seu serviço usando systemctl enable custom-tomcat.service
. Será iniciado a cada inicialização normal.
É claro que existem mais algumas opções de configuração para os dois sistemas init, você pode ver as na documentação deles.
O Tomcat é um serviço bastante comum, eu recomendo que você já veja o script init fornecido pela distribuição. Provavelmente, ele funciona com seu binário personalizado, com pouco ou nenhum ajuste.
Se você possui um cron
daemon, um dos ganchos de tempo cron predefinidos é o @reboot
que é executado naturalmente quando o sistema é iniciado. Execute crontab -e
para editar seu crontab
arquivo e adicione uma linha:
@reboot /your/command/here
Você pode criar um script mais sofisticado, que permita executar sob as permissões de um usuário específico, da seguinte maneira:
#!/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
O script entra em /etc/init.d/myservice e você inicia o serviço executando:
/etc/init.d/myservice start
Leia a página do manual no start-stop-daemon para entender como ele funciona.
No Ubuntu ou Debian, como você pode usar, para adicionar
update-rc.d your_service defaults
remover
update-rc.d -f your_service remove
Tchau! \ o
é bom implementar o status das funções e o force-reload para serem compiladores de LSB
service --status-all
lista?