GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Perché questo script in esecuzione su sembra non terminare mai se cambio utente all'interno dello script?

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

Ubuntu
  1. Perché "sudo Su" in uno script di shell non esegue il resto dello script come root?

  2. Bash:perché lo script genitore non termina su SIGINT quando lo script figlio intercetta SIGINT?

  3. Esegui uno script di shell dal comando docker-compose, all'interno del contenitore

  4. Perché il nome del file contiene punti interrogativi quando eseguo uno script sul mio computer remoto?

  5. Perché il bit setuid funziona in modo incoerente?

Come modificare la shell utente predefinita nel sistema operativo Linux

Perché il modo seguente non cambia la dimensione del limite del file principale?

Come funziona il processo di aggiornamento di Ubuntu?

Perché il cursore salta durante la digitazione?

Perché Ping -f si comporta in questo modo?

Eseguire uno script di shell come utente diverso