多任務處理:後台進程和前台進程

作為一個多任務操作系統, Linux支持在後台執行許多進程(基本上是程序或命令或類似任務),同時繼續在前台工作。

前台進程

前台進程是您直接運行並等待它完成的任何命令或任務。 某些前台進程顯示某種類型的用戶界面支持正在進行的用戶交互,而另一些則執行任務並在完成該任務時“凍結”計算機。

在shell中,前台進程通過在提示符處鍵入命令開始。 例如,要查看活動目錄中的文件的簡單列表,請鍵入:

$ ls

你會看到文件列表。 在計算機準備並打印該列表時,您無法從命令提示符執行其他任何操作。

後台進程

與前台進程不同, shell在運行更多進程之前不必等待後台進程結束。 在可用內存量的限制範圍內,您可以一個接一個地輸入許多後台命令。 要將命令作為後台進程運行,請鍵入該命令,並在該命令的末尾添加空格和連字符。 例如:

$ command1&

當用命令&符號發出命令時,shell將執行該工作,但不會讓您等待命令完成,而是立即返回到shell,您將看到shell提示符(%for C Shell和$ Bourne Shell和Korn Shell)返回。 此時,您可以為前景或後台進程輸入另一個命令。 後台作業以較低的優先級運行到前台作業。

當後台進程完成運行時,您將在屏幕上看到一條消息。

在進程之間切換

如果前台進程花費的時間過長,請按CTRL + Z停止它。停止的作業仍然存在,但其執行已暫停。 要恢復作業,但在後台輸入bg將停止的作業發送到後台執行。

要在前台恢復暫停的進程,請鍵入fg ,該進程將接管活動會話。

要查看所有掛起的進程的列表,請使用jobs命令,或使用top命令顯示CPU佔用率最高的任務的列表,以便掛起或停止它們以釋放系統資源。

外殼與GUI

多任務的工作方式有所不同,具體取決於您是使用shell還是圖形用戶界面進行工作 。 來自shell的Linux僅支持每個虛擬終端一個活動的前台進程。 然而,從用戶的實際角度來看,一個窗口化的環境(例如,帶有桌面的Linux,而不是基於文本的shell)支持多個活動窗口,這些活動窗口有效地用作多個同時的前台進程。 實際上,幕後的Linux會調整GUI中進程的優先級,以提高系統穩定性並支持最終用戶處理。