Ho uno script bash davvero semplice con 5 comandi in esecuzione sotto l'utente root. Se eseguo i comandi manualmente uno per uno, tutto funziona, nessun problema. Ma mentre lo eseguo come file my-deploy.sh tramite il comando
bash /root/custom-scripts/deploy/my-deploy.sh 2>> /var/log/www-deploy/tatrytec.eu.log
sembra un processo infinito. Ecco lo script:
#!/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
Inizia a funzionare e posso vedere il risultato di git pull nel terminale. Ma poi muore senza alcun errore ed è ancora in esecuzione. Posso fermarlo tramite ctrl+Y. Penso che qualcosa non va in quell'utente ma, come ho scritto prima, se eseguo i comandi uno per uno funziona. Non capisco. Qualcuno sa dirmi quale potrebbe essere il problema? Grazie.
Risposta accettata:
Sembra che tu voglia eseguire le ultime righe nel tuo script come utente vlado. C'è un modo pulito per farlo:
sudo -u vlado your_command
Quindi le ultime righe del tuo script saranno così:
sudo -u vlado composer install --no-scripts
sudo -u vlado npm install --production