GNU/Linux >> Linux の 問題 >  >> Ubuntu

スクリプト内でユーザーを変更すると、Suを実行しているこのスクリプトが終了しないように見えるのはなぜですか?

rootユーザーの下で5つのコマンドを実行する非常に単純なbashスクリプトがあります。コマンドを1つずつ手動で実行すると、すべてが機能します。問題ありません。しかし、コマンドを介してmy-deploy.shファイルとして実行すると

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

それは無限のプロセスのようです。スクリプトは次のとおりです:

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

実行を開始し、Gitプルインターミナルの結果を確認できます。しかし、その後、エラーなしで停止し、実行されたままになります。 Ctrl+Yで停止できます。そのユーザーに何か問題があると思いますが、前に書いたように、コマンドを1つずつ実行すると機能します。理解できない。誰かが何が問題なのか教えてもらえますか?ありがとう。

承認された回答:

スクリプトの最後の行をユーザーvladoとして実行したいようです。それを行うためのクリーンな方法があります:

sudo -u vlado  your_command 

したがって、スクリプトの最後の数行は次のようになります。

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

Ubuntu
  1. 次の方法でコアファイルの制限サイズが変更されないのはなぜですか?

  2. Ubuntu – Pam_execに現在のユーザーとしてスクリプトを実行させる方法は?

  3. Tarファイルのアクセス許可を変更した場合、それはその中のファイルに適用されますか?

  1. ユーザーとして引数を使用してスクリプトを実行しますか?

  2. UbuntuがGmailのパスワードを要求し続けるのはなぜですか?

  3. このスクリプトでコマンド履歴の一部を削除しないのはなぜですか?

  1. シェルスクリプトの「sudoSu」がスクリプトの残りの部分をルートとして実行しないのはなぜですか?

  2. ルートユーザーがSudo権限を必要とするのはなぜですか?

  3. Ubuntuのアップグレードプロセスはどのように機能しますか?