Como posso criar um script em /etc/init.d?

1

Estou tentando fazer do meu aplicativo nodejs um serviço linux. Eu encontrei o link abaixo no stackexchange e criei um script sob a pasta /etc/init.d.

Como posso fazer um script em /etc/init.d iniciar na inicialização?

#!/bin/bash
# chkconfig: 2345 20 80
# description: Description comes here....

# Source function library.
. /etc/init.d/functions

start() {
    # code to start app comes here 
    # example: daemon program_name &
    /usr/bin/node /home/myapp/index.js
}

stop() {
    # code to stop app comes here 
    # example: killproc program_name
}

case "$1" in 
    start)
       start
       ;;
    stop)
       stop
       ;;
    restart)
       stop
       start
       ;;
    status)
       # code to check status of app comes here 
       # example: status program_name
       ;;
    *)
       echo "Usage: $0 {start|stop|status|restart}"
esac

Estou recebendo este erro quando tento executar o script.

$ service myapp start
/etc/init.d/myapp: line 17: syntax error near unexpected token '}'
/etc/init.d/myapp: line 17: '}'

Eu posso executar com êxito o aplicativo nodejs manualmente. Algo está errado com o meu serviço. Eu não posso usar systemctl então por favor, não recomendo.

Eu quero fazer deste aplicativo nodejs um serviço linux que pode ser controlado como httpd, ftpd.

    
por cmltkt 11.08.2017 / 01:09

1 resposta

2

Sua função stop () não tem conteúdo. Adicione algum conteúdo, mesmo que esteja apenas executando /bin/true (ou talvez killproc /usr/bin/node ?) E ele ficará satisfeito com esse erro.

Exemplo:

$ a() {
> echo foo
> }
$ b() {
> # comment
> }
-bash: syntax error near unexpected token '}'
$ b() {
> /bin/true
> }
$ 
    
por 11.08.2017 / 01:19