Daemon não está sendo executado na inicialização

2

Em uma VM do Ubuntu (14.04), tenho um servidor de nó simples que desejo executar na inicialização. O script a seguir funciona quando chamado apenas como ./noderoot start , mas não está sendo executado na inicialização. O script é

#!/bin/sh
### BEGIN INIT INFO
# Provides: noderoot
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: bootin and rootin
# Description: Start root server on boot
### END INIT INFO
export PATH=$PATH:/usr/bin
export NODE_PATH=$NODE_PATH:/home/azureuser/npm/bin

case "" in
  start)
    forever --sourceDir=/var/www/root -p /var/www/logs app.js
  ;;
  stop)
    forever stop --sourceDir=/var/www/root app.js
  ;;
  *)
    echo "Usage: /etc/init.d/noderoot {start|stop}"
    exit 1
  ;;
esac

exit 0

Este script reside dentro de /etc/init.d com 755 para as permissões. Eu tentei executar update-rc.d com os seguintes resultados:

root@linux-dev:~# update-rc.d noderoot defaults 80
 Adding system startup for /etc/init.d/noderoot ...
   /etc/rc0.d/K80noderoot -> ../init.d/noderoot
   /etc/rc1.d/K80noderoot -> ../init.d/noderoot
   /etc/rc6.d/K80noderoot -> ../init.d/noderoot
   /etc/rc2.d/S80noderoot -> ../init.d/noderoot
   /etc/rc3.d/S80noderoot -> ../init.d/noderoot
   /etc/rc4.d/S80noderoot -> ../init.d/noderoot
   /etc/rc5.d/S80noderoot -> ../init.d/noderoot
root@linux-dev:~# update-rc.d noderoot enable
update-rc.d: warning:  start runlevel arguments (none) do not match noderoot Default-Start values (2 3 4 5)
update-rc.d: warning:  stop runlevel arguments (none) do not match noderoot Default-Stop values (0 1 6)
 Enabling system startup links for /etc/init.d/noderoot ...
 Removing any system startup links for /etc/init.d/noderoot ...
   /etc/rc0.d/K80noderoot
   /etc/rc1.d/K80noderoot
   /etc/rc2.d/S80noderoot
   /etc/rc3.d/S80noderoot
   /etc/rc4.d/S80noderoot
   /etc/rc5.d/S80noderoot
   /etc/rc6.d/K80noderoot
 Adding system startup for /etc/init.d/noderoot ...
   /etc/rc0.d/K80noderoot -> ../init.d/noderoot
   /etc/rc1.d/K80noderoot -> ../init.d/noderoot
   /etc/rc6.d/K80noderoot -> ../init.d/noderoot
   /etc/rc2.d/S80noderoot -> ../init.d/noderoot
   /etc/rc3.d/S80noderoot -> ../init.d/noderoot
   /etc/rc4.d/S80noderoot -> ../init.d/noderoot
   /etc/rc5.d/S80noderoot -> ../init.d/noderoot

Tanto quanto eu posso dizer, isso foi concluído com sucesso. Eu posso iniciar o serviço executando sudo service noderoot start . No entanto, meu executável não está em execução quando a máquina é reinicializada. Existe uma maneira de solucionar o que está acontecendo? Algum arquivo de log específico que possa esclarecer como corrigir isso?

    
por Nathan 29.10.2014 / 18:48

1 resposta

1

Olhando os logs em /var/log/boot.log (localização fornecida por Letizia), encontrei uma linha muito suspeita:

/etc/rc2.d/S80noderoot: 16: /etc/rc2.d/S80noderoot: forever: not found

O comando não encontrado é apontado como um problema com o caminho. Com certeza, as linhas

export PATH=$PATH:/usr/bin
export NODE_PATH=$NODE_PATH:/home/azureuser/npm/bin

foram invertidos. Alternar essas variáveis para apontar para os diretórios corretos, bem como adicionar um cd ao script antes de executar forever parece ter resolvido todos os problemas que o script de execução estava tendo.

    
por Nathan 29.10.2014 / 22:32