• 當前位置:首頁 > IT技術 > 系統服務 > 正文

    Linux進程和計劃任務管理
    2021-12-01 23:08:50

    Linux進程和計劃任務管理

    一、程序和進程的關系

    程序
    保存在硬盤、光盤等個質中的可執行代碼和數據
    文件中靜態保存的代碼
    進程
    在CPU及內存中運行的程序代碼
    動態執行的代碼
    父、子進程 init是所有進程的父進程
    每個程序可以創建一個或多個進程

    二、查看進程信息ps

    ps命令-----查看靜態的進程統計信息
    方法一:
    ps aux
    a: 顯示終端上的所有進程,包括其它用戶的進程。
    u: 表示列出進程的用戶。
    x: 顯示所有終端的進程。

    image.png
    各列的解釋:
    USER: 進程的用戶。
    PID: 進程的ID。
    %CPU: 進程占用的CPU百分比。
    %MEM: 占用內存的百分比。
    VSZ: 該進程使用的虛擬內存量 (KB)。
    RSS: 該進程占用的物理內存量 (KB)
    TTY: 啟動進程的終端名。不是從終端啟動的進程則顯示為 ?
    STAT: 該進程的狀態 (D: 不可中斷的休眠狀態; R: 正在運行狀態; s: 處于休眠狀態,可被喚醒;T: 停止狀態,可能是在后臺暫?;蜻M程處于跟蹤調試狀態; Z: 僵尸進程,進程已經中止,但是部分程序還在內存當中)
    START: 該進程被觸發啟動時間。
    TIME: 該進程實際使用CPU運行的時間。
    COMMAND: 進程的啟動命令。
    方法二:
    ps -elf
    -e: 顯示系統內的所有進程信息。
    -l: 使用長格式顯示進程信息。
    -f: 使用完整的格式顯示進程信息。
    -a: 顯示所有進程pid。
    -T: 查看線程信息。
    ps -aT 顯示所有線程
    image.png

    各列的解釋:
    F: 內核分配給進程的系統標記。
    S: 進程的狀態。
    UID: 啟動這些進程的用戶。
    PID: 進程的進程ID。
    PPID: 父進程的進程號 (如果該進程是由另一個進程啟動的)。
    C: 進程生命周期中的CPU利用率。
    PRI: 進程的優先級 (越大的數字代表越低的優先級)。
    NI: 謙讓度值用來參與決定優先級。
    ADDR: 進程的內存地址。
    SZ: 假如進程被換出,所需交換空間的大致大小。
    WCHAN: 若該進程在睡眠,則顯示睡眠中的系統函數名。
    STIME: 進程啟動時的系統時間。
    TTY: 進程啟動時的終端設備。
    TIME: 運行進程需要的累計CPU時間。
    CMD: 進程的啟動命令。
    什么是僵尸進程
    一個進程結束了,但是如果該進程的父進程已經先結束了,那么該進程就不會變成僵尸進程,因為每個進程結束的時候,系統都會掃描當前系統中所運行的所有進程,看有沒有哪個進程是剛剛結束的這個進程的子進程,如果是的話,就由Init來接管它,成為它的父進程,子進程退出后init會回收其占用的相關資源。
    但是當子進程比父進程先結束,而父進程又沒有回收子進程,釋放子進程占用的資源,此時子進程將成為一個僵尸進程。

    三、查看進程信息top

    top命令-----查看動態的進程排名信息

    image.png
    第一行是 任務隊列信息
    11:32:54 : 系統時間
    up 27 min : 系統已運行時長
    2 user : 當前登錄用戶數
    load average: 0.00, 0.01, 0.05 :系統負載,即單位時間內系統處理的任務數,后面三個數值分別為1分鐘、5分鐘、15分鐘前到現在的平均值
    第二行為 進程信息
    Tasks : 總進程數
    running : 正在運行的進程數
    sleeping : 休眠的進程數
    stopped : 中止的進程數
    zombie :僵死的進程數
    第三行為 CPU的信息
    us :用戶占用
    sy :內核占用
    ni :優先級調度占用
    id : 空閑CPU,要了解空閑的 CPU 百分比,主要看%id部分
    wa : I/O等待占用
    hi : 硬件中斷占用
    si : 軟件中斷占用
    st : 虛擬化占用
    第四行為內存的信息
    total : 總內存空間
    free : 空閑內存
    used : 已用內存
    buff/cache :物理內存和交換內存的緩沖區總和
    第五行為交換空間的信息
    total :總交換空間
    free : 空閑交換空間
    used :已用交換空間
    avail Mem : 可用物理空間
    進程信息區各列解釋:
    PID :進程id
    USER : 進程所有者的用戶名
    PR : 優先級
    NI :謙讓度值。負值表示高優先級,正值表示低優先級
    VIRT :進程使用的虛擬內存總量,單位kb
    RES : 進程使用的物理內存大小,單位kb
    SHR :共享內存大小,單位kb
    S : 進程狀態
    %CPU : 上次更新到現在的CPU時間占用百分比
    %MEM : 進程使用的物理內存百分比
    TIME+ : 進程使用的CPU時間總計,單位1/100秒
    COMMAND : 命令名/命令行
    top常用命令:
    P 鍵: 根據CPU使用百分比大小進行排序
    M 鍵: 根據駐留內存大小進行排序
    N 鍵: 根據啟動時間進行排序
    c 鍵: 切換顯示命令名稱和完整命令行
    h 鍵: 可以獲得 top程序的在線幫助信息
    k 鍵: 根據提示輸入指定進程的 PID 號并按 Enter 鍵終止對應的進程
    q 鍵: 退出top程序
    數字1鍵: 顯示CPU個數和狀態
    top -H: 顯示所有線程
    top -H -p < pid>: 顯示特定進程中的線程

    image.png

    image.png

    image.png
    圖示為W 、uptime以及top這三種命令都可以用來查看cpu的負載情況

    image.png

    四、查看進程信息pgrep

    pgrep命令-----根據特定條件查詢進程PID信息
    -l: 顯示進程名 缺省時只輸出 PID 號
    -U:指定特定用戶
    -t: 指定終端

    image.png

    五、查看進程樹pstree

    pstree命令-----以樹形結構列出進程信息
    -a: 顯示完整信息
    -u: 列出對應用戶名
    -p: 列出對應PID號
    image.png

    進程的啟動方式
    手工啟動
    前臺啟動: 用戶輸入命令,直接執行程序
    后臺啟動: 在命令 行尾 加入“&”符號
    [root@localhost ~]# cp/dev/cdrom mycd.iso&
    [1] 28454 (輸出信息中包括后臺任務序號、PID號)
    調度啟動
    使用at命令,設置一次性計劃任務
    使用crontab命令,設置周期性計劃任務

    六、進程的前后臺調度

    Ctrl+Z組合鍵
    將當前進程掛起,即調入后臺并停止執行

    image.png

    jobs命令
    jobs [-l]
    查看處于后臺的任務列表
    image.png

    fg命令
    將后臺進程恢復到前臺運行,可指定任務序號

    image.png

    七、終止進程的運行

    CtrI+C組合鍵
    中斷正在執行的命令
    kill、killall命令
    kil用于終止 指定PID號 的進程
    kilall用于終止 指定名稱相關的所有 進程
    -9選項用于強制終止

    pkill命令 (用得不多)
    根據特定條件終止相應的進程
    常用命令選項
    -U: 根據進程所屬的用戶名終止相應進程
    -t: 根據進程所在的終端終止相應進程

    八、計劃任務管理at

    at命令
    一次性計劃任務
    at [HH:MM] [yyyy-mm-dd] 后面跟上年月日,不跟默認當天
    按CtrI+D鍵提交任務
    atq 查看未執行的任務列表
    atrm 刪除任務

    九、crontab命令

    按照預先設置的時間周期(分鐘、小時、天、月、周)重復執行用戶指定的命令操作
    屬于周期性計劃任務
    主要設置文件
    全局配置文件,位于文件: /etc/crontab
    系統默認的設置,位于目錄: /etc/cron.*/
    用戶定義的設置,位于文件: /var/spool/cron/用戶名
    管理crontab計劃任務
    編輯計劃任務
    crontab -e [-u 用戶名] -u缺省時默認是針對當前用戶
    image.png

    查看計劃任務
    crontab -l [-u 用戶名]
    刪除計劃任務
    crontab -r [-u 用戶名]
    crontab任務配置的格式

    字段 取值范圍說明
    分鐘 取值為從0到59之間的任意整數
    小時 取值從0到23之間的任意整數
    日期 取值為從1到31之間的任意整數
    月份 取值為從1到12之間的任意整數
    星期 取值為從0到7之間的任意整數,0和7都是星期天
    命令 要執行的命令或程序腳本

    時間數值的特殊表示方法
    表示該范圍內的任意時間
    ●, 表示間隔的多個不連續時間點
    ●- 表示一個連續的時間范圍
    ●/ 指定間隔的時間頻率
    應用示例
    0 17
    1-5 : 周一到周五每天17:00
    30 8
    1,3,5 : 每周一、三、五的8點30分
    0 8-18/2
    : 8點到18點之間每2小時

    0 /3 : 每3天

    本文摘自 :https://blog.51cto.com/u

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码