3

Ansible を使用して Gluu サーバーのインストールをスクリプト化しようとしています。最終的なセットアップを開始するはずの次のスクリプトが最後にあります。問題は、ログイン後にスクリプトが停止し、終了すると再起動することです。

#!/bin/bash
/etc/init.d/gluu-server-2.4.2 login
cd /install/community-edition-setup/
./setup.py -n -u  -a   -s -f setup.properties

編集

実際、login コマンドは、私のチャレンジのソースである chroot コマンドを発行します。

/usr/sbin/chroot /opt/gluu-server-2.4.2/ su -
4

1 に答える 1

0

あなたの基本的な問題は、新しいプロセスchrootsu開始し、それらを呼び出すプロセスに影響を与えないことです。は、コマンドchrootを実行する新しいプロセスを作成し、コマンドは最終的に新しいシェル プロセスを作成します。ルート ディレクトリが変更されたのは、この新しいシェルです。そのシェルを終了すると、ルートが変更されたことのないスクリプトの実行が再開されます。コマンドは、間違ったコンテキストで実行されます。susu./setup.py

su解決策は、作成するプロセスでコマンドを実行することです。何かのようなもの:

#!/bin/bash
/usr/sbin/chroot /opt/gluu-server-2.4.2/ su -l -c "
    cd /install/community-edition-setup/;
    ./setup.py -n -u  -a   -s -f setup.properties"

これは./setup.py、ユーザーと対話する必要がある場合、または制御端末が必要な場合には機能しない可能性があります。その場合、次のようなものが必要になる場合があります。

#!/bin/bash
/usr/sbin/chroot /opt/gluu-server-2.4.2/ /bin/bash -l -c "
    cd /install/community-edition-setup/;
    ./setup.py -n -u  -a   -s -f setup.properties"

この場合、スクリプトはすでに root として実行されている必要がありますが、通常は root になってchrootコマンドを呼び出す必要があります。

于 2016-04-16T19:18:58.247 に答える