天天看點

linux實驗五程序管理指令_Linux系統管理-程序管理

程序基本概述

什麼是程序

比如:windows上安裝的QQ,我們會将其稱為QQ程式,那麼當QQ運作之後,在任務管理器中,我們可以看到QQ程式在運作着,此時,我們稱其為:QQ程序。

言簡意赅總結:當我們運作一個程式,那麼我們将該程式叫程序

注意:

1.當程式運作為程序後,系統會為該程序配置設定記憶體,以及運作的身份和權限。

2.在程序運作的過程中,伺服器上回有各種狀态來表示目前程序的名額資訊。

程序是已啟動的可執行程式的運作執行個體,程序有以下組成部分:

配置設定記憶體, 已配置設定記憶體的位址空間

安全屬性, 程序的運作身份和權限

程序代碼, 運作一個或多個的線程

程序狀态, 程序運作後的多種狀态

靜态程式, 二進制檔案, 靜态/bin/ls, /usr/sbin/sshd

動态程序, 程式運作的過程, 有生命周期及運作狀态

程序的運作環境,包括以下幾個部分:

局部和全局變量

目前的排程上下文

配置設定給程序使用的系統資源,例如檔案描述符、網絡端口等

給程序配置設定對應的pid,ppid

程式和程序的差別

1.程式是資料和指令的集合,是一個靜态的概念,比如/bin/ls、/bin/cp等二進制檔案,同僚程式可以長期存在系統中。

2.程序是一個程式的運作過程,是一個動态概念,程序是存在生命周期概念的,也就是說程序會随着程式的終止而銷毀,不會永遠在系統中存在。

程序的生命周期

linux實驗五程式管理指令_Linux系統管理-程式管理

程式運作時程序的狀态關系:

1.當父程序接收到任務排程時,會通過fork派生子程序來處理,那麼子程序會內建父程序的衣缽。

2.子程序在處理任務代碼時,父程序會進入等待的狀态...

3.如果子程序在處理任務過程中,父程序退出了,子程序沒有退出,那麼這些子程序就沒有父程序來管理了,就變成了僵屍程序。

4.每個程序都會有自己的PID号,(process id)子程序則PPID

《古惑仔-父程序與子程序 版》

使用者:蔣天生 飾

父程序:陳浩南 飾

子程序01:山雞 飾

子程序02:大頭 飾

1.蔣天生(使用者)發起請求,将任務派給陳浩南,陳浩南(父程序)接收到任務排程時(自己一個人處理不了),将任務派給自己的手下,山雞(子程序01)和大頭(子程序02)去做。

2.山雞和大頭在處理任務時,陳浩南在銅鑼灣坐等好消息。

3.如果此時,浩南兄被烏鴉殺了,那麼山雞和大頭就變成了僵屍程序(無人管理)

4.每個大哥都有屬于自己的武器,PID,小弟也有自己的武器,PPID

監控程序狀态

linux實驗五程式管理指令_Linux系統管理-程式管理

程序狀态管理指令

使用

ps

指令檢視目前的程序狀态(靜态檢視)

常用組合:

ps aux

檢視程序

[[email protected] ~]# ps aux
a:顯示所有與終端相關的程序,由終端發起的
u:顯示使用者導向的使用者清單
x:顯示所有與終端無關的程序
           

在多任務處理作業系統中,每個CPU(或核心)在一個時間點上隻能處理一個程序。

在程序運作時,它對 CPU 時間和資源配置設定的要求會不斷變化,進而為程序配置設定一個狀态,它随着環境要求而改變。

linux實驗五程式管理指令_Linux系統管理-程式管理

USER:       //啟動程式的使用者
PID:        //程序ID
%CPU:       //占用CPU的百分比
%MEM:       //占用記憶體的百分比
VSZ:        //虛拟記憶體集(程序占用虛拟記憶體的空間)
RSS:        //實體記憶體集(程序占用實體記憶體的空間)

TTY:        //運作的終端
        ?:      #核心運作的終端
        tty1:   #機器運作的終端
        pts/0:  #遠端連接配接的終端

STAT:       //程序狀态
        D:      #無法中斷的休眠狀态(通IO的程序)
        R:      #正在運作的狀态
        S:      #處于休眠的狀态
        T:      #暫停或被追蹤的狀态
        W:      #進入記憶體交換(從核心2.6開始無效)
        X:      #死掉的程序(少見)
        Z:      #僵屍程序
        <:      #優先級高的程序
        N:      #優先級較低的程序
        L:      #有些頁被鎖進記憶體
        s:      #父程序(在它之下有子程序開啟着)
        l:      #以線程的方式運作
        |:      #多程序的
        +:      #該程序運作在前台
START:      //程序被觸發開啟的時間
TIME:       //該程序實際使用CPU的運作時間
COMMAND:    //指令的名稱和參數
        []:     #核心态的程序
        沒[]:    #使用者态的程序
           

案例一:PS指令檢視前台程序轉換到停止

#在終端上運作vim
[[email protected] ~]# vim zls.txt

#檢視vim運作的狀态,S:睡眠狀态 +:在前台運作
[[email protected] ~]# ps aux|grep [v]im
root       1306  0.0  0.2 151664  5180 pts/0    S+   13:00   0:00 vim zls.txt

#執行ctrl + z,将程序放置背景
[1]+  已停止               vim zls.txt

#程序狀态變成了T,暫停或被追蹤的狀态
[[email protected] ~]# ps aux|grep [v]im
root       1306  0.0  0.2 151664  5180 pts/0    T    13:00   0:00 vim zls.txt
           

案例二:PS指令檢視不可中斷狀态

#在終端上運作tar指令
[[email protected] ~]# tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/

#持續檢視tar程序的狀态
[[email protected] ~]# ps aux|grep [t]ar
root       1348 13.3  0.0 124008  1700 pts/0    R+   13:06   0:00 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 13.2  0.0 124008  1716 pts/0    R+   13:06   0:00 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 15.7  0.0 124008  1716 pts/0    S+   13:06   0:00 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 13.6  0.0 124008  1736 pts/0    S+   13:06   0:00 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 15.1  0.0 124008  1736 pts/0    R+   13:06   0:00 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 14.1  0.0 124008  1736 pts/0    D+   13:06   0:00 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 13.2  0.0 124008  1756 pts/0    R+   13:06   0:01 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 15.2  0.0 124140  1756 pts/0    R+   13:06   0:01 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 14.7  0.0 124240  1952 pts/0    S+   13:06   0:01 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 15.8  0.0 124240  1952 pts/0    S+   13:06   0:01 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 15.0  0.0 124240  1952 pts/0    S+   13:06   0:01 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 15.7  0.0 124240  1952 pts/0    S+   13:06   0:01 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 15.0  0.0 124240  1952 pts/0    S+   13:06   0:01 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 15.6  0.0 124240  1952 pts/0    S+   13:06   0:01 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 14.9  0.0 124240  1952 pts/0    S+   13:06   0:01 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 15.2  0.0 124240  1952 pts/0    S+   13:06   0:01 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 14.6  0.0 124240  1952 pts/0    S+   13:06   0:01 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 15.1  0.0 124240  1952 pts/0    S+   13:06   0:01 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 15.6  0.0 124240  1952 pts/0    S+   13:06   0:02 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 15.1  0.0 124240  1952 pts/0    S+   13:06   0:02 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 15.5  0.0 124240  1952 pts/0    S+   13:06   0:02 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 15.2  0.1 124464  2100 pts/0    S+   13:06   0:02 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.2  0.1 124616  2104 pts/0    R+   13:06   0:02 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 15.9  0.1 124616  2104 pts/0    R+   13:06   0:02 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.8  0.1 124616  2316 pts/0    D+   13:06   0:02 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.7  0.1 124720  2412 pts/0    D+   13:06   0:02 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.5  0.1 124720  2412 pts/0    S+   13:06   0:02 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.0  0.1 124720  2412 pts/0    R+   13:06   0:03 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.7  0.1 124720  2412 pts/0    R+   13:06   0:03 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.1  0.1 124720  2412 pts/0    S+   13:06   0:03 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.6  0.1 124720  2412 pts/0    S+   13:06   0:03 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.3  0.1 124720  2412 pts/0    S+   13:06   0:03 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.8  0.1 124720  2412 pts/0    S+   13:06   0:03 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.2  0.1 124720  2412 pts/0    S+   13:06   0:03 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.8  0.1 124720  2412 pts/0    S+   13:06   0:03 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.2  0.1 124720  2412 pts/0    S+   13:06   0:03 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.9  0.1 124720  2412 pts/0    R+   13:06   0:03 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.1  0.1 124720  2412 pts/0    S+   13:06   0:03 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.7  0.1 124720  2412 pts/0    S+   13:06   0:04 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.2  0.1 124720  2412 pts/0    S+   13:06   0:04 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.8  0.1 124720  2412 pts/0    S+   13:06   0:04 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.1  0.1 124720  2412 pts/0    S+   13:06   0:04 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.7  0.1 124720  2412 pts/0    S+   13:06   0:04 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.1  0.1 124720  2412 pts/0    D+   13:06   0:04 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.9  0.1 124720  2412 pts/0    R+   13:06   0:04 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.6  0.1 124720  2412 pts/0    R+   13:06   0:04 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.0  0.1 124720  2412 pts/0    S+   13:06   0:04 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.6  0.1 124844  2600 pts/0    S+   13:06   0:04 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.0  0.1 124844  2600 pts/0    S+   13:06   0:04 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.7  0.1 124844  2600 pts/0    S+   13:06   0:05 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.1  0.1 124844  2600 pts/0    S+   13:06   0:05 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.8  0.1 124844  2600 pts/0    S+   13:06   0:05 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.1  0.1 124844  2600 pts/0    S+   13:06   0:05 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.9  0.1 124844  2600 pts/0    S+   13:06   0:05 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.4  0.1 124844  2600 pts/0    S+   13:06   0:05 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.3  0.1 125004  2744 pts/0    R+   13:06   0:05 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.1  0.1 125004  2744 pts/0    S+   13:06   0:05 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.7  0.1 125004  2744 pts/0    S+   13:06   0:05 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.9  0.1 125004  2744 pts/0    R+   13:06   0:05 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.7  0.1 125004  2744 pts/0    R+   13:06   0:06 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.1  0.1 125004  2744 pts/0    R+   13:06   0:06 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.0  0.1 125132  2868 pts/0    R+   13:06   0:06 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.8  0.1 125132  2868 pts/0    S+   13:06   0:06 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.0  0.1 125132  2868 pts/0    S+   13:06   0:06 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.8  0.1 125164  2948 pts/0    D+   13:06   0:06 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.3  0.1 125296  2948 pts/0    R+   13:06   0:07 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.3  0.1 125384  2948 pts/0    R+   13:06   0:07 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.2  0.1 125508  3228 pts/0    S+   13:06   0:07 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.6  0.1 125572  3344 pts/0    R+   13:06   0:07 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.7  0.1 125572  3344 pts/0    R+   13:06   0:07 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.7  0.1 125724  3344 pts/0    R+   13:06   0:07 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.8  0.1 125860  3344 pts/0    R+   13:06   0:08 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 18.1  0.1 125860  3344 pts/0    R+   13:06   0:08 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 18.0  0.1 125860  3344 pts/0    D+   13:06   0:08 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.9  0.1 125860  3344 pts/0    S+   13:06   0:08 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.9  0.1 125860  3604 pts/0    R+   13:06   0:08 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 18.1  0.1 125860  3604 pts/0    S+   13:06   0:08 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 18.0  0.1 125860  3604 pts/0    S+   13:06   0:09 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 18.0  0.1 125992  3604 pts/0    S+   13:06   0:09 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 18.0  0.1 125992  3604 pts/0    S+   13:06   0:09 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 18.5  0.1 126152  3868 pts/0    R+   13:06   0:09 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 18.4  0.2 126380  4144 pts/0    R+   13:06   0:09 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 18.2  0.2 126380  4144 pts/0    S+   13:06   0:09 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 18.2  0.2 126536  4144 pts/0    S+   13:06   0:09 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 18.1  0.2 126672  4144 pts/0    R+   13:06   0:09 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.9  0.2 126672  4372 pts/0    R+   13:06   0:10 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 18.0  0.2 126672  4372 pts/0    R+   13:06   0:10 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 18.0  0.2 126960  4372 pts/0    S+   13:06   0:10 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.8  0.2 126960  4632 pts/0    R+   13:06   0:10 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.6  0.2 127092  4756 pts/0    S+   13:06   0:10 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.4  0.2 127092  4756 pts/0    S+   13:06   0:10 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.1  0.2 127092  4756 pts/0    S+   13:06   0:10 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.3  0.2 127224  4756 pts/0    S+   13:06   0:10 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 17.0  0.2 127224  4756 pts/0    S+   13:06   0:10 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.8  0.2 127224  4948 pts/0    R+   13:06   0:10 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 16.9  0.2 127224  4952 pts/0    S+   13:06   0:10 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
root       1348 15.5  0.2 127224  4952 pts/0    S+   13:06   0:10 tar zcf zls.tar.gz /etc/ /usr/ /var/ /usr/
[[email protected] ~]# ps aux|grep [t]ar
[[email protected] ~]# ps aux|grep [t]ar
           

案例三:PS指令檢視程序Ss+狀态

#過濾bash程序,再開啟終端
[[email protected] ~]# ps aux|grep [b]ash
root       1127  0.0  0.1 115436  2084 tty1     Ss   11:49   0:00 -bash
root       1180  0.0  0.0 115436  1900 tty1     S+   11:49   0:00 bash
root       1198  0.0  0.1 115564  2152 pts/0    Ss   11:50   0:00 -bash
root       1324  0.0  0.1 115440  2064 pts/1    Ss+  13:01   0:00 -bash
           

程序管理相關指令介紹

了解程序如下選項:

PID,PPID

目前的程序狀态

記憶體的配置設定情況

CPU 和已花費的時間

使用者UID決定程序的特權

ps

指令使用方法

#對程序的CPU進行排序展示
[[email protected] ~]# ps aux --sort %cpu |less

#對程序的占用實體記憶體排序
[[email protected] ~]# ps aux --sort rss |less

#排序,是在記不住,那就自己排序
[[email protected] ~]# ps aux|sort -k3 -n

#自定義顯示字段
[[email protected] ~]# ps axo user,pid,ppid,%mem,command |grep sshd
root        869      1  0.2 /usr/sbin/sshd -D
root       1194    869  0.2 sshd: [email protected]/0
root       1307    869  0.2 sshd: [email protected]/1
root       1574    869  0.2 sshd: [email protected]/2

#顯示程序的子程序
[[email protected] ~]# yum install nginx -y
[[email protected] ~]# systemctl start nginx
[[email protected] ~]# ps auxf|grep [n]ginx
root       2033  0.0  0.1 125096  2112 ?        Ss   13:29   0:00 nginx: master process /usr/sbin/nginx
nginx      2034  0.0  0.1 125484  3148 ?        S    13:29   0:00  _ nginx: worker process

#檢視指定程序PID
[[email protected] ~]# ps aux|grep sshd
root       1157  0.0  0.1 105996  3604 ?        Ss   Feb27   0:00 /usr/sbin/sshd -D
[[email protected] ~]# cat /run/sshd.pid
1157

#pgrep常用參數, -l -a
[[email protected] ~]# pgrep sshd
869
1194
1307
1574
[[email protected] ~]# pgrep -l sshd
869 sshd
1194 sshd
1307 sshd
1574 sshd
[[email protected] ~]# pgrep -l -a sshd
869 /usr/sbin/sshd -D
1194 sshd: [email protected]/0
1307 sshd: [email protected]/1
1574 sshd: [email protected]/2

#檢視程序的pid
[[email protected] ~]# pidof sshd
1574 1307 1194 869

#檢視程序樹 
[[email protected] ~]# pstree
           

動态監控程序

linux實驗五程式管理指令_Linux系統管理-程式管理
linux實驗五程式管理指令_Linux系統管理-程式管理

top前兩行内容解析

top

#目前系統的時間
13:48:15 

#開啟時間
up  1:59,  

#幾個使用者同時線上
4 users,  

#平均負載:1分鐘,5分鐘,15分鐘
load average: 0.00, 0.01, 0.05

#總共工作數量103個
Tasks: 103 total,   

#2個正在處理
2 running,  

#99個S狀态
99 sleeping,   

#2個停止狀态
2 stopped,   

#0個僵屍程序
0 zombie
           

top第三行内容解析

%Cpu(s): 
#使用者态:使用者占用CPU的百分比
0.0 us,  

#核心态:系統程式占用CPU的百分比(通常核心與硬體進行互動)
0.3 sy,  

dd </dev/zero >/dev/null bs=200M count=1000

#優先級:優先被排程的程式占用CPU百分比
0.0 ni, 

#空閑:CPU空閑的百分比(windows也有)
99.7 id,  

#等待:CPU等待IO的完成時間
0.0 wa,  

#硬中斷:占CPU的百分比
0.0 hi,
由與系統相連的外設(比如網卡、硬碟)自動産生的。主要是用來通知作業系統,系統外設狀态的變化。比如當網卡收到資料包的時候,就會發出一個中斷。我們通常所說的中斷指的是硬中斷(hardirq)。

#軟中斷:占CPU的百分比
0.0 si,
為了滿足實時系統的要求,中斷處理應該是越快越好。linux為了實作這個特點,當中斷發生的時候,硬中斷處理那些短時間就可以完成的工作,而将那些處理事件比較長的工作,放到中斷之後來完成,也就是軟中斷(softirq)來完成。  

#虛拟機占用實體機的百分比
0.0 st
           

什麼是中斷?

中斷是系統用來影響硬體裝置請求的一種機制,它會打斷程序的正常排程和執行,然後調用核心中的終端處理程式來影響裝置的請求。

為什麼要有中斷?

舉個栗子:

比如你定了一份外賣,但是不确定外賣什麼時候送到,也沒有别的方法了解外賣的進度,但是配送人員送外賣是不等人的,到了你這,沒人接取的話,直接走人了。是以你隻能苦苦的等着,時不時的去門口看看外賣送到沒有,而不能做其他的事情。

不過如果在訂外賣的時候,你就跟配送員約定好了,讓他送到給你打電話,那你就不用苦苦等着了,可以去忙别的事情了,直到電話一響,接到電話,就可以取外賣了。此時

打電話

就是一個中斷的操作。

沒接到電話之前,你可以做其他事情,當你接到電話之後(就發生了中斷),你才要進行另一個動作

取外賣

PS:中斷是一個異步的事件處理機制,可以提高作業系統處理并發的能力。

那麼中斷會帶來什麼問題?

由于中斷處理程式會打斷其他程序的運作,是以,為了減少對正常程序運作排程的影響,中弄斷處理程式就需要盡可能快的運作,如果中弄斷本身要做的事情不多,那麼處理起來也不會有太大的問題,但是如果中斷要處理的事情很多,中斷服務程式就有可能要運作很長時間。

特别是,中斷處理程式在影響中斷時,還會臨時關閉中斷,這就會導緻上一次中斷處理完成之前,其他中斷都能不能響應,也就是說中斷有可能會丢失。

還是以外賣為例:加入你定了2份外賣

一份主食和一份飲料,由2個不同的配送員來配送。這次你不用時時等待着,兩份外賣都約定了電話取外賣的方式。那麼問題又來了。

當第一份外賣送到時,配送員給你打了個很長的電話,商量發票處理的方式,與此同時,第二個配送員也到了,也想給你打電話,但是會占線,因為電話占線(也就關閉了中斷的響應),第二個配送給你打電話打不通,是以,那麼很有可能在嘗試幾次還占線,就走了(丢失了一次中斷)

系統的軟中斷

剛才說了丢失一次中斷,如果對于系統來說,每次都隻能處理一次中斷,那就很刺激了,天天都在丢失中斷,使用者的請求發過來,沒響應,還做個P的運維,回家種地吧...

linux實驗五程式管理指令_Linux系統管理-程式管理

linux實驗五程式管理指令_Linux系統管理-程式管理

事實上,為了解決中斷處理程式執行過長的和丢失中斷的問題,Linux将中斷處理過程分成了兩個階段:

第一階段:用來快速進行中斷,它在中斷禁止模式下運作,主要處理跟硬體緊密相關工作

第二階段:用來延遲處理第一階段未完成的工作,通常以核心線程的方式運作。

你猜的沒錯,還是外賣的那個例子:

第一階段:當你接到第一個配送員電話時,你可以跟他說,你已經知道了,其他事見面再細說,然後就可以挂斷電話了。

第二階段:才是取外賣,然後見面聊發票的處理動作。

如此一來,第一個配送員不會在電話裡占用你很長時間,第二個配送員來的時候,照樣可以打通電話。

生産例子

當網卡在接收資料包的時候,會通過硬中斷的方式通知核心,有新資料到了。這時,核心就應該調用中斷處理程式來影響它。對第一階段來說,既然是快速處理,其實就是把網卡接收到的資料包,先放置記憶體當中,然後更新一下硬體寄存器的狀态(表示資料已經讀好了),而第二階段,被軟中斷信号喚醒後,需要從記憶體中找到網絡資料,再按照網絡協定棧,對資料進行逐層解析和處理,直到把它發送給應用程式。

言簡意赅:

第一階段:直接處理硬體請求,也就是我們常說的硬中斷,特點是快速執行。

第二階段:由核心觸發該請求,也就是我們常說的軟中斷,特點是延遲執行。

Linux軟中斷與硬中斷小結:

1.Linux中弄斷處理程式分為上半部和下半部:

上半部對應硬中斷,用來快速處理

下半部對應軟中斷,用來異步處理上半部未完成的工作

2.Linux中的軟中斷包括:網絡收發,定時,排程等各種類型,可以通過

/proc/softirqs

來觀察中斷的運作情況

在企業中,會經常聽說一個問題,就是大量的網絡小包會導緻性能問題,為啥呢?

因為大量的網絡小包會導緻頻繁的硬中斷和軟中斷,是以大量的網絡小包傳輸速度很慢,但如果将所有的網絡小包"打包","壓縮"一次性傳輸,是不是會快很多。

就好比,你在某東自營買了100個快遞,都是第二天到,如果分100個快遞員,給你配送,你一天要接100個電話,老得勁了奧~~~~~~~~ 但是如果,某東隻讓一個快遞員,把你買的100個快遞,打包成一個大包裹,派送給你,會不會快很多?小老弟

top指令的使用

[[email protected] ~]# top
#指定N秒變化時間
[[email protected] ~]# top -d 1
#檢視指定程序的動态資訊
[[email protected] ~]# top -d 1 -p 10126
[[email protected] ~]# top -d 1 -p 10126,1
#檢視指定使用者的程序
[[email protected] ~]# top -d 1 -u apache
#将 2 次 top 資訊寫入到檔案
[[email protected] ~]# top -d 1 -b -n 2 > top.txt

top 常見指令
h   檢視幫出
z   高亮顯示
1   顯示所有CPU的負載
s   設定重新整理時間
b   高亮現實處于R狀态的程序
M   按記憶體使用百分比排序輸出
P   按CPU使用百分比排序輸出
R   對排序進行反轉
f   自定義顯示字段
k   kill掉指定PID程序
W   儲存top環境設定 ~/.toprc
q   退出

#程序ID
PID
#使用者
USER
#優先級,正常為20
PR  
#nice值,正常為0,負值表示高優先級,正值表示低優先級
NI    
#虛拟記憶體占用
VIRT
#真實記憶體占用
RES
#共享記憶體占用
SHR
#模式狀态
S
#CPU占用百分比
%CPU
#記憶體占用百分比
%MEM
#運作時間
TIME+
#運作指令
COMMAND
           

信号管理程序

當程式運作為程序後,如果希望強行停止就可以使用kill指令對程序發送

關閉信号

,除了kill還有pkill、killall

定義守護程序的角色

結束使用者會話和程序

kill,killall,pgrep,pkill

linux實驗五程式管理指令_Linux系統管理-程式管理

[[email protected] ~]# kill -l //列出所有支援的信号

//常見信号清單:
數字信号        信号别名        作用
1       HUP     挂起信号,往往可以讓程序重新配置
2       INT     中斷信号,起到結束程序的作用,和ctrl + c 的作用一樣
3       QUIT        讓程序退出,結果是程序退出
9       KILL        直接結束程序,不能被程序捕獲
15      TERM        程序終止,這是預設信号
18      CONT        被暫停的程序将繼續恢複運作
19      STOP        暫停程序
20      TSTP        使用者停止請求,作用類似于ctrl + z 把程序放到背景并暫停
           

kill指令發送信号

// 給 vsftpd 程序發送信号 1,15
[[email protected] ~]# yum -y install vsftpd
[[email protected] ~]# systemctl start vsftpd
//發送重新開機信号,例如 vsftpd 的配置檔案發生改變,希望重新加載
[[email protected] ~]# kill -1 9160
//發送停止信号,vsftpd 服務有停止的腳本 systemctl stop vsftpd
[[email protected] ~]# kill 9160


// 給vim程序發送信号 9,15
[[email protected] ~]# touch file1 file2 
//使用遠端終端1打開file1
[[email protected] ~]# tty
/dev/pts/1
[[email protected] ~]# vim file1
//使用遠端終端2打開file2
[[email protected] ~]# tty 
/dev/pts/2
[[email protected] ~]# vim file2
//檢視目前程序pid
[[email protected] ~]# ps aux |grep vim
root 4362 0.0 0.2 11104 2888 pts/1 S+ 23:02 0:00 vim file1 
root 4363 0.1 0.2 11068 2948 pts/2 S+ 23:02 0:00 vim file2
//發送15信号
[[email protected] ~]# kill 4362
//發送9信号
[[email protected] ~]# kill -9 4363
//還可以同時給所有vim程序發送信号, 模糊比對,同時給多個程序發送信号
[roo[email protected] ~]# killall vim


//使用pkill踢出從遠端登入到本機的使用者, pkill  類似killall
[[email protected] ~]# w
 20:50:17 up 95 days,  9:30,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
xuliangw pts/0    115.175.115.39   20:22    0.00s  0.01s  0.00s sshd: zls [priv]

//終止 pts/0上所有程序, 除了bash本身
[[email protected] ~]# pkill -t pts/0
//終止pts/0上所有程序, 并且bash也結束(使用者被強制退出)
[[email protected] ~]# pkill -9 -t pts/0

//列出zls使用者的所有程序,-l輸出pid
[[email protected] ~]# pgrep -l -u zls
32206 sshd
32207 bash