(在 AWS 上使用 Ubuntu EC2)
我有一个脚本,/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 不知道(由under
npm
安装,这样才有意义)ubuntu
/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 &
(如果这确实是您的文件的路径)
这将在启动时以用户 ubuntu 身份运行 /etc/rc.local/ubuntu/start.sh 并作为后台进程。