Execute o script com rc.local: o script funciona, mas não na inicialização
Eu tenho um script node.js que precisa iniciar na inicialização execute com o usuário www-data. Durante o desenvolvimento, eu sempre iniciava o script com:
su www-data -c 'node /var/www/php-jobs/manager.js
Vi exatamente o que aconteceu, o manager.js agora funciona muito bem. Pesquisando SO, descobri que tinha que colocar isso no meu/etc/rc.local
. Além disso, aprendi a apontar a saída para um arquivo de log e a anexar o2>&1
para "redirecionar stderr para stdout" e deve ser um daemon para que o último caractere seja um&
.
Finalmente, meu/etc/rc.local
se parece com isso
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
su www-data -c 'node /var/www/php-jobs/manager.js >> /var/log/php-jobs.log 2>&1 &'
exit 0
Se eu mesmo executar isso sudo /etc/rc.local
): sim, funciona! No entanto, se eu executar uma reinicialização nonode
processo está sendo executado, o/var/log/php-jobs.log
não existe e, portanto, o manager.js não funciona. O que está acontecendo