GNU/Linux >> Znalost Linux >  >> Ubuntu

Proč se zdá, že tento skript spuštěný Su nikdy neukončí, pokud ve skriptu změním uživatele?

Mám opravdu jednoduchý bash skript s 5 příkazy spuštěnými pod uživatelem root. Pokud spouštím příkazy ručně jeden po druhém, vše funguje – žádný problém. Ale když to spustím jako soubor my-deploy.sh pomocí příkazu

bash /root/custom-scripts/deploy/my-deploy.sh 2>> /var/log/www-deploy/tatrytec.eu.log

vypadá to jako nekonečný proces. Zde je 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

Začíná to běžet a vidím výsledek git pull v terminálu. Pak ale bez chyby umře a stále běží. Můžu to zastavit přes ctrl+Y. Myslím, že s tím uživatelem je něco špatně, ale jak jsem psal dříve, když spouštím příkazy jeden po druhém, funguje to. nerozumím. Může mi někdo říct, v čem by mohl být problém? Děkuji.

Přijatá odpověď:

Zdá se, že chcete spustit poslední řádky ve skriptu jako uživatel vlado. Existuje čistý způsob, jak to udělat:

sudo -u vlado  your_command 

Takže posledních pár řádků vašeho skriptu bude vypadat takto:

sudo -u vlado composer install --no-scripts
sudo -u vlado npm install --production

Ubuntu
  1. Proč následující způsob nezmění velikost základního souboru?

  2. Ubuntu – Jak nechat Pam_exec spustit skript jako aktuální uživatel?

  3. Pokud změním oprávnění u souboru Tar, bude se to vztahovat i na soubory v něm?

  1. Proč Ubuntu stále žádá o heslo Gmailu?

  2. Proč kurzor při psaní přeskakuje?

  3. Paralelní spuštění skriptu shellu

  1. Bash:Proč se nadřazený skript neukončí na SIGINT, když podřízený skript zachytí SIGINT?

  2. Spusťte skript prostředí z příkazu docker-compose uvnitř kontejneru

  3. Proč uživatel 'bin' potřebuje přihlašovací shell?