Ich habe ein wirklich einfaches Bash-Skript mit 5 Befehlen, die unter dem Root-Benutzer ausgeführt werden. Wenn ich die Befehle einzeln manuell ausführe, funktioniert alles – kein Problem. Aber wie ich es als my-deploy.sh-Datei über den Befehl
ausführebash /root/custom-scripts/deploy/my-deploy.sh 2>> /var/log/www-deploy/tatrytec.eu.log
es scheint wie ein endloser Prozess. Hier ist das Skript:
#!/bin/bash
# Run this script as bash command like: bash create-apache-site.sh
cd /var/www/html/tatrytec.eu
git pull
# Change user bacause of composer install warrning
su vlado
composer install --no-scripts
npm install --production
Es beginnt zu laufen und ich kann das Ergebnis von git pull im Terminal sehen. Aber dann stirbt es ohne Fehler und es läuft immer noch. Ich kann es mit Strg + Y stoppen. Ich denke, dass etwas mit diesem Benutzer nicht stimmt, aber wie ich zuvor geschrieben habe, wenn ich Befehle nacheinander ausführe, funktioniert es. Ich verstehe nicht. Kann mir jemand sagen was das Problem sein könnte? Danke.
Akzeptierte Antwort:
Sie scheinen die letzten Zeilen in Ihrem Skript als Benutzer vlado ausführen zu wollen. Dafür gibt es einen sauberen Weg:
sudo -u vlado your_command
Die letzten paar Zeilen Ihres Skripts sehen also so aus:
sudo -u vlado composer install --no-scripts
sudo -u vlado npm install --production