job control是用於bash環境下的,也就是說:當我們打開一個bash shell之後,可以在單一終端下同時進行多個工作的行為管理。 先來理解前臺與後臺的概念。前臺可以簡單理解為終端以提示符的方式供你操作的環境。其餘的工作則位於後臺,或暫停或運行。註意:後臺工作在運行態時不能與用戶交互。換句 ...
job control是用於bash環境下的,也就是說:當我們打開一個bash shell之後,可以在單一終端下同時進行多個工作的行為管理。
先來理解前臺與後臺的概念。前臺可以簡單理解為終端以提示符的方式供你操作的環境。其餘的工作則位於後臺,或暫停或運行。註意:後臺工作在運行態時不能與用戶交互。換句話說,交互程式在後臺運行沒有意義。
現在我們來熟悉一下job control涉及到的命令。
- &
用法:cmd &。
作用:將該工作丟到後臺執行。
回顯:[job number] PID。完成時回顯:[job number] Done。
好處:不怕被ctrl + c打斷
註意:後臺運行的程式,如果有stdout或stderr,依舊會輸出到屏幕上,影響前臺工作。處理此種情況最好的辦法即使數據流重定向。
- ctrl + z
作用:將目前的工作丟到後臺,並暫停。
一種使用情況:如果我正在使用vi編輯一個文件,需要知道某個文件的目錄,這時需要到bash環境下查找,此時是否需要結束vi呢?當然不需要。只需要暫時將vi丟到後臺等待(不能是運行,前面說過交互程式在後臺運行沒有意義)即可。
- jobs
用法:jobs [-lrs]
參數:
-l :除了列出job number與命令串之外,同時列出PID
-r :僅列出正在後臺run的工作
-s :僅列出正在後臺stop的工作
+/-符號的含義:+表示最後被丟到後臺的工作,也是fg預設從後臺取出的工作。-表示倒數第二個被丟到後臺的工作
- fg
用法:fg [%job number]
作用:將job number標識的工作返回前臺
特殊用法:fg -。將-標識的工作返回前臺。fg。將+標識的工作返回前臺。
- bg
用法:bg [%job number]
作用:使後臺job number標識的工作進入運行態。
特殊用法:bg –。使-標識的工作進入運行態。bg。使+標識的工作進入運行態。
註意:當對一個交互程式使用該命令時,會有兩個變化:先變成run,又立刻返回到stop。還記得前面說的,交互程式丟到後臺運行沒有意義。另外,這兩個變化還會導致+標識該交互程式。
- kill
用法:kill –signal %job number|PID
作用:以signal信號表示的方式刪除job number標識的工作
常用signal信號:1,重新讀取一次參數的配置文件。9,立刻強制刪除一個工作,通常用於刪除一個不正常的工作。15,以正常程式終止方式終止工作。