天天看點

bg和fg指令(整理)以及 Linux中Ctrl+C、Ctrl+D等按鍵操作&程序相關指令

fg(前台執行) frontground

bg(背景執行) background

linux提供的fg和bg指令,可以讓我們輕松排程正在運作的任務

假如你發現運作的一個程式需要很長的時間,但是需要幹别的事情,你就可以用ctrl-z挂起這個程式,然後可以看到系統的提示:

[1]+ Stopped /root/bin/rsync.sh

然後我們可以把程式排程到背景執行:(bg 作業号)

#bg 1

[1]+ /root/bin/rsync.sh &

(fg指令不加參數時,使用效果就是讓剛才最近被你挂起的程序傳回前台執行)

用jobs指令檢視任務

#jobs

[1]+ Running /root/bin/rsync.sh &

把它調回到控制台運作

#fg 1

/root/bin/rsync.sh

這樣,你這控制台上就隻有等待這個任務完成了。

fg、bg、jobs、&、 ctrl+z都是跟系統任務有關的,學會了相當的實用

一、&最經常被用到

這個用在一個指令的最後,可以把這個指令放到背景執行

二、ctrl + z (挂起) Ctrl+c (強制中斷) Ctrl+d

ctrl + z 可以将一個正在前台執行的指令放到背景,并且暫停

Ctrl+c和ctrl+z都是中斷指令,但是他們的作用卻不一樣.

Ctrl+c是強制中斷程式的執行。

Ctrl+z的是将任務中斷,但是此任務并沒有結束,他仍然在程序中他隻是維持挂起的狀态。

例如:當你vi一個檔案時,如果需要用shell執行别的操作,但是你又不打算關閉vi,因為你得存盤推出,你可以簡單的按下Ctrl+z,shell會将vi程序挂起~,當你結束了那個shell操作之後,你可以用fg指令繼續vi你的檔案。

Ctrl+d 不是發送信号,而是表示一個特殊的二進制值,表示 EOF。

鍵盤和shell的互動:

Ctrl-c Kill foreground process 常用

Ctrl-z Suspend foreground process

Ctrl-d Terminate input, or exit shell 常用 有時也會使程式退出,例如沒有參數的cat指令,從終端讀一行顯示一行,知道Ctrl+D終結輸入并終結程序

Ctrl-s Suspend output

Ctrl-q Resume output

Ctrl-o Discard output

Ctrl-l Clear screen

控制字元都是可以用(stty指令)更改的。可以用stty -a看看終端配置。

但實驗指導書中:我們可以通過鍵盤發鍵盤中斷信号來喚醒

pctl 父子程序繼續執行,輸入 ctrl+c

三、jobs

檢視目前有多少在背景運作的指令

四、fg

将背景中的指令調至前台繼續運作

如果背景有多個指令,可以用fg %jobnumber将選中的指令調出,%jobnumber是通過jobs指令查到的背景正在執行的指令的序号(不是pid)

五、bg

将一個在背景暫停的指令,變成繼續執行

如果背景有多個指令,可以用bg %jobnumber将選中的指令調出,%jobnumber是通過jobs指令查到的背景正在執行的指令的序号(不是pid)

總結:

一般指令在前台執行(fg),執行完畢後,控制傳回給使用者。

在指令後面加上&,它會在背景執行(bg),并将特殊的環境變量$!設定為該任務的程序ID。這時shell可以并發執行其他指令。

按Ctrl+z可以挂起前台運作的程式

挂起的程式可以用fg恢複到前台,或者用bg恢複到背景

背景程式試圖寫入資料到終端裝置時(與寫入标準輸出不同)可能被阻塞。

shell可以等待一個背景任務執行完成,隻需使用wait指令,加上程序ID或者任務序号;也可以等待所有的背景任務,隻需使用不加參數的wait

程序管理

Bash有兩種執行指令的模式:批處理模式、并發模式。

要以批處理模式執行指令(即按照順序),必須用;分隔

command1 ; command2

eg: mkdir demo ; cd demo

[[email protected] demo]$

在這個例子中,當command1執行完畢,即執行command2

要并發執行兩個指令,它們必須用&分隔

command1 & command2

在這種情況下,command1 在背景執行(通過&),進而立即将控制傳回到shell,以執行command2

參考來源:

https://www.cnblogs.com/suixingc/p/shell-zhong-defg-ming-ling.html

https://www.cnblogs.com/chjbbs/p/6307333.html

https://blog.csdn.net/qq_42914528/article/details/81913482

https://blog.csdn.net/hellocsz/article/details/82085761

繼續閱讀