J'ai un script bash très simple avec 5 commandes exécutées sous l'utilisateur root. Si j'exécute les commandes manuellement une par une, tout fonctionne - pas de problème. Mais comme je l'exécute en tant que fichier my-deploy.sh via la commande
bash /root/custom-scripts/deploy/my-deploy.sh 2>> /var/log/www-deploy/tatrytec.eu.log
cela semble être un processus sans fin. Voici le 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
Il commence à fonctionner et je peux voir le résultat de git pull dans le terminal. Mais ensuite, il meurt sans aucune erreur et il est toujours en cours d'exécution. Je peux l'arrêter via ctrl+Y. Je pense que quelque chose ne va pas avec cet utilisateur, mais comme je l'ai déjà écrit, si j'exécute les commandes une par une, cela fonctionne. Je ne comprends pas. Quelqu'un peut-il me dire quel pourrait être le problème? Merci.
Réponse acceptée :
Vous semblez vouloir exécuter les dernières lignes de votre script en tant qu'utilisateur vlado. Il existe un moyen propre de le faire :
sudo -u vlado your_command
Ainsi, les dernières lignes de votre script ressembleront à ceci :
sudo -u vlado composer install --no-scripts
sudo -u vlado npm install --production