
(Usando um Ubuntu EC2 na AWS)
Eu tenho um roteiro, /home/ubuntu/start.sh
. Se eu executá-lo como ubuntu
, ele funcionará bem. Preciso que ele seja executado no lançamento, então coloquei-o no /etc/rc.local
. Isso será executado como root na reinicialização e falhará. Consigo reproduzir a falha:
# I'm ubuntu
$ whoami
ubuntu
$ sudo su
# i'm now root
$ whoami
root
$ ./start.sh
./start.sh: line 9: npm: command not found
$ su -c ./start.sh - ubuntu
./start.sh: line 9: npm: command not found
Então parece:
- root não conhece
npm
(instalado porubuntu
under/home/ubuntu/.nvm/versions/node/v4.2.6/bin/npm
então faz sentido) su -c ./start.sh - ubuntu
não executa exatamente o script como o Ubuntu
Como posso executar este script exatamente como se estivesse logado como ubuntu
?
Responder1
PATH=$PATH:/node/v4.2.6/bin/ ./start.sh
Responder2
Edite /etc/rc.local com seu editor de texto favorito.
sudo nano /etc/rc.local
E adicione a linha su ubuntu -c /etc/rc.local/ubuntu/start.sh &
(se esse for realmente o caminho para o seu arquivo)
Isso executa /etc/rc.local/ubuntu/start.sh como o usuário ubuntu na inicialização e como um processo em segundo plano.