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