大數據講課筆記1.4 進程管理

文章目錄

  • 零、學習目標
  • 一、導入新課
  • 二、新課講解
    • (一)進程概述
      • 1、基本概念
      • 2、三維度看待進程
      • 3、引入多道編程模型
        • (1)CPU利用率與進程數關系
        • (2)從三個視角看多進程
      • 4、進程的產生和消亡
        • (1)進程的產生
        • (2)進程的消亡
      • 5、進程三種狀態
      • 6、進程ID(PID)
      • 7、終端設備類類型
        • (1)TTY(TeleTYpewriter)
        • (2)PTY(Pseudo-TTY)
    • (二)查看進程
      • 1、進程查看命令 - ps
        • (1)命令作用
        • (2)參數說明
        • (3)操作案例
      • 2、Linux進程狀態
      • 3、觀察進程變化命令 - top
        • (1)命令作用
        • (2)參數選項
        • (3)操作案例演示
      • 4、查看進程樹命令 - pstree
        • (1)命令概述
        • (2)安裝pstree
        • (3)參數說明
        • (4)操作案例演示
    • (三)殺死進程 - kill命令
      • 1、命令作用
      • 2、參數說明
      • 3、操作案例演示
    • (四)系統資源監控
      • 1、free命令
      • 2、uname命令
      • 3、uptime命令
      • 4、netstat命令
      • 5、vmstat命令
    • (五)任務管理
      • 1、前臺進程
      • 2、后臺進程
      • 3、前后臺切換
      • 4、操作案例演示
  • 三、歸納總結
  • 四、上機操作

零、學習目標

  1. 查看進程與殺死進程
  2. 系統資源監控
  3. 任務管理

一、導入新課

  • 在Linux系統中,進程是執行中的程序實例。我們需要學會如何查看和管理這些進程,以便更好地了解系統的運行狀態,并進行必要的調整和優化。此外,我們還需要學會如何監控系統的資源使用情況,以便及時發現并解決可能出現的問題。通過學習本節的內容,我們將能夠熟練地使用各種命令行工具來查看和管理進程、監控系統資源以及進行任務管理,從而提高我們的工作效率和系統的穩定性。

二、新課講解

在這里插入圖片描述

  • 在Linux系統中,進程管理是一項非常重要的任務。通過掌握進程管理的相關知識和技能,我們可以更好地監控系統的運行狀態,及時發現并解決問題,從而提高工作效率和系統的穩定性。
  • 本節我們將學習如何查看和管理進程、如何進行系統資源監控以及如何進行任務管理。首先,我們將介紹進程的基本概念和模型,包括進程的產生和消亡、三狀態以及進程ID等。接下來,我們將學習如何使用各種命令行工具來查看進程、殺死進程以及監控系統資源。最后,我們將學習如何管理和控制前臺和后臺進程,并通過一些操作案例來加深理解和應用。
  • 總之,通過學習本節的內容,我們將能夠更好地理解和掌握Linux系統中的進程管理,從而更加熟練地使用這些基本的命令行工具來完成各種常見的文件和目錄操作任務。

(一)進程概述

  • 在計算機系統中,進程是操作系統進行資源分配和調度的基本單位。本節我們將從基本概念、三維度看待進程模型、進程的產生和消亡以及進程的三種狀態等方面對進程進行概述。

1、基本概念

  • 進程 = 程序 + 執行。在計算機系統中,進程是指正在運行的程序實例。當一個程序被加載到內存中并開始執行時,就會創建一個新的進程。每個進程都有自己的地址空間,并且可以獨立地進行計算和處理任務。
  • 簡單來說,進程就是程序與CPU運算的結合體。當我們把一個程序從磁盤中加載到內存中后,CPU就開始對這個程序進行運算和處理。此時,我們可以說這個程序變成了一個進程。進程是操作系統進行資源分配和調度的基本單位,它能夠獨立地進行計算和處理任務,從而實現多道編程,提高CPU的利用率。

2、三維度看待進程

(1)內存維度:每個進程都獨占一塊地址空間,CPU處理進程實際上就是處理這個進程內存中的數據信息。這意味著,當一個進程正在執行時,它所占用的內存是不能被其他進程訪問的。
(2)執行的邏輯維度:每一個進程都可以被CPU所處理和計算,此外,每一個進程也可以掛起,讓其他進程得以處理。在同一個時刻,只能有一個進程被cpu所處理。這意味著,雖然操作系統可以同時運行多個進程,但是在微觀上,這些進程是按照順序依次被執行的。因此,在單核架構下,進程模型實際上是“串行”處理的。然而,在多核架構下,進程模型可以在宏觀和微觀上都是并行處理的。
(3)時間維度:每個進程執行一段時間之后,肯定都完成了一定的工作量。即進程是隨時間向前推進的。這意味著,進程是在不斷變化和發展中的,而不是靜態不變的。

  • 進程讓每個用戶感覺自己獨占CPU:在計算機系統中,進程是指正在運行的程序實例。當一個程序被加載到內存中并開始執行時,就會創建一個新的進程。每個進程都有自己的地址空間,并且可以獨立地進行計算和處理任務。由于每個進程都獨占一塊地址空間,因此CPU在處理進程時實際上是處理這個進程內存中的數據信息。這意味著,即使多個用戶同時使用同一臺計算機,他們各自的進程也可以各自獨立地進行計算和處理任務,從而讓用戶感覺像是自己獨占了CPU一樣。此外,在多道編程模型下,操作系統會將多個進程分配到不同的處理器核心上,并且在宏觀上是并行處理的。因此,即使在同一時刻有多個進程在運行,用戶仍然可以感覺到自己的進程得到了及時的響應和處理,就像是自己獨占了CPU一樣。
    在這里插入圖片描述

3、引入多道編程模型

(1)CPU利用率與進程數關系
  • CPU利用率與進程數關系圖
    在這里插入圖片描述
  • 在計算機系統中,進程是指正在運行的程序實例。操作系統可以同時處理多個進程,這就是多道編程模型。而在最開始的操作系統中,采用的是單道編程模型,即一個程序處理完,再處理下一個程序。
  • 單道編程模型的缺點是響應時間慢和CPU利用率非常低。例如,假設一個進程中有20%需要做CPU運算,80%在做IO(發送IO事件時,CPU時閑置的),那么CPU利用率就是20%。而采用單道編程模型,CPU利用率只能達到1-0.8=20%。
  • 為了提高CPU的利用率,引入了多道編程模型。多道編程模型可以讓操作系統同時處理多個進程,從而提高了CPU的利用率。例如,同時執行兩個進程,CPU利用率可以達到1-0.8×0.8=36%;同時執行三個進程,CPU利用率可以達到1-0.8×0.8×0.8=48.8%。
  • 因此,引入進程模型的目的就是為了滿足多道編程,而多道編程的目的就是為了提高CPU的利用率。隨著進程數量的增加,CPU的利用率也會逐步提高。
(2)從三個視角看多進程
  • 物理視角、邏輯視角和時序視角
    在這里插入圖片描述
  • 物理視角:從物理資源分配的角度看多進程。每個進程都有自己的獨立內存空間,包括代碼段、數據段和堆棧段等。操作系統為每個進程分配相應的物理資源,并通過虛擬內存管理技術實現進程之間的隔離。這樣,即使多個進程同時運行,它們也不會相互干擾。
  • 邏輯視角:從邏輯執行順序的角度看多進程。在多進程系統中,多個進程可以并發地執行,即在同一時間內有多個進程處于運行狀態。然而,由于單個處理器只能執行一個指令流,所以實際上這些進程是交替執行的。操作系統通過調度算法決定哪個進程應該獲得CPU并進行計算,從而實現了并發執行的效果。
  • 時序視角:從時間軸上看多進程。在一個時間段內,多個進程按照一定的順序執行。這種順序可能受到許多因素的影響,如優先級、等待I/O操作的時間、系統的負載情況等。操作系統會根據這些因素調整進程的執行順序,以達到最優的性能和響應速度。
  • 總結來說,物理視角關注的是資源分配,邏輯視角關注的是執行順序,而時序視角關注的是時間軸上的進程行為。理解這三個視角有助于我們更好地理解和控制多進程系統的行為。

4、進程的產生和消亡

(1)進程的產生
  • 操作系統產生服務進程:操作系統在啟動時會創建一些必要的服務進程,如網絡服務、文件系統服務等。
  • 父進程創建子進程:一個已經存在的進程可以創建一個新的進程,這個新進程被稱為子進程。父進程和子進程共享相同的代碼和數據空間,但擁有不同的堆棧和寄存器狀態。
  • 用戶請求創建一個進程:用戶可以通過執行程序或命令來創建一個新的進程。例如,在Linux系統中,用戶可以通過輸入./program_name來運行一個程序,并創建一個新的進程。
(2)進程的消亡
  • 進程的所有運算都處理完之后,自行退出:當一個進程完成所有運算并返回結果后,它將自動退出。這是正常情況下進程結束的方式。
  • 進程在運行過程中產生錯誤或異常而強行退出:如果一個進程在運行過程中發生了錯誤或異常,操作系統可能會終止該進程。這通常會導致進程的資源被釋放,以便其他進程使用。
  • 一個進程被其他進程所殺死而退出:在一個多任務系統中,一個進程可以被另一個進程殺死。這種情況下,被殺死的進程將立即停止執行,并釋放其占用的資源。

5、進程三種狀態

  • 進程有三種狀態:執行態(Running)就緒態(Ready)阻塞態(Blocking)。在執行態,一個進程正在被CPU運行;在就緒態,一個進程已經準備好被執行,但還沒有被分配到CPU上;在阻塞態,一個進程由于某些原因無法繼續執行,需要等待某種條件滿足才能恢復執行。
  • 對于掛起態,它可能是由于發生了某些阻塞操作,比如I/O事件。例如,當一個進程需要從磁盤讀取數據時,它會進入阻塞態,直到數據被讀取完畢。此外,一個進程也可能會主動掛起自己,以便讓其他進程得以處理。例如,一個長時間運行的進程可能會主動掛起自己,以避免占用過多的CPU資源。最后,用戶也可以主動將進程掛起,比如使用sleep操作來暫停進程的執行。
  • 需要注意的是,對于第一類和第三類掛起的進程,即使把CPU讓給這個進程,CPU也無法處理它,因此我們將這樣的進程稱為阻塞態進程。而第二類進程,我們稱之為就緒態進程,因為它們已經準備好被執行,只需要被分配到CPU上就可以開始執行。
  • 進程三狀態轉換圖
    在這里插入圖片描述
  • 創建態 → 就緒態:當一個進程被創建時,它會進入創建態,然后經過初始化后,如果所有必要的資源都可用,則變為就緒態。
  • 就緒態 → 運行態:當CPU從系統中的就緒隊列選擇一個進程進行執行時,該進程的狀態將從就緒態變為運行態。
  • 運行態 → 就緒態:當一個正在運行的進程的時間片用完或者被高優先級的進程搶占時,它的狀態將從運行態變為就緒態。
  • 運行態 → 阻塞態:當一個運行中的進程請求某種I/O操作或其他資源而不能立即得到滿足時,它的狀態將從運行態變為阻塞態。
  • 阻塞態 → 就緒態:當導致進程阻塞的事件發生并且相關資源變得可用時,進程的狀態將從阻塞態變為就緒態。
  • 任何狀態 → 終止態:當一個進程完成其工作或者遇到錯誤需要退出時,它可以從任何狀態直接進入終止態。

6、進程ID(PID)

  • 在Linux中,進程啟動時,操作系統會為其分配一個唯一的進程ID(PID)。這個PID用于標識系統中的每一個進程。通過執行命令ps -aux,可以查看系統中所有正在運行的進程及其詳細信息。
  • 執行命令:ps -aux,查看進程詳情
    在這里插入圖片描述

7、終端設備類類型

  • TTY和PTY是計算機術語,用于描述終端設備的類型。
(1)TTY(TeleTYpewriter)
  • TTY最初是指一種電傳打字機設備,它通過串行線路發送和接收數據。在現代計算機系統中,TTY通常用來指代任何類型的字符設備,如控制臺、偽終端等。TTY設備可以直接與操作系統進行交互,通常用于登錄、命令行界面和其他文本輸入輸出操作。
(2)PTY(Pseudo-TTY)
  • PTY也稱為虛擬終端或偽終端,是一種軟件模擬的TTY設備。PTY允許在一個進程之間創建一個“啞”終端,使得該進程可以像真正的TTY設備一樣工作。這使得一個程序可以在沒有實際物理TTY設備的情況下與另一個程序進行交互,例如遠程登錄到另一臺機器上時使用的SSH協議就是一個例子。

  • 簡單來說,TTY是硬件上的字符設備接口,而PTY是軟件模擬的TTY設備。

(二)查看進程

  • 在Linux操作系統中,進程管理是系統管理員和開發者必須掌握的重要技能之一。通過有效的進程監控和管理,可以確保系統的穩定運行和資源的有效利用。本節將介紹一些常用的進程查看命令,包括pstoppstreeps命令用于查看某個時間點的程序運作情況,能夠獲取關于進程的詳細信息,如PID、CPU使用率、內存使用量等。而top命令則可以實時地觀察到進程的變化,顯示了當前系統中各個進程的資源占用狀況。此外,pstree命令則能以樹狀結構展示進程之間的關系,幫助我們更好地理解系統的運行狀態。通過學習和掌握這些命令的使用,我們將能夠更加有效地管理和優化我們的Linux系統。

1、進程查看命令 - ps

  • ps: process status
(1)命令作用
  • ps命令用于查看某個時間點的程序運作情況,能夠獲取關于進程的詳細信息,如PID、CPU使用率、內存使用量等。
(2)參數說明
參數作用
a和輸入終端關聯的所有進程,通常與x一起使用,列出完整信息。
x后臺進程,通常與a 這個參數一起使用,可列出較完整信息
u有效使用者相關的進程
(3)操作案例
  • 執行命令:ps la | head -5,能夠觀察所有系統的數據
    在這里插入圖片描述
  • 執行命令:ps axjf | head -20,連同部分程序樹狀態
    在這里插入圖片描述
  • 執行命令:ps l僅查看自己的bash相關的進程
    在這里插入圖片描述
  • 執行命令:ps aux觀察系統所有進程
    在這里插入圖片描述
    在這里插入圖片描述
屬性含義
USER進程使用者
PID進程標識符
%CPU進程使用掉的CPU 資源百分比
%MEM進程所占用的物理內存百分比
VSZ進程使用掉的虛擬內存量(KBytes)
RSS進程占用的物理的內存量(KBytes)
TTY進程在哪個終端機上面運作,若與終端機無關則顯示?, 另外, tty1-tty6 是本機上面的登入者程序,若為pts/0 等等的,則表示為由網絡連接進主機的程序
STAT進程目前的狀態,狀態顯示與ps -l 的S旗標相同(R/S/D/T/Z)
START進程被觸發啟動的時間
TIME進程實際使用CPU運作的時間
COMMAND進程的實際命令

2、Linux進程狀態

狀態值含義
R (TASK_RUNNING)指正在被CPU運行或者就緒的狀態(在run_queue隊列里的狀態)
S (TASK_INTERRUPTIBLE)可中斷的睡眠狀態,處于等待狀態中的進程,一旦被該進程等待的資源被釋放,那么該進程就會進入運行狀態
D (TASK_UNINTERRUPTIBLE)不可中斷的睡眠狀態,該狀態的進程只能用wake_up()函數喚醒。
T (TASK_STOPPED / TASK_TRACED)當進程收到信號SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU時就會進入暫停狀態。可向其發送SIGCONT信號讓進程轉換到可運行狀態。
Z (TASK_DEAD -EXIT_ZOMBIE)僵尸進程:當進程已經終止運行,但是父進程還沒有詢問其狀態的情況。不可被kill,即不響應任務信號,無法用SIGKILL殺死。

3、觀察進程變化命令 - top

(1)命令作用
  • top命令則可以實時地觀察到進程的變化,顯示了當前系統中各個進程的資源占用狀況。
(2)參數選項
選項含義
-d后面可以接秒數,就是整個程序畫面更新的秒數;默認5秒。
-b以批次方式執行top,還有更多參數可以使用,通常會搭配數據流重導向來將批次的結果輸出成為檔案。
-n與-b 搭配,作用是需要進行幾次top的輸出結果。
-p指定某些個PID 來進行觀察監測。
(3)操作案例演示
  • 執行命令:top -d 3,每隔三秒更新一次數據
    在這里插入圖片描述
  • 執行命令:top -b -n 2,進行兩次top的輸出結果
    在這里插入圖片描述
    在這里插入圖片描述

4、查看進程樹命令 - pstree

(1)命令概述
  • pstree命令是一個在Linux系統中用于查看進程樹的實用工具。這個命令可以清晰地展示各個進程之間的關系,包括哪個進程是父進程,哪個是子進程。通過使用pstree命令,用戶能夠直觀地了解到哪些進程是由哪些進程創建的。

  • 在Linux操作系統中,所有的進程構成了一棵進程樹。這棵樹的根就是PID(進程標識符)為1的init進程。每個進程都可以有多個子進程,而這些子進程又可以有自己的子進程,從而形成了一個樹狀結構。pstree命令就是用來顯示這個進程樹的。

  • 總的來說,pstree命令提供了一個簡單且易于理解的方式來查看和理解Linux系統中的進程層次結構。

(2)安裝pstree
  • 執行命令:pstree,報錯找不到命令,說明CentOS7默認沒有安裝pstree
    在這里插入圖片描述
  • 執行命令:yum -y install psmisc
    在這里插入圖片描述
(3)參數說明
參數含義
-A各進程樹之間的連接以 ASCII 碼字符來連接
-U各進程樹之間的連接以 utf8 字符來連接,某些終端可能會有錯誤
-p同時列出每個進程的 PID
-u同時列出每個進程的所屬賬號名稱
(4)操作案例演示
  • 執行命令:pstree
    在這里插入圖片描述
  • 執行命令:pstree -Aup
    在這里插入圖片描述

(三)殺死進程 - kill命令

1、命令作用

  • kill命令在Linux和其他類Unix系統中用于發送一個信號給一個或多個進程。這個命令通常用來終止(殺死)一個運行中的程序,但也可以用來暫停、恢復或者更改進程的行為。

2、參數說明

  • kill命令可以接收一些選項,比如-s用于指定要發送的信號類型,-p用于列出指定進程的進程號,等等。如果不指定信號類型,默認會發送SIGTERM信號,這是請求進程優雅地關閉自己的一種方式。如果進程不響應,你可能需要發送更強制的信號,如SIGKILL(-9),這將立即結束進程,無法被忽略或捕獲。
參數函數
-l這個是L的小寫,列出目前kill 能夠使用的信號(signal)有哪些? signal 向進程發送的信號,指示其進行不同操作。用man 7 signal 可知。
-15以正常的程序方式終止一個進程!!!
-9立刻強制終止一個進程!!!
-2代表由鍵盤輸入[Ctrl + C] 同樣的動作
-1對于sshd這樣的守護進程,重新讀取一次參數的配置文件(類似reload),如果進程為非守護進程,默認為終止進程

3、操作案例演示

  • 執行命令:pstree -aup | grep sshd
    在這里插入圖片描述

  • 用參數-1來殺910進程,執行命令:kill -1 910
    在這里插入圖片描述

  • 說明沒有殺死sshd進程,又重新加載了

  • 用參數-9來殺死這個守護進程sshd,執行命令:kill -9 910
    在這里插入圖片描述

  • 啟動firewalld進程并查看其進程樹
    在這里插入圖片描述

  • 問題:父進程被kill掉,它的子進程是否就一起被kill掉?
    在這里插入圖片描述

  • 結論:父進程被kill掉了,但是其子進程還依然存在。

  • 如果任務是殺死所有用戶的firewalld進程,那么就需要多次發布kill命令,很煩的,怎么辦呢?Linux提供了一個很好的命令:killall。

  • 利用killall命令殺死所有用戶的firwalld進程
    在這里插入圖片描述

(四)系統資源監控

  • 系統資源監控是計算機系統管理的重要組成部分。它可以幫助我們了解系統的運行狀態,發現潛在的問題,并及時采取相應的措施進行優化和調整。本文將介紹幾個常用的系統資源監控命令,包括觀察內存使用情況的free命令,查閱系統與核心相關信息的uname命令,觀察系統啟動時間與工作負載的uptime命令,網絡狀態監控的netstat命令,以及偵測系統資源變化、CPU/內存/磁盤輸入輸出狀態的vmstat命令。通過這些命令的使用,我們可以更好地掌握系統的運行狀況,確保系統的穩定性和效率。對于運維人員來說,熟練掌握這些工具的使用方法是非常重要的。

1、free命令

  • free命令是Linux系統中的內存管理工具,用于顯示系統的物理內存、交換空間和內核緩沖區的使用情況。通過指定選項,可以以字節、千字節、兆字節或吉字節為單位顯示內存信息,并可以選擇定時刷新輸出結果。此外,free還可以提供總內存、已用內存、空閑內存、緩沖/緩存內存以及可用內存等詳細信息,幫助用戶了解系統內存使用狀況。
選項說明
-b以字節為單位顯示內存使用情況。
-k以千字節(KB)為單位顯示內存使用情況。
-m以兆字節(MB)為單位顯示內存使用情況。
-g以吉字節(GB)為單位顯示內存使用情況。
-o不進行刷新操作。
-s delay每隔指定秒數刷新輸出結果。
-t顯示內存總和行。
-V顯示版本信息。
  • 執行命令:free - mt,觀察內存(memory)使用情況
    在這里插入圖片描述
  • 總內存(total):系統的物理內存總量。
  • 已用內存(used):已被程序使用的物理內存。
  • 空閑內存(free):未被程序使用的物理內存。
  • 緩沖/緩存內存(buff/cache):系統用于緩沖和緩存數據的內存,這部分內存可以被其他程序快速復用。
  • 可用內存(available):可供當前運行的程序立即使用的內存總量,包括空閑內存和部分已用內存。

2、uname命令

  • uname命令是Linux系統中用于查看系統信息的實用工具,可以顯示操作系統的名稱、版本號、主機名、處理器架構等關鍵信息。通過使用不同的選項參數,用戶可以獲取到特定的系統屬性,例如內核名稱、操作系統發行版和機器類型等。uname命令對于系統管理員進行故障排查、軟件安裝或硬件兼容性檢查等工作非常有用。
選項說明
-a 或 --all顯示所有系統信息
-s 或 --kernel-name輸出內核名稱
-n 或 --nodename輸出網絡節點主機名
-r 或 --kernel-release輸出內核發行版本號
-v 或 --kernel-version輸出內核版本信息
-m 或 --machine輸出機器類型(硬件平臺)
-p 或 --processor輸出處理器類型
-i 或 --hardware-platform輸出硬件平臺
-o 或 --operating-system輸出操作系統名稱
  • 執行命令:uname -a
    在這里插入圖片描述
  • Linux:操作系統的名稱
  • ied:主機名(網絡節點名)
  • 3.10.0-1160.el7.x86_64:內核版本和發行版號。這個值包含了內核的主要版本號(3.10)、次要版本號(0)、補丁級別(1160)、發行版標識(el7)以及硬件架構(x86_64)。
  • #1 SMP Mon Oct 19 16:18:59 UTC 2020:編譯內核時的時間戳、SMP(對稱多處理)標志以及時區(UTC)。這個值表示了內核構建的具體日期和時間。
  • x86_64 x86_64 x86_64:機器類型和處理器架構。這里的三個x86_64分別代表系統類型、硬件平臺和處理器類型。
  • 通過這些信息,用戶可以了解系統的操作系統、內核版本、硬件平臺等關鍵屬性,這對于軟件安裝、硬件兼容性檢查或故障排查等工作非常有用。

3、uptime命令

  • uptime命令是Linux系統中用于查看系統運行時間和負載信息的工具。它會顯示當前時間、系統已經運行的時間、在線用戶數量以及系統負載情況(過去1分鐘、5分鐘和15分鐘內的平均負載)。通過使用uptime,用戶可以了解系統的運行狀況和性能表現,對于系統管理員進行監控和故障排查非常有用。
  • 執行命令:uptime
    在這里插入圖片描述
  • 23:56:08:當前系統時間
  • up 16 min:系統已經運行了16分鐘
  • 2 users:當前有2個用戶在線
  • load average: 0.09, 0.16, 0.10:過去1分鐘、5分鐘和15分鐘內的平均負載。這個值表示在特定時間內CPU正在處理的任務數(包括等待CPU時間的任務)。理想情況下,這些值應該接近或略低于系統中的處理器核心數量。
  • 通過這些信息,用戶可以了解系統的運行時間和負載狀況,有助于判斷系統的性能表現和穩定性。

4、netstat命令

  • netstat命令是Linux系統中用于顯示網絡連接、路由表、接口統計等網絡信息的工具。它可以幫助用戶了解當前系統中的網絡狀態,包括活動的TCP和UDP連接、監聽的端口以及網絡接口的狀態等。通過使用不同的選項參數,用戶可以獲取到特定的網絡屬性,例如查看所有活動連接(-a)、顯示監聽的TCP和UDP端口(-l)或查看路由表信息(-r)。netstat對于網絡管理和故障排查非常有用。
  • CentOS7默認沒有安裝netstat,需要自行安裝
  • 執行命令:yum -y install net-tools
    在這里插入圖片描述
  • 執行命令:netstat -atp
    在這里插入圖片描述
  • 執行命令:netstat -antp
    在這里插入圖片描述
  • 執行命令:netstat -lntp
    在這里插入圖片描述

5、vmstat命令

  • vmstat命令是Linux系統中用于顯示虛擬內存統計信息的工具。它可以幫助用戶了解系統的資源使用情況,包括CPU、內存、I/O和進程狀態等。通過使用不同的選項參數,用戶可以獲取到特定的信息,例如查看每個核心的CPU使用率(-P ALL)、每兩秒刷新輸出結果(-S 2)或查看內存頁面交換情況(-s)。vmstat對于系統管理和性能分析非常有用。
  • 執行命令:vmstat 1 4,統計目前主機CPU狀態,每秒一次,共計四次
    在這里插入圖片描述

(五)任務管理

  • 任務管理是操作系統中一項重要的功能,它涉及到對前臺進程和后臺進程的管理和控制。前臺進程是指與用戶直接交互的進程,它們在當前終端上運行,并且可以接收用戶的輸入;而后臺進程是在后臺運行的進程,不直接與用戶交互,也不占用終端。通過學習如何操作前臺和后臺進程,我們可以更有效地利用系統資源,同時也能更好地進行多任務處理。本節將介紹如何切換前臺和后臺進程,查看后臺任務,以及如何終止和恢復后臺任務。這些知識對于Linux系統的使用者來說非常重要,尤其是那些需要在命令行環境中工作的開發者和技術人員。

1、前臺進程

  • 前臺進程是指與用戶直接交互的進程,它在當前終端上運行,并且可以接收用戶的輸入。當一個前臺進程正在運行時,該終端會被占用,不允許進行其他操作。例如,當你在一個終端窗口中打開文本編輯器或命令行程序時,它們就是前臺進程。

2、后臺進程

  • 后臺進程是在后臺運行的進程,不直接與用戶交互,也不占用終端。這些進程可以在用戶不再關注的情況下繼續執行任務,同時用戶可以在同一終端中啟動新的進程或進行其他操作。通常情況下,后臺進程不能接收來自終端的輸入。例如,你可能在后臺運行一個壓縮文件的任務,而不需要實時監控它的進度。
  • 要將一個進程置于后臺運行,通常需要在其后面加上"&"符號。例如,在Linux中,你可以使用command &來將命令command放在后臺執行。

3、前后臺切換

  • 切換前臺和后臺進程的方式取決于所使用的操作系統。在Unix-like系統中,可以通過按Ctrl+Z暫停前臺進程,然后使用bg或fg命令將其發送到后臺或恢復到前臺。在某些系統中,也可以通過jobs命令查看當前會話中的所有后臺作業。

4、操作案例演示

  • Ctrl+Z切換到后臺,或者執行命令:tail -F anaconda-ks.cfg &
    在這里插入圖片描述

  • 在當前bash執行多個任務
    在這里插入圖片描述

  • 觀察后臺任務,用jobs命令(后臺任務是一個任務棧,+表明該任務處于棧頂,發布fg命令,只有處于棧頂的后臺任務才能切換成前臺任務)
    在這里插入圖片描述

  • 執行命令:jobs -r # r: Running
    在這里插入圖片描述

  • 執行命令:jobs -s # s: Stopped
    在這里插入圖片描述

  • 執行命令:jobs -l,可以顯示后臺任務進程號
    在這里插入圖片描述

  • 三種任務狀態:Running, Stopped, Killed

  • 執行命令:pstree -aup,查看進程樹的sshd部分
    在這里插入圖片描述

  • 利用fg命令可以將后臺任務切換到前臺,注意每次發布fg命令,只能將處于任務棧頂的后臺任務(編號后是“+”的后臺任務)切換到前臺進行處理,然后棧頂的下一個任務就成為新的棧頂任務,其編號后的“-”就會變成“+”。

  • 發布一次fg命令
    在這里插入圖片描述

  • 進入末行模式,輸入q,不存盤退出。
    在這里插入圖片描述

  • 執行命令:jobs -l
    在這里插入圖片描述

  • 現在,執行fg命令之后,2768這個處于棧頂的后臺任務會變成前臺任務來處理,但是我們暫時不把該任務切換到前臺。我們試著殺死該后臺任務。

  • 停止作業:kill -15 2768
    在這里插入圖片描述

  • 事實表明,刪不掉vim作業,應該使用參數-9
    在這里插入圖片描述

  • 再次執行命令:fg
    在這里插入圖片描述

  • 小結:這個小結是對fg命令功能的簡要總結。fg命令是Linux和Unix系統中的一個常用命令,用于將后臺運行的任務切換到前臺繼續執行。在使用fg命令時,如果沒有指定作業編號,默認會將當前棧頂的作業(即最后一個被放入后臺的任務)調至前臺。通過反復使用fg命令,用戶可以按照自己的需要靈活地管理多個后臺任務,方便地進行多任務處理。此外,結合其他相關的命令如bg(將作業放到后臺運行)和jobs(查看后臺作業列表),用戶可以更好地控制和調度進程,提高工作效率。

三、歸納總結

  • 回顧本節課所講的內容,并通過提問的方式引導學生解答問題并給予指導。
  • 本節主要介紹了Linux系統中的進程管理,包括進程的基本概念、多道編程模型、進程的產生和消亡、進程狀態、進程ID以及終端設備類型。同時,還介紹了如何使用ps、top和pstree命令查看系統中的進程信息,如何使用kill命令結束一個或多個進程,以及如何使用free、uname、uptime、netstat和vmstat命令監控系統的內存使用、網絡連接、CPU負載和磁盤I/O等情況。此外,還介紹了前臺進程和后臺進程的概念,以及如何在前后臺之間切換,如何在bash中執行多個任務。

四、上機操作

  • 形式:單獨完成
  • 題目:完成進程管理
  • 要求:按照講課筆記完成顯示進程、殺死進程與作業前后臺切換任務

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215957.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215957.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215957.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

5V低壓步進電機驅動芯片GC6150,應用于攝像機,機器人 醫療器械等產品中。具有低噪聲、低振動的特點

GC6150是雙通道5V低壓步進電機驅動器,具有低噪聲、低振動的特點,特別適用于相機變焦對焦系統、萬向架、搖頭機等精度、低噪聲STM控制系統,該芯片為每個通道集成了一個256微步的驅動器。通過SPI & T2C接口,客戶可以方使地調整驅…

Python+Appium自動化測試之元素等待方法與重新封裝元素定位方法

在appium自動化測試腳本運行的過程中,因為網絡不穩定、測試機或模擬器卡頓等原因,有時候會出現頁面元素加載超時元素定位失敗的情況,但實際這又不是bug,只是元素加載較慢,這個時候我們就會使用元素等待的方法來避免這種…

C++ c_str()用法

標準庫的string類提供了3個成員函數來從一個string得到c類型的字符數組:c_str()、data()、copy(p,n)。 c_str()是Borland封裝的String類中的一個函數,它返回當前字符串的首字符地址。換種說法,c_str()函數返回一個指向正規C字符串的常量指針(…

下降路徑最小和/最小路徑和(dp問題)

1.狀態表示 2.狀態轉移方程 3.初始化 4.填表 從上往下 5.返回值 dp表最后一行的最小值 ------------------------------------------------------------------------------------------------------------------------------- 1.狀態表示 2.狀態轉移方程 3.初始化 4.填表 上…

【CVPR 2022】解讀 Controllable Animation of Fluid Elements in Still Images:光流法視頻生成

Diffusion Models視頻生成-博客匯總 前言:用戶輸入箭頭,就能讓圖像動起來,這是經典的Animating任務。CVPR 2022中的一篇經典論文《Controllable Animation of Fluid Elements in Still Images》使用光流法做這種image-to-video任務,很多做法值得借鑒,這篇博客詳細這篇論文…

【教程】app備案流程簡單三部曲即可完成

APP備案流程包括以下步驟: 1. 開發者實名認證:在提交備案申請之前,開發者需要通過移動應用開發平臺進行實名認證。這個步驟需要提供身份證號碼、姓名、聯系方式等信息,并上傳相關證件照片或掃描件。 2. 應用信息登記&#xff1a…

使用 PyTorch 完全分片數據并行技術加速大模型訓練

本文,我們將了解如何基于 PyTorch 最新的 完全分片數據并行 (Fully Sharded Data Parallel,FSDP) 功能用 Accelerate 庫來訓練大模型。 動機 隨著機器學習 (ML) 模型的規模、大小和參數量的不斷增加,ML 從業者發現在自己的硬件上訓練甚至加…

小程序域名SSL證書能用免費的嗎?

眾所周知,目前小程序要求域名強制使用https協議,否則無法上線。但是對于大多數開發者來說,為每一個小程序都使用上付費的SSL證書,也是一筆不小的支出。那么小程序能使用免費的SSL證書嗎? 答案是肯定的。目前市面上可選…

HCIP---RSTP/MSTP

文章目錄 目錄 文章目錄 前言 一.RSTP誕生背景 二.RSTP對比STP的快速收斂機制 端口角色變化 接口狀態變化 RSTP-BPDU 指定端口- P/A機制 BPDU發送變化 端口狀態快速切換 優化拓撲變更機制 三.MSTP MSTP誕生背景 MSTP相關概念 MSTP配置 總結 前言 STP協議雖然能夠解決環…

TypeScript中的函數注釋

一. 概覽 函數注釋主要分為顯示注釋、類型推斷、隱式的any&#xff0c;現在來詳細總結下 二. 顯示注釋 舉個例子 let str1: string hello,jacklet intArr: number[] [1,2,3] let strArr&#xff1a;Array<string> [1,2,3]function test(a: number,b: number): num…

記錄 | xftp遠程連接兩臺windows

1、打開openssh 設置 -> 應用 -> 可選功能 -> 添加功能 -> OpenSSH 客戶端&#xff0c;將 ssh 客戶端安裝將兩臺電腦的 ssh 開啟&#xff0c;cmd 中輸入 net start sshd2、配置 win10 賬號密碼 3、進行 xftp 連接

MATLAB安裝

親自驗證有效&#xff0c;多謝這位網友的分享&#xff1a; https://blog.csdn.net/xiajinbiaolove/article/details/88907232

租一臺服務器多少錢決定服務器的價格因素有哪些

租一臺服務器多少錢決定服務器的價格因素有哪些 大家好我是艾西&#xff0c;服務器這個名詞對于不從業網絡行業的人們看說肯定還是比較陌生的。在21世紀這個時代發展迅速的年代服務器在現實生活中是不可缺少的一環&#xff0c;平時大家上網瀏覽自己想要查詢的信息等都是需要服…

加減乘除簡單嗎?不,一點都不,利用位運算實現加減乘除(代碼中不含+ - * /)

文章目錄 &#x1f680;前言&#x1f680;異或運算以及與運算&#x1f680;加法的實現&#x1f680;減法的實現&#x1f680;乘法的實現&#x1f680;除法的實現 &#x1f680;前言 這也是阿輝開的新專欄&#xff0c;知識將會很零散不成體系&#xff0c;不過絕對干貨滿滿&…

華為鴻蒙HarmonyOS應用開發者高級認證試題及答案

判斷 1只要使用端云一體化的云端資源就需要支付費用&#xff08;錯&#xff09; 2所有使用Component修飾的自定義組件都支持onPageShow&#xff0c;onBackPress和onPageHide生命周期函數。&#xff08;錯&#xff09; 3 HarmonyOS應用可以兼容OpenHarmony生態&#xff08;對…

多維時序 | MATLAB實現SAO-CNN-BiGRU-Multihead-Attention多頭注意力機制多變量時間序列預測

多維時序 | MATLAB實現SAO-CNN-BiGRU-Multihead-Attention多頭注意力機制多變量時間序列預測 目錄 多維時序 | MATLAB實現SAO-CNN-BiGRU-Multihead-Attention多頭注意力機制多變量時間序列預測預測效果基本介紹模型描述程序設計參考資料 預測效果 基本介紹 MATLAB實現SAO-CNN-B…

CommonJs模塊化實現原理ES Module模塊化原理

CommonJs模塊化實現原理 首先看一個案例 初始化項目 npm init npm i webpack -D目錄結構如下&#xff1a; webpack.config.js const path require("path"); module.exports {mode: "development",entry: "./src/index.js",output: {path: p…

硬件開發筆記(十六):RK3568底板電路mipi攝像頭接口原理圖分析、mipi攝像頭詳解

若該文為原創文章&#xff0c;轉載請注明原文出處 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/134922307 紅胖子網絡科技博文大全&#xff1a;開發技術集合&#xff08;包含Qt實用技術、樹莓派、三維、OpenCV、OpenGL、ffmpeg、OSG、單片機、軟硬…

Redis緩存主要異常及解決方案

1 導讀 Redis 是當前最流行的 NoSQL數據庫。Redis主要用來做緩存使用,在提高數據查詢效率、保護數據庫等方面起到了關鍵性的作用,很大程度上提高系統的性能。當然在使用過程中,也會出現一些異常情景,導致Redis失去緩存作用。 2 異常類型 異常主要有 緩存雪崩 緩存穿透 緩…

【sqli靶場】第二關和第三關通關思路

目錄 前言 一、sqli靶場第二關 1.1 判斷注入類型 1.2 判斷數據表中的列數 1.3 使用union聯合查詢 1.4 使用group_concat()函數 1.5 爆出users表中的列名 1.6 爆出users表中的數據 二、sqli靶場第三關 2.1 判斷注入類型 2.2 觀察報錯 2.3 判斷數據表中的列數 2.4 使用union聯合…