首页  >  问答  >  正文

如何停止运行Shell脚本中的后台进程

<p>我正在尝试在后台运行mysqld以使用mysql客户端执行一些命令,但是当我将进程切换到前台时,我的脚本停止运行。这是我使用的脚本:</p> <pre class="brush:sh;toolbar:false;">set -m daemon="/usr/bin/mysqld --user=mysql --console --skip-name-resolve --skip-networking=0 $@" $daemon & exec echo "Test" exec fg %1 </pre> <p>我不是一个shell脚本编程专家,我在一些网站上查找并找到了这种执行命令的方法。</p>
P粉722409996P粉722409996433 天前687

全部回复(1)我来回复

  • P粉521748211

    P粉5217482112023-09-04 17:45:03

    不。脚本在 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

    顺便说一下:不清楚为什么您想在shell脚本中使用 fg。在交互式shell中,fg 只在脚本中没有功能。

    回复
    0
  • 取消回复