首頁>Club>
11
回覆列表
  • 1 # 產品經理老胡

    老胡的看法:

    Linux命令後面的&符號的含義是將這個命令作為一個作業(job)放到當前的shell的後臺執行。Linux為了方便在shell中同時能夠管理多個程序,設計了“作業”的概念。每一個作業對應系統中的一個程序,透過對作業的管理實現對程序的管理。

    &”符號是將命令“作業”化的操作

    在一個命令後面加上“&”符號執行,實際上就是在執行了這個命令的同時,將它的程序作為一個作業提交給系統,並將它放到後臺執行。在執行的過程中可以使用作業控制命令來進行管理。如果此時使用者登出或者中斷了shell程序,放在後臺執行的命令不會受到影響,會一直執行到最後。

    控制作業的一些操作

    控制作業的操作主要有Ctrl+z、bg、fg和disown。

    Ctrl+z的作用是暫停當前執行的作業。bg的作用是將某項作業以後臺方式繼續執行,如下圖:

    sleep的時候我按下了Ctrl+z暫停了作業,然後使用jobs查到了作業號為1,再使用bg %1(即作業號)將這個作業放置到後臺繼續執行,注意看後面有了一個"&"符號。再用jobs檢視的時候,這個任務就已經在執行中了。

    fg的作用就是將後臺執行的作業提到前臺,可以進行一些互動操作:

    disown可以使作業忽略HUP訊號,在shell退出的時候不會終止(老胡認為主要是在作業被Ctrl+z暫停的時候有意義):

    disown -h %job

    使作業號為job的作業忽略HUP訊號

    disown -ah

    使所有作業忽略HUP訊號

    disown -rh

    使正在執行的作業忽略HUP訊號

    總結一下,Linux命令後面加上“&”符號之後再執行,就會作為後臺作業執行,不會受到使用者登出的影響,但是在shell程序被kill的時候會被終止;如果使用disown令其忽略HUP訊號的話,則可以在shell程序被kill的時候轉為init的子程序繼續執行。

  • 中秋節和大豐收的關聯?
  • 法約爾14條管理原則順口溜?