Linux運維之進程管理

一、進程概念

進程是內核的一個功能,在Linux中,運行一個程序或命令可以出發一個事件而驅動一個PID,在linux系統中,系統只識別二進制程序文件,我們可以通過執行系統上的二進制程序來運行程序,進而產生進程。在linux系統中第一個進程是init程序,它是系統開機第一個加載的程序,用來支撐系統的正常運行的一個程序,內核啟動的一個用戶級進程。

 

1.進程優先級

         進程優先級被分為系統優先級和實時優先級

         系統優先級:數字越小,優先級越高

         0-139(老版本操作系統如4,5

         各有140個運行隊列和過期隊列,當一個進程支執行完成后會將進程放到過期隊列上來,如果一個進程的優先級低,進程執行了一會,系統將會把它丟到過期隊列當中來。

         實時優先級:99-0:值越大優先級越高

 

         nice值:-20,19對應系統優先級100-13999

 

2.進程狀態

         linux中,進程是搶占式多任務的,進程的類型被分為:

         守護進程:在系統引導過程中啟動的進程,即跟終端無關的進程

         前臺進程:跟終端有關,通過終端啟動的進程;需要注意的是,也可以吧前臺啟動的進程送往后臺,以守護模式運行。

 

運行態: running進程正在運行中

就緒態:ready

睡眠態:sleeping

            可中斷:interruptable

            不可中斷:uninterruptable,通常是指被IO阻塞的進程,等待IO滿足之前無法繼續運行

停止態:stopped,暫停于內存中,但不會被調度,除非手動啟動

僵死態:zombie,進程結束,父進程結束前,子進程不關閉

根據進程占用資源的多少可以將進程分為:

CPU密集型:對CPU占用率高的進程

IO密集型:等待I/O時間長的進程

 

 

3.進程管理

linux系統中,有很多的進程都在運行,但其中有一個程序很重要,那該如何讓這個最重要的程序先運行呢,所以這些情況下,我們都應該先查詢系統當前運行的進程,此時我們可以通過一些進程的管理工具來獲得進程的管理工具有:top,pstree,pspidof,pgrep,pkillhtop,glances,pmapvmstate,dstat,iostat,sarkill,jobs,bgfg

 

pstree:以顯示當前系統上的進程樹

 

psprocess state 進程狀態

默認顯示當前終端中的進程

命令格式:ps [options]

-a:所有與終端有關的進程

-x:所有與終端無關的進程,通常與-a選項一起使用,可列出教完整信息

-u:顯示與進程所有者的信息

-f:顯示進程的父進程

-l:較長、教詳細的將該PID信息列出

-o 顯示指定的信息如 pid(進程號),comm(命令),%cpucpu占用百分比),%mem(內存占用百分比),state(進程狀態),tty(終端),euser(進程生效者),ruser(進程真正執行者)

組合選項

-ef

           -e:顯示所有進程

           -f:顯示完整格式程序信息

-eFH

           -F:顯示更完整格式的進程信息

           -H:以進程層級格式顯示進程相關信息

 

ps顯示字段解釋

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root          1  0.0  0.0  19352  1552 ?        Ss   15:41   0:01 /sbin/init

root          2  0.0  0.0      0     0 ?        S    15:41   0:00 [kthreadd]

root          3  0.0  0.0      0     0 ?        S    15:41   0:00 [migration/0]

root          4  0.0  0.0      0     0 ?        S    15:41   0:00 [ksoftirqd/0]

root          5  0.0  0.0      0     0 ?        S    15:41   0:00 [stopper/0]

root          6  0.0  0.0      0     0 ?        S    15:41   0:00 [watchdog/0]

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

—————————————————————————————————————————–

USER:用戶

PID:進程ID

%CPU:占用cpu百分比

%MEM:占用內存百分比

VSZVirtual memory Size,虛擬內存集,線性內存

RSSReSident Size,常駐內存及

STAT:進程狀態

Rrunning

s:interruptable sleeping

D:uninterruptable sleeping

T:stopped

Z:zombie

+:前臺進程

l:多線程進程

N:低優先級進程

<:高優先級進程

ssession leader,會話進程首進程

START:進程起始時間

TIME:進程運行時長

COMMAND:運行進程的命令

ninice

pripriority優先級

psrprocessor,cpu編號

rtprio:實時優先級

 

 

pgrep 搜索進程

pgrep [-flvx] [-d delimiter] [-n|-o] [-P ppid,…] [-g pgrp,…] [-s sid,…] [-u euid,…] [-U uid,…] [-G gid,…] [-t term,…] [pattern]

           

-u uid:進程生效者

-U uid:進程真正發起者(比如我普通用戶運行passwd運行,可執行程序passwdsuid它是以root的身份來運行程序,但進程真正的發起者是普通用戶)

-t terminal:與指定終端相關的進程

-l:顯示進程名

-a:顯示完整格式的進程名

-p pid:顯示指定進程的子進程

 

示例:

pgrep  -u   hadoop  查找生效者是hadoop用戶的進程

pgrep  -t  pts/2

 

 

 

pidof  根據程序名查找pid

命令格式:pidof [-s] [-c] [-x] [-m] [-o omitpid] [-o omitpid..]  program [program..]

pidof bash

 

uptime

顯示當前時間,系統已啟動的時間、當前上線人數,系統平均負載(1、5、10分鐘的分軍服在,一般不會超過1

系統平均負載:在特定時間間隔內運行隊列中的平均進程數

 

如果每個CPU內核當前活動的進程數不大于3,那么系統新能良好,如果CPU內核任務數大于5,這臺機器性能有嚴重問題,如果主機是一個雙核CPU的話,當Load Average6的時候說明機器已經被充分使用了

20:49:12 up  5:07,  3 users,  load average: 0.00, 0.02, 0.05

 

4.進程管理工具

 top

1.jpg

top欄位信息介紹

us:用戶空間

sy:內核控件

ni:調整nice時間

id:空閑

waI/O等待時間

hi:硬終端

si:軟終端(模式切換)

st:被偷走的時間

 

PID:任務的進程ID

PPID:父進程ID

RUSER:進程真正執行者

UID:任務所有者ID

USER:任務所有者名稱

GROUP:任務所有者群組名

TTY:終端

PR:優先級

%CPUCPU使用率

%MEM:內存使用率

S:進程狀態

TIME+:CPU時間,精確到秒

 

top命令有許多命令,當我們執行top命令后,在交互界面敲一下鍵會顯示不同的效果

排序

P:以占據CPU百分比排序 %CPU

M:以占據內存百分比排序 %MEM

T:累計占據CPU時長,TIME+

 

首部信息顯示:

uptime信息: l命令

taskscpu信息:t命令

cpu分別顯示:1(數字)

memory信息: m命令

退出命令:q

修改刷新時間間隔: s  #

終止指定進程: k  pid

保存文件:W,默認保存在/root/.toprc文件中

 

選項:

-d #:指定刷新時間間隔,默認為3

-b:以批次方式顯示

-n #:顯示多少批次

 

htop命令該命令系統默認不會安裝,需要從epel源上安裝htop命令

命令格式:   htop [-dChusv]

選項:

-d # :指定延遲時間

-u username:僅顯示指定用戶的進程

-s colume :以指定字段進行排序

 

子命令:(在執行htop命令后在進入界面輸入一下子命令)

s:跟蹤選定進程的系統調用

l:顯示選定進程打開的文件列表

a:選定的進程綁定至某指定CPU核心

t:顯示進程樹

2.jpg

 

5.內存工具

vmstate命令:虛擬內存信息

vmstat[options] [delay [count]]

vmstat 2  5每兩秒顯示一次,一共顯示五次,然后退出

procs ———–memory———- —swap-– —–io-— —system— —–cpu—–

 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

 1  0      0 1169128  32640 403716    0    0     8     1   12    9  0  0 100  0  0        

 1  0      0 1169048  32640 403720    0    0     0     0   37   26  0  0 100  0  0        

 0  0      0 1169048  32648 403720    0    0     0     6   46   48  0  0 100  0  0        

 0  0      0 1169112  32648 403720    0    0     0    16   42   33  0  0 100  0  0        

 1  0      0 1169112  32648 403720    0    0     0     0   40   26  0  0 100  0  0        

欄位信息

procs

r:等待運行的進程個數,和核心數有關

b:處于不可中斷睡眠態的進程個數(被阻塞的隊列長度)

 

memory

         swap:交換內存的使用總量

         free:空閑屋里內存總量

         buffer:用于緩沖的內存總量

         cache:用于緩存的內存總量

 

swap

         si:從磁盤交換內存的數據速率(kb/s

         so:從內存交換至磁盤的數據速率(kb/s

 

io

         bi:從塊設備讀入數據到系統的速率(kb/s

         bo:保存數據到塊設備的速率(kb/s

 

system

         ininterrupts,中斷速率,包括時鐘

         cscontext switch,進程切換速率

 

cpu

      us:用戶空間

sy:內核控件

ni:調整nice時間

id:空閑

waI/O等待時間

hi:硬終端

si:軟終端(模式切換)

st:被偷走的時間

 

選項

-s:顯示內存的統計數據

 

pmap:進程對應的內存映射

命令格式:pmap [ -x | -d ] [ -q ] pids…

-x:顯示詳細格式的信息

或者查看文件來顯示此信息

cat /proc/pid/pmap      pid進程編號

 

 

系統監控工具

glances

命令格式glances  [-bdehmnrsvyz1]  [-B  bind]  [-c  server]  [-C  conffile]  [-p port] [-P password] [–password] [-t refresh] [-f file] [-o output]

 

選項

-b:以Byte為單位顯示網卡的數據速率

-d:關閉磁盤I/O模塊

-f /path/to/somefile:設定輸入文件位置

-o {html|csv}:輸出格式

-m:禁用mount模塊

-n:禁用網絡模塊

-t #:延遲時間間隔

-l:每個CPU相關數據單獨顯示

      

C/S模式下運行glances

服務模式:

glances –s –B ip

 4.jpg

客戶端模式

glances –c  ip

3.jpg

 

dstate命令,系統資源統計

命令格式: dstat [-afv] [options..] [delay [count]]

-c:顯示CPU相關信息

-d:顯示disk相關信息

-g:顯示page相關統計信息

-m:顯示內存相關統計信息

-n:顯示網絡相關統計信息

-p:顯示進程相關統計信息

-r:顯示io請求相關的同屬數據

-s:顯示swaped相關的統計數據

5.jpg

 

6. 進程管理工具

重要的信號

1SINGHUP:讓一個進程不用重啟就可以重讀其配置文件,并讓新的配置信息生效

2SIGINT:中止正在運行的進程相當于ctrl+c

9)SINGKILL:殺死正在運行的進程

15)SINGTERM:終止正在運行的進程,正常結束進程

18)SINGCONT:繼續運行一個進程

19)SINGSTOP:后臺休眠

指定信號的方法:

信號的數字標識:1,2,9

信號完整名稱:SIGHUP

信號簡寫名稱:HUP

 

殺死進程

kill命令

命令格式kill [-s signal|-p] [–] pid..

示例:

kill  -1    120  使用1號信號重讀該進程的配置文件

kill  -9    120  強制殺死該進程

 

killall  command(當某個命令運行多個進程時,想殺死該命令產生的全部進程)

 

pkill

命令格式:pgrep [-flvx] [-d delimiter] [-n|-o] [-P ppid,…] [-g pgrp,…] [-s sid,…] [-u euid,…] [-U uid,…] [-G gid,…]

-SIGNAL

-u uid: 生效者

-U uid real user ,進程真正發起者

-t terminal:與指定終端相關的進程

-l:顯示進程名

-a:顯示整格式的進程名

-P pid:顯示父進程為此處指定的進程的進程列表

 

示例:

pkill  -u   hadoop

pkill  -t   pts/3  

 

二、作業管理

Linux的作業控制

前臺作業:通過終端啟動,且啟動后一直占據終端

后臺作業:可通過終端啟動,但啟動后即轉入后臺運行(釋放終端)

 

運行中的作業 ctrl+z讓作業運行與后臺

command & 作業未啟動是執行此操作讓作業進入后臺

后臺作業雖然被送往后臺運行,但依然與終端相關,退出終端,將關閉后臺作業。

nohup command     screen command 剝離與終端的關系,即使終端斷開,也依然運行

 

jobs:查看所有作業

[root@server ~]# jobs

[1]   Stopped                 vim

[2]-  Stopped                 find / -name a

[3]+  Stopped                 vim

 

1.作業控制

fg[[%]JOB_NUM]:把指定的后臺作業調回前臺;

bg[[%]JOB_NUM]:讓送往后臺的作業在后臺繼續運行;

kill [%JOB_NUM]:終止指定的作業

 

當工作中需要同時運行多個進程,提高工作效率,可以這么干

 

vi all.sh

f1.sh&

f2.sh&

f3.sh&

(f1.sh&);(f2.sh&);(f3.sh&)

{ f1.sh& f2.sh& f3.sh& }

 

2.進程優先級調整

進程是存在優先級的,所謂優先級是指被執行的順序,優先級越高,被執行的順序越靠前,反之,越靠后

靜態優先級:100-139

進程默認啟動時的nice值為0,優先級為120

只有根用戶才能降低nice值(提高優先性)

 

進程優先級的調整方法

nice命令

命令格式:nice [OPTION] [COMMAND [ARG]…] (程序未啟動時)

nice  -n  -10   pid

 

renice

命令格式:renice [-n] priority [[-p] pid …] [[-g] pgrp …] [[-u] user …]

renice –n  -10  pid   (進程已經運行)

 

 

原創文章,作者:fszxxxks,如若轉載,請注明出處:http://www.www58058.com/44777

(0)
fszxxxksfszxxxks
上一篇 2016-09-09
下一篇 2016-09-09

相關推薦

  • 馬哥教育網絡班22期+第15周課程練習

    1、總結sed和awk的詳細用法; sed [OPTION]…  'script'  [input-file] … script: 地址定界編輯命令 常用選項: -n:不輸出模式空間中的內容至屏幕; -e script, –expression=sc…

    Linux干貨 2016-12-14
  • bash通配符和正則表達式元字符部分歸納

    Linux中有各種各樣的字符,而且在不同環境和不同命令之下含義也不同 作為新手,決定先歸納學到的符號,方便后面學習厘清它們之間的關系。 glob 簡化了的正則表達式 bash默認通配符: ? :只匹配一個任意字符; * :匹配零個或多個任意字符;   [^] :方括號及其中^中的取反 [abc]:匹配任何一個列在方括號中的字符(這個例子要么匹配一個…

    Linux干貨 2016-04-11
  • tomcat之-從AT到Cluster

    本文導航 一、    LAMT搭建以及部署應用        1、LAMT部署                   (1)、安裝Apache     …

    2017-02-13
  • dd命令詳解

    dd命令: convert and copy a file用法:  dd if=/PATH/FROM/SRC of=/PATH/TO/DEST   bs=#: block size, 復制單元大小   count=#:復制多少個bs   of=fil…

    Linux干貨 2017-03-19
  • N25_第三周作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@aio ~]# who|cut -d" " -f1|uniq root 2、取出最后登錄到當前系統的用戶的相關信息。 [root@aio ~]# who| …

    Linux干貨 2016-12-19
  • linux基礎學習-第九天(shell基礎)

    2016-08-10 授課內容: shell腳本基礎: 變量 運算 bash測試(數字測試、字符測試、文件測試、組合測試) read命令 變量作用: 1、數據存儲格式 2、參與的運算 3、表示的數據范圍 變量類型: 1、本地變量 2、環境(全局)變量 3、特殊變量     駝峰命名變量:每個單詞一個字母大寫 本地變量:…

    Linux干貨 2016-08-11
欧美性久久久久