GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Por qué este script que ejecuta Su nunca parece terminar si cambio de usuario dentro del script?

Tengo un script bash realmente simple con 5 comandos que se ejecutan bajo el usuario raíz. Si ejecuto los comandos manualmente uno por uno, todo funciona, no hay problema. Pero cuando lo ejecuto como archivo my-deploy.sh a través del comando

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

parece un proceso interminable. Aquí está el guión:

#!/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

Comienza a ejecutarse y puedo ver el resultado de git pull in terminal. Pero luego muere sin ningún error y todavía se está ejecutando. Puedo detenerlo a través de ctrl+Y. Creo que algo está mal con ese usuario, pero como escribí antes, si ejecuto los comandos uno por uno, funciona. No entiendo. Alguien me puede decir cual puede ser el problema? Gracias.

Respuesta aceptada:

Parece que desea ejecutar las últimas líneas en su secuencia de comandos como el usuario vlado. Hay una forma limpia de hacerlo:

sudo -u vlado  your_command 

Entonces, las últimas líneas de su secuencia de comandos se verán así:

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

Ubuntu
  1. ¿Por qué "sudo Su" en un script de Shell no ejecuta el resto del script como root?

  2. ¿Por qué el usuario 'bin' necesita un shell de inicio de sesión?

  3. ¿Por qué el nombre del archivo contiene signos de interrogación cuando ejecuto un script en mi máquina remota?

  4. ¿Por qué el bit setuid funciona de manera inconsistente?

  5. Ejecute un script de shell como un usuario diferente

Cómo cambiar el shell de usuario predeterminado en el sistema operativo Linux

¿Ejecutar script con argumentos como usuario?

¿Por qué Ubuntu sigue pidiendo la contraseña de Gmail?

¿Por qué esta secuencia de comandos no elimina parte del historial de comandos que funciona en la computadora?

¿Por qué salta el cursor al escribir?

¿Por qué Ping -f actúa así?