
(Verwendung eines Ubuntu EC2 auf AWS)
Ich habe ein Skript, /home/ubuntu/start.sh
. Wenn ich es als ausführe ubuntu
, läuft es einwandfrei. Ich muss es beim Start ausführen, also füge ich es in ein /etc/rc.local
. Beim Neustart wird es dann als Root ausgeführt, und das schlägt fehl. Ich kann den Fehler folgendermaßen reproduzieren:
# 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
Es sieht also so aus:
- root weiß nichts davon (von under
npm
installiert, also macht das Sinn)ubuntu
/home/ubuntu/.nvm/versions/node/v4.2.6/bin/npm
su -c ./start.sh - ubuntu
führt das Skript nicht genau als Ubuntu aus
Wie kann ich dieses Skript genau so ausführen, als wäre ich als angemeldet ubuntu
?
Antwort1
PATH=$PATH:/node/v4.2.6/bin/ ./start.sh
Antwort2
Bearbeiten Sie /etc/rc.local mit Ihrem bevorzugten Texteditor.
sudo nano /etc/rc.local
Und fügen Sie die Zeile hinzu su ubuntu -c /etc/rc.local/ubuntu/start.sh &
(wenn das tatsächlich der Pfad zu Ihrer Datei ist)
Dadurch wird /etc/rc.local/ubuntu/start.sh beim Start als Benutzer Ubuntu und als Hintergrundprozess ausgeführt.