Linux 控制作業(管理)

2022-09-06 20:24:12 字數 4273 閱讀 5261

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結束後端...