(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
だからそれは次のようになります:
- ルートはわかりません(
npm
underによってインストールされているので意味があります)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が実行されます。