1、作業控制與回話
1️⃣:作業控制是shell的一種功能,它允許單個shell例項執行和管理多個命令
3️⃣:如果在shell提示符中僅輸入了一條命令,則這條命令可視為命令的最小管道;該命令將是該作業的唯一成員
4️⃣:一次只能有乙個作業從特定終端視窗讀取輸入和鍵盤生成的訊號。屬於該作業的程序是該控制終端的前台程序
2、作業分類
1️⃣:前台作業:通過終端啟動,且啟動後一直佔據了命令提示符
2️⃣:後台作業:可以通過終端啟動,但啟動之後,釋放命令提示符,後續的操作在後台完成
3、後台執行作業演示
//在命令後跟上&符號可以生成乙個後台作業[root@localhost ~]# sleep 1000 &
[1] 2247
[root@localhost ~]# jobs
[1]+ 執行中 sleep 1000 &
// jobs命令用於顯示當前所有的後台作業
4、fg ——將後台作業調至前台執行
[root@localhost ~]# sleep 1000 &[1] 2284
[root@localhost ~]# jobs
[1]+ 執行中 sleep 1000 &
[root@localhost ~]# fg
sleep 1000
//游標會在這一行卡主,直到超過1000秒;
//當只有乙個後台作業時,直接使用fg命令,不跟任何引數即可將後台作業調至前台執行
//當有多個後台作業時,必須加上%num(num是每個後台作業的編號,也就是中的數字)
[root@localhost ~]# sleep 1000 &
[1] 2313
[root@localhost ~]# sleep 1100 &
[2] 2314
[root@localhost ~]# sleep 1200 &
[3] 2316
[root@localhost ~]# jobs
[1] 執行中 sleep 1000 &
[2]- 執行中 sleep 1100 &
[3]+ 執行中 sleep 1200 &
[root@localhost ~]# ps -ef | grep sleep
root 2313 2084 0 10:40 pts/2 00:00:00 sleep 1000
root 2314 2084 0 10:40 pts/2 00:00:00 sleep 1100
root 2316 2084 0 10:40 pts/2 00:00:00 sleep 1200
root 2318 2084 0 10:41 pts/2 00:00:00 grep --color=auto sleep
// 現在我想讓第二個sleep放到前台執行
[root@localhost ~]# fg %2
sleep 1100
//如果多個後台作業,不加引數,直接用fg就直接調取最後乙個作業到前台執行
[root@localhost ~]# jobs
[1] 執行中 sleep 1000 &
[2]- 執行中 sleep 1100 &
[3]+ 執行中 sleep 1200 &
[root@localhost ~]# fg
sleep 1200
5、ctrl+z —— 將前台作業放到後台執行
//使用ctrl+z可將前台程序傳送到後台,此時作業將處於停止狀態[root@localhost ~]# sleep 1000 &
[1] 2345
[root@localhost ~]# jobs
[1]+ 執行中 sleep 1000 &
[root@localhost ~]# fg
sleep 1000
^z // 此處按ctrl+z
[1]+ 已停止 sleep 1000
[root@localhost ~]# jobs
[1]+ 已停止 sleep 1000
6、bg ——使後台已停止的作業重新執行
[root@localhost ~]# jobs[1]+ 已停止 sleep 1000
[root@localhost ~]# bg
[1]+ sleep 1000 &
[root@localhost ~]# jobs
[1]+ 執行中 sleep 1000 &
//當有多後台作業的時候,需要使用bg+%num(num是後台作業的編號,也就是中的數字)
[root@localhost ~]# jobs
[1] 執行中 sleep 1000 &
[2]- 已停止 sleep 1100
[3]+ 已停止 sleep 1200
[root@localhost ~]# bg %2
[2]- sleep 1100 &
[root@localhost ~]# jobs
[1] 執行中 sleep 1000 &
[2]- 執行中 sleep 1100 &
[3]+ 已停止 sleep 1200
//如果不加引數,只是使用bg,那麼久從後往前逐一將後台停止的作業重新執行
[root@localhost ~]# jobs
[1] 已停止 sleep 1000
[2]- 已停止 sleep 1100
[3]+ 已停止 sleep 1200
[root@localhost ~]# bg
[3]+ sleep 1200 &
[root@localhost ~]# bg
[2]+ sleep 1100 &
[root@localhost ~]# bg
[1]+ sleep 1000 &
7、終止後台作業
//kill加上作業號可以手動殺死指定作業[root@localhost ~]# jobs
[1] 執行中 sleep 1000 &
[2] 執行中 sleep 1100 &
[3]+ 已停止 sleep 1200
[4]- 已停止 sleep 1300
[root@localhost ~]# kill %1
[root@localhost ~]# kill %2
[root@localhost ~]# jobs
[3]+ 已停止 sleep 1200
[4]- 已停止 sleep 1300
//將後台作業放到前台,按ctrl+c終止作業任務
[root@localhost ~]# jobs
[3]- 執行中 sleep 1200 &
[4]+ 已停止 sleep 1300
[root@localhost ~]# fg %3
sleep 1200
^c //在這按ctrl+c
[root@localhost ~]# jobs
[4]+ 已停止 sleep 1300
[root@localhost ~]# fg %4
sleep 1300
^c //這裡也是一樣,按ctrl+c
[root@localhost ~]# jobs
[root@localhost ~]#
8、jobs命令的結果
bash簡單控制作業
2019獨角獸企業重金招聘python工程師標準 這兩天老是需要給產品出資料,結果要幾天算完乙個月的日誌,其中日誌有3中,那就是90個任務。由於伺服器只有16個cpu,所以自己寫了乙個小指令碼,每次啟動10個計算任務,知道90個任務都計算完畢。for i in seq 1 90 do workers...
LInux C程序控制作業 2
編寫程式實現以下功能 1,在父程序中定義變數n,在子程序中對變數n進行 操作 並且列印變數n的值,列印子程序pid 2,在父程序中列印變數n的值,並且列印父程序pid。3,要求分別用fork和vfork建立子程序。vfork include include include include inclu...
RHEL 8 0 DAY3 4 控制作業
控制作業 當乙個前端作業開始的時候,只要這個程序不終止,我們就無法在上面做其他事情了 像這種情況,可以把這個程序放到終端後面去 可以用jobs檢視 可以看到,這個程序在running 這樣就可以在前端做其他事情 還有ctrl z 它並不是讓程式在後端執行,而是把程式停止然後放在後端 kill結束後端...