web-dev-qa-db-ja.com

シェルスクリプト-mysqlの準備ができた後にスクリプトを実行する方法

ログインするたびに1回実行するスクリプト(.shファイル)がありますが、.shのメインスクリプトが実行される前にmysqlサービスが既に実行されていることを確認する必要があります。
これが私のドラフトです。

function check_mysql(){
    // script for checking mysql
    return status
}
mysqlstatus = check_mysql()
while mysqlstatus == false {
    mysqlstatus = check_mysql()
}
// once mysqlstatus == true
// my main script
// my main script
// my main script
// my main script

上記のドラフトをシェルスクリプトで記述する方法

4

最後に答えを見つけました! :D

while !(mysqladmin ping)
do
   sleep 3
   echo "waiting for mysql ..."
done
echo "starting the main script"
#main script
#main script
#main script
4

そのmysqladmin pingコマンドに注意を払ってくれてありがとう!

Dockerを扱うとき、それは大きな助けになるでしょう。

私がやったことは次のとおりです。

    # Returns true once mysql can connect.
    mysql_ready() {
        mysqladmin ping --Host=database --user=root --password=MYSQL_ROOT_PASSWORD > /dev/null 2>&1
    }

    while !(mysql_ready)
    do
       sleep 3
       echo "waiting for mysql ..."
    done
3
Jon Pugh