當前位置: 首頁>>技術教程>>正文


linux – 異步Shell命令

, , , ,

問題描述

老實說,我不敢相信我無法在網上找到解決方案。我遇到了一些看似相似的事情,但沒有任何事情能真正實現我想要的…

我正在嘗試使用Shell腳本來啟動命令。我不在乎是否/何時/如何/為什麽完成。我希望該過程開始並運行,但是我希望能夠立即回到我的 shell …

希望這已經足夠清楚了,我可能隻是想念一些非常愚蠢的東西

最佳回答

您可以隻在後台運行腳本:

$ myscript &

請注意,這與將&放入腳本中不同,後者可能無法滿足您的要求。

次佳回答

每個人都忘記了disown。因此,這裏是一個摘要:

  • &將作業放在後台。

    • 使其在嘗試讀取輸入時阻塞,並且

    • 使 shell 不等待其完成。

  • disown從Shell的作業控件中刪除了該進程,但仍將其連接到終端。

    • 結果之一是 shell 程序將不會向其發送SIGHUP(如果 shell 程序接收到SIGHUP,它還將向該進程發送SIGHUP,這通常會導致該進程終止)。

    • 顯然,它隻能應用於後台作業(因為在前台作業運行時無法輸入)。

  • nohup斷開該進程與終端的連接,將其輸出重定向到nohup.out並將其與SIGHUP屏蔽。

    • 該過程不會收到任何發送的SIGHUP

    • 它完全獨立於作業控製,並且原則上也可以用於前台作業(盡管這不是很有用)。

    • 通常與&一起使用(作為後台作業)。

第三種回答

nohup cmd

關閉終端時不會掛斷。默認情況下輸出到nohup.out

您可以將此與背景結合使用,

nohup cmd &

並擺脫輸出,

nohup cmd > /dev/null 2>&1 &

您也可以使用disown命令。類型cmdCtrl-Zbgdisown

第四種回答

或者,在程序運行後,您可以點擊Ctrl-Z,這將停止您的程序,然後鍵入

bg

這會將您最後停止的程序置於後台。 (如果您在沒有’&’的情況下啟動了某些內容,但仍希望在背景中使用它而不重新啟動它,則很有用)

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/8801.html,未經允許,請勿轉載。