Shell作業排程控制

2021-09-08 16:16:27 字數 1952 閱讀 4084

掛起乙個前台作業

ctrl+z

檢視掛起的作業

jobs -l

恢復乙個被掛起的作業

fg [job_num] 例如 fg 1

從作業系統的角度來講,作業是計算機系統中執行的一項使用者任務。在unix/linux系統中作業可以定義為:在命令列中輸入的乙個或一組命令。

由於linux是乙個真正的多使用者多工的作業系統,所以可以同時執行多個任務,但是在前台啟動乙個作業時,標準輸入和標準輸出都被鎖定,它們被當前作業所獨佔,直至該作業結束。為此,linux定義了兩種型別的作業:前台作業和後台作業。

一 前台作業

我們一般在終端執行的程式都是前台作業,在它執行過程中無法啟動其他作業,啟動前台作業也相當簡單,輸入命令然後回車。

★掛起乙個前台作業

為了掛起乙個前台作業,只需按下ctrl+z。這個在我們處於全屏編輯模式下很有用,可以掛起編輯作業,完成其他任務。這樣回到終端後,我們執行jobs -l就可以

檢視被掛起的作業的相關資訊。

★恢復乙個被掛起的作業

恢復乙個掛起的作業,只需在終端執行前台命令fg。

★終止乙個前台作業

終止乙個前台作業,只需按下ctrl+c,作業終止後,鍵入回車啟用命令列提示符。

二 後台作業

當乙個作業需要占用較長時間的時候也許我們需要後台執行該命令以完成其他的任務。

★啟動乙個後台作業

啟動乙個後台作業,只需在命令的後面加上符號&。特別注意,如果該作業有引數,則&號緊跟在最後乙個引數之後。命令結尾與&之間不留空格。

需要注意的是,前台作業和後台作業是共享鍵盤,顯示器等資源的,後台作業和前台作業為了分的cpu時間片是要競爭競爭,所以後台作業傳送給顯示器的任何訊息因此將與來自當前作業的訊息混在一起,這可能很快變的很混亂。乙個後台作業要請求使用者輸入必須將之移到前台。強烈建議後台作業的輸入和輸出必須重定向,最好將終端輸出重定向檔案或者null裝置。你可以試試不帶引數的後台ping命令,例如ping localhost&,呵呵,等著閃屏吧!

★掛起,重啟,終止後台作業

為了掛起乙個後台作業用stop命令,重啟用bg命令,終止用kill命令。三種命令都需要乙個%號大頭的作業號,作業號可以用jobs檢視

★作業前後臺狀態切換

乙個被掛起的作業可以在前台和後台狀態間切換。一旦作業被掛起,就可以使用bg命令將作業起到後台執行。移動乙個後台任務到前台自然用fg命令了。

★多後台作業

當多個後台作業執行時,需要用到作業號,用以標示想要處理的作業。

三作業佇列

使用jobs [-l]命令可以檢視當前作業及其狀態。每個作業有相應的作業號,當前值,執行狀態。

★當前值

作業列表中的+號,-號稱為當前值標誌。+號說明改作業位當前預設作業,-號說明當前預設作業完成後將替代當前預設作業。這裡=,-號倒是有點程序優先順序

的味道了。當乙個作業被掛起就地動稱為預設的當前值標誌,如果多個作業被掛起則按照掛起的順序一次賦予相應的標識值,最先掛起的為加號,較早的為減號,按優先順序理解起來很容易明白。

★使用作業號

前面提到的幾個命令都可以加上作業號引數。作業號有%號開頭,並與命令之間有一空格隔開。預設作業號可表示位:%+,或者%%,包含減號當前值的作業可用%-表示。例如結束當前預設作業:kill %%或者kill %+。

★作業狀態生命週期

乙個作業可能處於三種狀態之一:前台,後台,掛起。當乙個作業啟動,它在前台執行,在執行期間作業可以被掛起,終止它,或者執行直至自動結束掉。掛 起的作業也可轉到後台繼續執行。乙個作業從建立到結束完全可以在人工干預下執行,我們可以更好的控制自己的作業任務,以便是linux更好的為我們服務我 們也可以提高工作效率。

3 2 作業與作業排程(高階排程)

1.在批處理系統中,因作業進入系統後先駐留在外存,故需要有作業排程。在分時系統中為做到及時響應,作業被直接送入記憶體,故不需作業排程。在實時系統中,通常也不需作業排程 2.作業排程演算法 先來先服務和短作業 程序 優先排程演算法 高優先權排程演算法和高響應比優先排程演算法 先來先服務 優點 有利於長...

程序排程與作業排程

作業排程按一定的演算法從磁碟上的 輸入井 中選擇資源能得到滿足的作業裝入記憶體,使作業有機會去占用處理器執行。但是,乙個作業能否占用處理器,什麼時間能夠占用處理器,必須由程序排程來決定。所以,作業排程選中了乙個作業且把它裝入記憶體時,就應為該作業建立乙個程序,若有多個作業被裝入記憶體,則記憶體中同時...

作業排程方案

題目描述 description 我們現在要利用 m臺機器加工 n個工件,每個工件都有 m道工序,每道工序都在不同的指定的機器上完成。每個工件的每道工序都有指定的加工時間。每個工件的每個工序稱為乙個操作,我們用記號 j k表示乙個操作,其中j為 1到n中的某個數字,為工件號 k為 1到m中的某個數字...