搜尋

首頁  >  問答  >  主體

如何停止執行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粉722409996505 天前738

全部回覆(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
  • 取消回覆