
(Использование Ubuntu EC2 на AWS)
У меня есть скрипт, /home/ubuntu/start.sh
. Если я запускаю его как ubuntu
, он работает хорошо. Мне нужно, чтобы он запускался при запуске, поэтому я помещаю его в /etc/rc.local
. Затем он будет запущен как root при перезагрузке, и это не удается. Я могу воспроизвести сбой следующим образом:
# 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
Итак, это выглядит так:
- root не знает об этом
npm
(установлено пользователемubuntu
under,/home/ubuntu/.nvm/versions/node/v4.2.6/bin/npm
так что это имеет смысл) su -c ./start.sh - ubuntu
не запускает скрипт как Ubuntu
Как мне запустить этот скрипт точно так же, как если бы я вошел в систему как ubuntu
?
решение1
PATH=$PATH:/node/v4.2.6/bin/ ./start.sh
решение2
Отредактируйте /etc/rc.local с помощью вашего любимого текстового редактора.
sudo nano /etc/rc.local
И добавьте строку su ubuntu -c /etc/rc.local/ubuntu/start.sh &
(если это действительно путь к вашему файлу)
Это запускает /etc/rc.local/ubuntu/start.sh от имени пользователя ubuntu при запуске и в качестве фонового процесса.