GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Warum scheint dieses Skript, das Su ausführt, nie abzubrechen, wenn ich den Benutzer innerhalb des Skripts ändere?

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ühre
bash /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

Ubuntu
  1. Warum führt „sudo Su“ in einem Shell-Skript den Rest des Skripts nicht als Root aus?

  2. Warum benötigt der Root-Benutzer eine Sudo-Berechtigung?

  3. Warum ändert der folgende Weg die Größe der Kerndatei nicht?

  4. Bash:Warum wird das übergeordnete Skript nicht bei SIGINT beendet, wenn das untergeordnete Skript SIGINT abfängt?

  5. Warum benötigt der 'bin'-Benutzer eine Login-Shell?

So ändern Sie die Standardbenutzer-Shell im Linux-Betriebssystem

Skript mit Argumenten als Benutzer ausführen?

Warum springt der Cursor beim Tippen?

Warum verhält sich Ping -f so?

Warum funktioniert das Setuid-Bit inkonsistent?

Führen Sie ein Shell-Skript als ein anderer Benutzer aus