Background-Process

Kali Linux 中的後台程序到底有什麼作用?

  • August 12, 2021

語境


我檢查了幾個關於同一主題的問題,當他們解釋後台程序到底是什麼時,我仍然感到困惑。我解釋的常見答案是:

在後台執行的程序允許您與同一個終端進行互動……等等。

我通過執行以下命令對此進行了測試:

  • ping google.com -c 100 &
  • PS:我也在沒有&操作員的情況下執行了相同的命令並使用了 Ctrl-Z,但所做的只是暫停命令

問題


當我執行這個命令時,輸出仍然在我的主終端中,在命令完成執行或終止命令之前,我無法執行任何其他命令。

在我列出我的問題之前,我的問題不是如何將命令的輸出重定向到單獨的文件/位置。我已經知道如何將ping google.com -c 100命令的輸出重定向到不同的地方,這樣我仍然可以與主終端互動

我的問題是

  • 用最簡單的術語來說,後台命令實際上做了什麼
  • &在命令末尾加上 a 有什麼作用
  • 這樣做的目的是什麼/我從後台命令中獲得什麼
  • 我什麼時候想要後台命令

**如果您需要進一步澄清問題或上下文,請告訴我

在互動式 shell 的上下文中回答這些問題。在 shell 腳本的上下文中,這些行為略有不同,但大體相似。

  • 用最簡單的術語來說,後台命令實際上做了什麼

後台命令(或其他程序)允許它執行,同時仍然允許您與 shell 互動(即啟動程序)。

  • 在命令末尾加上 & 有什麼作用

分隔符表示給定命令的&結束,並立即將該命令呼叫的程序放到後台執行。它是類似的,因此;分隔符表示要執行的給定命令的結束,直到它終止,因此提供了新的 shell 提示符。

  • 這樣做的目的是什麼/我從後台命令中獲得什麼
  • 我什麼時候想要後台命令

這些本質上是同一個問題。簡短的回答是:當您即將執行一個需要很長時間才能執行的命令時,但您可以在執行它的同時繼續做其他事情。一個例子是,對於一個人為的例子:

$ tail -f /path/to/apache-log > ~/webserverlog.txt &
$ curl --silent -o /dev/null https://localhost/path/site/you/are/debugging
$ kill %1

引用自:https://unix.stackexchange.com/questions/664460