在我的部署脚本中,运行mysqld_safe
后运行脚本来设置数据库。但是,当数据库设置运行时,尚未运行mysql
进程。如何确保仅在mysql
进程运行后运行数据库设置脚本?
这是脚本:
mysqld_safe >/tmp/spot.mysql.out 2>/tmp/spot.mysql.err &
mysql -u root < setup.sql
答案 0 :(得分:1)
有办法。如果您的系统上有pidof
(请查看which pidof
),然后you could use:
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
,但是,当你的shell退出时,它可能会因为SIGHUP
而死亡。为避免这种情况,make it ignore 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