Shell脚本停止与后台进程一起运行



我试图在bg中运行mysqld,用mysql客户端执行一些命令,但当我创建进程时,我的脚本停止运行,这是我使用的脚本

set -m
daemon="/usr/bin/mysqld --user=mysql --console --skip-name-resolve --skip-networking=0 $@"
$daemon &
exec echo "Test"
exec fg %1

我不是shell脚本的专家,我查看了一些网站,发现了执行命令的方法。

否。脚本在exec echo "Test"之后停止。exec用后面的命令替换当前进程(shell脚本(

daemon="/usr/bin/mysqld --user=mysql --console --skip-name-resolve --skip-networking=0 $@"
$daemon &
exec echo "Test"
echo "Second Test"
exec fg %1

解决方案很简单:不要使用exec

BTW:目前还不清楚您为什么要在shell脚本中执行fgfg在交互式shell中只有一个函数,而在脚本中没有。

好的,非常感谢,我找到了这个命令来做我想做的事情,它可以工作

sh /scripts/run.sh & sleep 2 
&& mysql -utest -ppass mydb < 
/docker-entrypoint-initdb.d/mydb.sql

对于前景过程,我不知道fg只在交互式中工作,谢谢你的精确性。

最新更新