Saya memiliki skrip bash yang sangat sederhana dengan 5 perintah yang berjalan di bawah pengguna root. Jika saya menjalankan perintah secara manual satu per satu semuanya bekerja – tidak ada masalah. Tetapi ketika saya menjalankannya sebagai file my-deploy.sh melalui perintah
bash /root/custom-scripts/deploy/my-deploy.sh 2>> /var/log/www-deploy/tatrytec.eu.log
sepertinya proses tanpa akhir. Berikut scriptnya:
#!/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
Itu mulai berjalan dan saya bisa melihat hasil dari git pull in terminal. Tapi kemudian mati tanpa kesalahan dan masih berjalan. Saya bisa menghentikannya melalui ctrl+Y. Saya merasa ada yang salah dengan pengguna itu tetapi seperti yang saya tulis sebelumnya jika saya menjalankan perintah satu per satu itu berfungsi. Saya tidak paham. Dapatkah seseorang memberitahu saya apa yang bisa menjadi masalah? Terima kasih.
Jawaban yang Diterima:
Anda sepertinya ingin menjalankan baris terakhir dalam skrip Anda sebagai pengguna vlado. Ada cara bersih untuk melakukannya:
sudo -u vlado your_command
Jadi beberapa baris terakhir skrip Anda akan terlihat seperti ini:
sudo -u vlado composer install --no-scripts
sudo -u vlado npm install --production