0

デプロイメント スクリプトでは、 を実行した後にデータベースをセットアップするスクリプトを実行しますmysqld_safe。しかし、データベースのセットアップが実行されるとき、mysqlまだ実行中のプロセスはありません。mysqlプロセスの実行後にのみデータベース セットアップ スクリプトを実行するようにするにはどうすればよいですか?

スクリプトは次のとおりです。

mysqld_safe >/tmp/spot.mysql.out 2>/tmp/spot.mysql.err &
mysql -u root < setup.sql
4

1 に答える 1

1

方法はあります。システムにある場合pidof( で確認which pidof)、次を使用できます

mysqld_safe >/tmp/spot.mysql.out 2>/tmp/spot.mysql.err &
while ! pidof mysql > /dev/null
do
    sleep 5
done
mysql -u root < setup.sql

実行する必要がある正確な時間はわかりませんが、開始方法では、シェルが終了したときにmysqld_safeおそらく終了します。SIGHUPこれを避けるには、SIGHUP を無視するようにします:

nohup mysqld_safe >/tmp/spot.mysql.out 2>/tmp/spot.mysql.err &
while ! pidof mysql > /dev/null
do
    sleep 5
done
mysql -u root < setup.sql
于 2013-09-11T05:43:56.287 に答える