在我的部署脚本中,我在运行后运行一个脚本来设置我的数据库mysqld_safe
。但是当数据库设置运行时,还没有任何mysql
进程在运行。如何确保仅在mysql
进程运行后才运行数据库设置脚本?
这是脚本:
mysqld_safe >/tmp/spot.mysql.out 2>/tmp/spot.mysql.err &
mysql -u root < setup.sql
在我的部署脚本中,我在运行后运行一个脚本来设置我的数据库mysqld_safe
。但是当数据库设置运行时,还没有任何mysql
进程在运行。如何确保仅在mysql
进程运行后才运行数据库设置脚本?
这是脚本:
mysqld_safe >/tmp/spot.mysql.out 2>/tmp/spot.mysql.err &
mysql -u root < setup.sql
有办法。如果您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
你的 shell 退出而死。为避免这种情况,请忽略 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