Aplicação como Serviço no Centos 7

1

Muito novo no Centos 7 e a maioria das minhas experiências anteriores foram com o Ubuntu. Acabei de configurar um aplicativo no Centos 7 e vi em seu site de produtos que para executar o aplicativo como um Serviço Linux (Iniciar na inicialização do sistema), esse é o script que é necessário usar.

#! /bin/sh
export JAVA_HOME="/usr/lib/jvm/jdk1.7.0_07"

startcmd='<PRODUCT_HOME>/bin/listener_mm.sh start > /dev/null &'
restartcmd='<PRODUCT_HOME>/bin/listener_mm.sh restart > /dev/null &'
stopcmd='<PRODUCT_HOME>/bin/listener_mm.sh stop > /dev/null &'

case "$1" in
start)
   echo "Starting the Listener Server ..."
   su -c "${startcmd}" user1
;;
restart)
   echo "Re-starting the Listener Server ..."
   su -c "${restartcmd}" user1
;;
stop)
   echo "Stopping the Listener Server ..."
   su -c "${stopcmd}" user1
;;
*)
   echo "Usage: $0 {start|stop|restart}"
exit 1
esac

Haha hope esac não é específico para outra distro:?

Então, criei o script, substituí os valores corretos conforme meu ambiente e adicionei um link simbólico ao meu script. Eu tenho algumas perguntas 1) O script acima é talvez para o Ubuntu ou outro Linux Distro. Então, eu preciso fazer alguma alteração no script? 2) Como faço isso funcionar como um serviço para todos os usuários? Eu gostaria que isso comece na inicialização do sistema. Debian / Ubuntu tem update-rc.d, e eu acho que preciso usar o chkconfig para isso. Posso ter alguma indicação sobre isso? Acontece que é uma máquina com poucas outras coisas, então estou um pouco diferente de experimentar e se alguém com experiência nisso puder me dar algumas dicas, será ótimo.

Estou fazendo algumas leituras no systemd, mas qualquer ajuda será muito apreciada.

Obrigado uma tonelada.

Felicidades, M.M

    
por R.W 26.08.2016 / 18:58

1 resposta

3

Para executar algo na inicialização do CentOS 7, Fedora e versões recentes do Ubuntu, você precisa criar um systemd unit . O que você tem em sua pergunta é um script de inicialização legado e não é mais necessário.

Um arquivo de unidade simples pode ter esta aparência:

[Service]
Type=simple
ExecStart=/bin/myservice

[Install]
WantedBy=multi-user.target

Supondo que /bin/myservice seja executado em primeiro plano, o acima é realmente tudo o que você precisa. Você colocaria isso em /etc/systemd/system/myservice.service se estivesse configurando tudo em seu próprio sistema ou /usr/lib/systemd/system/myservice.service se estivesse criando um pacote para distribuição e, em seguida:

  1. Para iniciar o serviço imediatamente: systemctl start myservice
  2. Para marcar o serviço para início automático da próxima vez que você inicializar: systemctl enable myservice

Ferramentas como chkconfig e update-rc.d são ferramentas legadas que não são necessárias em ambientes que executam o systemd.

    
por 26.08.2016 / 20:30