web-dev-qa-db-fra.com

Shell Script - Comment exécuter le script une fois que mysql est prêt?

J'ai un script (dans un fichier .sh) à exécuter une fois à chaque fois que je me suis connecté. Mais je dois m'assurer que le service mysql est déjà en cours d'exécution avant le script principal de mon .sh exécuté.
Voici mon brouillon:

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

Comment écrire le brouillon ci-dessus dans un script shell?

4
Oki Erie Rinaldi

Enfin j'ai trouvé la réponse! :RÉ

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

MERCI de m'avoir signalé cette commande ping de mysqladmin!

Cela va être très utile quand on a affaire à Docker.

Voici ce que j'ai fini par faire:

    # 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