linux bg fg jobs命令學習

2021-09-01 19:51:24 字數 2185 閱讀 1874

為了方便使用者進行任務管理和控制,linux提供了bg/fg/jobs這幾條命令來輕鬆排程任務。

從以下命令執行來看,可以知道bg/fg/jobs這幾條命令都是linux shell的特殊內建命令。

所以在執行bg/fg/jobs這幾條命令時,當前shell能夠自己解釋而不需要額外建立兩個

child process來完成這件事。

$ which bg

$ which fg

$ which jobs

$ whereis bg

bg:$ whereis fg

fg:$ whereis jobs

jobs:

$ type bg

bg is a shell builtin

$ type fg

fg is a shell builtin

$ type jobs

jobs is a shell builtin

當你在linux shell下執行一條很耗時的命令或程式時,

比如使用grep命令全盤遞迴搜尋"strlen"這個字串,

$ grep -nrws "strlen" ./

這可能會導致linux shell被占用很長時間,而此時如果使用者想要使用shell做另外一件事,

難道必須要等到上一件事做完?

針對這個問題,有兩種對應的辦法:

1. 使用組合鍵ctrl+z將當前shell中正在進行的任務丟到後台並暫停執行,這時使用者

可以重新得到shell;

^z[1]+ stopped grep --color -nrws "wpa_supplicant" ./

2. 在執行耗時的任務時,將任務直接放到後台執行,

$ grep -nrws "strlen" ./ &

這樣任務就一直會在後台執行。

問題1:使用的是grep命令,可是ctrl+z暫停之後為什麼是grep --color?

猜測可能是別名的原因,使用alias命令檢視:

$ alias

...alias grep='grep --color'

...果然如猜測那樣。關於alias命令,可以參考下面這篇博文:

2. 如何確認後台中有哪些任務?

使用jobs命令可以檢視後台中的任務:

$ jobs

[1]- stopped grep --color -nrws "wpa_supplicant" ./

[2] running grep --color -nrws "wpa_supplican" ./

其中1/2是jobid,使用者可以根據jobid來控制指定的任務執行。

請特別注意,jobid與pid是兩個完全不相關的東西。

3. 後台正在執行的任務可以被暫停嗎?

ctrl+z無法暫停後台正在執行的任務。使用者可以先將任務放到前台,再使用ctrl+z

將其暫停並放入後台。

$ fg 2

grep --color -nrws "wpa_supplican" ./

^z[2] stopped grep --color -nrws "wpa_supplican" ./

$ jobs

[1]- stopped grep --color -nrws "wpa_supplicant" ./

[2]+ stopped grep --color -nrws "wpa_supplican" ./

4. 如何執行暫停在後台的任務?

如果你希望繼續在後台執行任務,使用bg命令並指定jobid,

$ bg 2

[2]+ grep --color -nrws "wpa_supplican" ./

如果你希望將後台任務(包括正在執行的任務和暫停的任務)放到前台執行,

使用fg命令並指定jobid,

$ fg 2

grep --color -nrws "wpa_supplican" ./

此時shell就被你的前台任務占領了。

曾經遇到過乙個問題:

1. 我的程式修改了一些環境變數比如path/ld_library_path等,然後將其執行在前台;

2. 使用ctrl+z將我的程式暫停並放入後台;

3. 在shell下面測試已經暫停的程式。

會出現因為找不到shared library從而導致程式無法執行等問題。

後來經過確認發現,原來是因為前後臺的環境(環境變數不一樣所導致)不一樣引起的。

Tcl TK之命令 命令 命令

在tcl中,一切動作都是通過命令實現的,命令通過換行符或分號隔開,對於使用過linux系統的朋友來說非常容易理解。tcl處理一條命令分為兩個步驟 解析和執行。下面將列舉幾個常見的命令 set命令用於建立 讀取和修改變數,此命令需要乙個或者兩個引數。第乙個引數是變數,第二個引數 若給出 是變數的新值。...

source 命令 命令

source 命令 從 c shell 而來 是 bash shell 的內建命令。點命令 就是乙個點符號.從 bourne shell 而來 是 source 的另一名稱。這兩個命令都以乙個指令碼檔名為引數,該指令碼將作為當前 shell 的環境執行,即不會啟動乙個新的子程序。所有在指令碼中設定的...

監控命令命令

第1行結果和uptime一樣 第2行顯示程序狀態統計,zombie 殭屍程序 第3行顯示cpu使用率,us 使用者使用cpu百分比 sy 系統使用cpu百分比 id cpu空閒百分比 第4 5行顯示記憶體 平均使用率和每個cpu使用率 小技巧 按z加顏色,按x高亮排序列,按 進行排序列左右切換 安裝...