
(AWS 上の Ubuntu EC2 を使用)
スクリプト があります/home/ubuntu/start.sh
。これを として実行するとubuntu
、正常に動作します。起動時に実行する必要があるため、 に配置します/etc/rc.local
。再起動時にルートとして実行されるため、失敗します。次の方法で失敗を再現できます。
# 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 を実行します。