Linux進程及作業管理總結

一、簡介

    在使用Windows操作系統中很多時候需要查看某些程序進程的運行情況,一般來說我們可以打開Windows提供的"任務管理器",然后點擊"進程"欄即可查看到當前系統運行的進程列表。例如偶爾出現系統內存、CPU占用過高的時候,我們往往都會查看進程列表,并找到當前占用內存或CPU過高的進程,再把這些占用過高的進程給清理掉,以便釋放內存使用率。

    在Linux系統中也同樣需要及時查看進程運行(內存占用)情況。以便我們輕松的實現系統調整優化(調整占用過高的進程、查看調整nice值等),下面將具體說明相關命令的用法講解。

二、用法詳解

  1.pstree,查看進程樹命令,詳情見下圖:blob.png

blob.png   

  2.ps,以靜態(快照)方式查看進程狀態結果命令。

  (1)ps命令的BSD風格命令,詳情見下圖:

blob.pngblob.png

blob.pngblob.png

blob.pngblob.png

  (2)ps命令的SysV風格命令,詳情見下圖:blob.png

blob.pngblob.pngblob.png

  3.pgrep,過濾顯示指定進程命令,語法格式:pgrep [OPTIONS] "PATTERN"

       -U UID:僅顯示以指定用戶身份運行的進程;

       -G GID

       -l: 顯示PID和進程名;

例:顯示sshd這個進程的進程號,詳情見下圖:

blob.png

例:顯示root用戶所有進程的進程號,詳情見下圖:blob.png

例:顯示屬組為root的所有進程的進程號,詳情見下圖:blob.png

例:顯示指定進程的pid和進程名,詳情見下圖:

blob.png

  4.pidof,查看指定進程的pid號,語法格式:pidof PROGRAM(給定命令行程序)。詳情見下圖:blob.png

  5.top,以動態方式查看進程狀態結果命令,默認按CPU占有百分比排序,有許多交互式子命令,說明及圖片如下:

    P:以占據的CPU百分比大小排序(每次刷新CPU占用的百分比);

    M:以占據Memory空間大小排序;

    T:CPU累積占用時間排序;

    l: 是否顯示系統負載行;隊列長度的合理區間:CPU顆數*0.7

    t: 是否顯示進程摘要信息及CPU負載狀態;

    Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

         us: user space(用戶空間的程序所占據的CPU百分比)

        sy: system (kernel space:運行內核代碼占據的百分比)

        ni: nice(優先級,該值的調整影響到的CPU百分比)

        id: idle(CPU空閑百分比)

        wa: wait io(等待IO完成占據的CPU百分比)

        hi: hardware interrupt(處理硬件中斷占據的CPU百分比)

        si: software interrupt(處理軟件中斷占據的CPU百分比)

        st: stolen, 被虛擬機“偷走”的百分比

    1:平均或單獨顯示CPU的負載狀態;

    m: 是否顯示內存相關的狀態信息;

    q: 退出命令

    s: 修改延遲時長

    k: 終止指定進程

blob.png

 top命令的選項:

   -b: batch,批次顯示

   -n #: 顯示的批次數量

   -d #: 指明延遲時長

  6.uptime,顯示當前系統時間,運行時長,登錄用戶數及系統平均負載,詳情見下圖:

blob.png

  7.htop,比top命令功能更強大的以動態方式查看進程狀態結果命令,默認也是按照CPU占有百分比排序,安裝詳情見下圖:

blob.png htop也有許多交互式子命令,說明及圖片如下:

     F1-F10:菜單命令;

     u: 過濾僅顯示選定用戶的進程;

    s: 跟蹤選定的進程所發起的系統調用;

    l: 顯示選定進程所打開的文件;

    t(F5): 顯示進程的層次結構(此命令與按F5鍵的效果相同);

    a: 設定進程的cpu親緣性;(將選定的進程綁定在指定的CPU上)

blob.png

 htop命令的選項:

    -d #: 延遲時長

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

    -s COLUMN: 根據指定的字段進行排序;

 8.vmstat,查看虛擬內存使用狀況,語法格式:vmsate [delay [count]],說明及圖片如下:

    procs:

     r: 等待運行的進程的個數;(隊列長度)

     b:處理不可中斷睡眠狀態的進程的個數;(即IO阻塞隊列長度)

    memory:

     swpd: 交換內存使用量;

     free: 空間的物理內存量;

     buffer: 用于buffer的內存總量;

     cache: 用于cache的內存總量;

    swap:

     si: 數據進入swap中的速率(kb/s)

     so: 數據離開swap的速率(kb/s) 

    io

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

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

    system

     in: 中斷速率

     cs: 進程切換的速率 

    cpu 

     us: 

     sy:

     id:

     wa:

     st:

 blob.png  vmstat-s,顯示內存的狀態統計數據,詳情見下圖:blob.png 補充:/proc/#接口:每一個進程都有一個與其pid號同名的目錄,這里的文件就是內核參數中的映射。

 9.pmap: 查看指定進程的內存映射關系;語法格式:pmap [OPTIONS] pid…

-x: 顯示擴展信息

 詳情見下圖:

blob.png

 補充:采用cat /proc/#/maps 進行查看時,效果與上面相同,示例見下圖:blob.png

  10.glances: 進程監控查看工具,命令語法格式如下:

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

  常用選項:

    -b: 以Byte/s為單位顯示網卡設備數據交換速率;

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

    -f /PATH/TO/SOMEFILE:設置輸出文件的位置及格式;

    -o {HTML|CSV}:

    -m: 關閉mount功能模塊

    -n: 關閉網絡功能模塊

    -r: 關閉進程列表功能模塊

    -t #: 指定延遲時長,默認為3秒;

    -1:單獨顯示每顆CPU相關負載數據信息;

     glances支持遠程模式:

  即可以以C/S模式工作:

      Server: 以監聽模式啟動glances;

      Client: 以遠程模式啟動glances,遠程連入指定服務器,并Server上的相關性能數據;

      

  服務模式:

    glances -s -B IPADDR

      -B: 用于指明監聽的本地地址;

      

  客戶端模式:

    glances -c IPADDR

      -c: 用于連入的服務器的地址;

 glances工具默認情況下沒有被安裝,可通過yum命令單獨進行安裝,安裝詳情見下圖:blob.png

例:以Byte/s為單位顯示網卡設備數據交換速率,命令為:glances -b,詳情見下圖:blob.png

例:關閉磁盤I/O功能模塊,命令為:glances -d,,詳情見下圖:blob.png

例:glances實現C/S架構遠程訪問,詳情見下圖:blob.pngblob.png

 11.dstat: 整合了vmstat, iostat, netstat and ifstat四款工具的功能,命令語法格式如下:

   dstat [-afv] [options..] [delay [count]]

 常用選項:

    -c: 顯示cpu性能指標相關的統計數據;

    -d: 顯示disk相關的速率數據;

    -g: 顯示page相關的速率數據;

    -i: 顯示interrupt相關的速率數據;

    -l: 顯示load average相關的統計數據;

    -m: 顯示memory相關的統計數據;

    -n: 顯示網絡收發數據的速率;

    -p: 顯示進程相關的統計數據,

    -r: io請求的速率;

    -s: 顯示swap的相關數據

    -y: 顯示系統相關的數據,包括中斷和進程切換;

    

    –top-cpu:顯示最占用CPU的進程;

    –top-bio:顯示最消耗block io的進程;

    –top-io:最占用io的進程;

    –top-mem:顯示最占用內存的進程;

    

    –ipc: 顯示進程間通信相關的速率數據;

    –raw: 顯示raw套接的相關的數據;

    –tcp: 顯示tcp套接字的相關數據;

    –udp: 顯示udp套接字的相關數據;

    –unix: 顯示unix sock接口相關的統計數據;

    –socket: 

    

    -a: -cdngy

  dstat工具默認情況下沒有被安裝,可通過yum命令單獨進行安裝,安裝詳情見下圖:blob.png

例:使用dstat查看CPU用量,命令為:dstat -c,詳情見下圖:

blob.png

例:使用dstat顯示disk相關的速率數據,命令為:dstat -d,詳情見下圖:blob.png

例:使用dstat顯示page相關的速率數據,命令為:dstat -g,詳情見下圖:

blob.png例:使用dstat顯示load average相關的統計數據,命令為:dstat -l,詳情見下圖:

blob.png

例:使用dstat顯示網絡收發數據的速率,命令為:dstat -n,詳情見下圖:blob.png

例:使用dstat顯示最占用CPU的進程,命令為:dstat –top-cpu,詳情見下圖:blob.png

例:使用dstat顯示最占用io的進程及最占用內存的進程,命令為:dstat –top-cpu 及 dstat –top-mem,詳情見下圖:blob.png

 補充:IPC: 進程間通信

 常見形式:

    message queue(消息隊列)

    semerphore(信號量)

    shared memory(共享內存)

    signal(信號)

 12.signal: 傳遞給進程的短小信息

     Linux主機支持的進程間可用到的信息:

     (1) kill -l

     (2) man 7 signal

    

     向進程發信號:

     kill [-SIGNAL] PID 

     默認的信號為SIGTERM(15號);

    

     信號表示方式:

     (1) 完整名稱,例如SIGINT

     (2) 簡寫名稱,例如INT

     (3) 數據代稱,例如2

     常用信號:

     SIGHUP: 1, 通知進程重讀其配置文件以讓新的配置生效,但不用重新啟動進程;

     SIGINT:2, 打斷正在運行中的進程,相當于鍵盤組合鍵Ctrl+c

     SIGKILL:9, 強行中止正在運行中的進程

     SIGTERM: 15, 安全中止正在運行中的進程(kill后面不加信號值默認為15號)

     SIGSTOP: 19, 暫停進程

     SIGCONT: 18, 繼續運行指定進程

例:查看當前系統中支持的信號種類及各信號含義,命令為:kill -l,詳情見下圖:

blob.png

例:使用kill命令安全結束tomcat進程,命令為:kill tomcat端口號,詳情見下圖:blob.png

 kill相似的一組進程,語法格式:killall [-SIGNAL] PROGRAM

例:使用killall命令安全結束名稱全部為java的進程,命令為:killall java,詳情見下圖:blob.png

  作業管理:

前臺作業:通過終端啟動,并且在停止之前也會一直占據終端;

后臺作業:作業啟動之時與終端無關,或者是在前臺啟動,但啟動后轉為與終端無關模式運行;

 如何讓作業運行于后臺?

1、對于已經啟動并處于運行中的作業:組合鍵:Ctrl+z

    Note: 作業被送往后臺后,默認處于stopped狀態;

例:用vim打開a.txt文件后讓其運行與后臺,詳情如下圖:

blob.png       

     2、對于尚未啟動的作業:COMMAND &

例:直接用vim a.txt &這種方式可以實現讓vim a.txt這個進程直接在后臺運行,詳情如下圖:

blob.png      

注意: 此兩類方式相關作業,仍然與終端相關;這意味著,終端終止,將會導致與此終端相關的所有作業被終止;

   剝離進程與終端的關系:# nohup COMMAND &

例:nohup ping 127.0.0.1 & 命令可以實現剝離終端進程直接在后臺運行,詳情如下圖:blob.png

   

作業查看:

  jobs命令

    作業號、作業狀態、啟動命令行程序

例:使用jobs查看處于后臺運行的作業,詳情如下圖:

blob.png

    

  作業控制命令:

   fg [[%]job_num]:把指定的作業調回前臺,示例:fg 1 等價于 fg %1 這里百分號可以省略,詳見下圖:

blob.png

blob.pngblob.png

  bg [[%]job_num]:把調往后臺的指定的作業啟動起來,讓其后臺默默運行;但此作業必須支持運行于后臺(例如   cp、mv、rm命令等);

  

  kill [%job_num]:終止指定的作業,這里百分號不能省(省略就變成殺死進程號),具體示例詳見下圖:blob.png

      

進程優先級調整:

 靜態優先級:通過指定進程的nice值來調整其優先級;用戶空間運行進程一般都有其nice值;

    nice值: -20, 19

    優先級:  100, 139

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

     (1) 對于尚未啟動的進程:# nice -n N COMMAND

     (2) 對于已經啟動并處于運行中的進程:# renice -n N PID 

 具體示例詳見下圖:

blob.png

 注意:nice值越小優先級越高,普通用戶僅能夠調大nice,調低優先級;

 補充pkill命令,該命令也可實現殺死運行中的程序,也可用作踢除當前系統登錄用戶使用(僅管理員可用):

    1. 將某個終端的用戶踢出

    pkill -kill -t pts/2(終端號)

    2. 按用戶名踢出用戶

    pkill -kill -U test(系統用戶名)

 其他相關命令:sar, iostat, ifstat, tsar等留待今后繼續研究。

原創文章,作者:鏡花水月,如若轉載,請注明出處:http://www.www58058.com/8527

(0)
鏡花水月鏡花水月
上一篇 2015-10-05
下一篇 2015-10-05

相關推薦

  • 天神之劍Vim編輯器

    一.概述和基本用法及一些描述 vi:Visual Interface 文本編輯器 文本ASCII , Unicode 文本編輯種類: 行編輯器:sed 全屏編輯器:nano,vi vim – Vi Improved 其他編輯器: gedit 一個簡單的圖形編輯器 gvim 一個vim編輯器的圖形版本 基本用法  vim [OPTION]…

    Linux干貨 2016-08-15
  • Linux命令幫助及history命令的使用

    1.Linux命令幫助的獲取詳解 在Linux中獲取命令幫助時,內部命令和外部命令的獲取方式是有區別的: 即  (1)內部命令:#help COMMAND ?            #man bash  (2)外部命令:<1> # COMMAND –hel…

    Linux干貨 2016-08-05
  • date用法心得

    Linux時間格式極大程度的遵循了人類習慣,以下為部分常見時間。
    date命令本身提供了日期的加減運算,shell編程時靈活運用

    2017-11-09
  • Linux入門知識

    了解計算機的構造和Linux的基本知識,掌握相關的內容

    2017-09-10
  • 使用sudo對用戶進行權限管理

    使用sudo對用戶進行權限管理 因為root用戶權限太大,一般在實際應用的時候 ,為了避免造成錯誤泛濫和找不到責任人都需要對使用服務器人員進行權限分配,除了系統管理員外,其他人禁止使用root,但可以通過sudo命令,給自己提權。同時通過日志審計進行監控操作,操作如下: 1.禁止普通用戶使用su命令到root # usermod -g wheel user0…

    Linux干貨 2017-03-26
  • 字符串處理

      一.字符串處理 v bash 的字符串處理工具: (一)字符串切片: ${#var}: 返回字符串變量var 的長度 例: [root@lxc ~]# a="     " [root@lxc ~]# echo ${#a} 5 [root@lxc ~]# ${var:offse…

    Linux干貨 2016-11-24

評論列表(1條)

  • 晚明傷哥
    晚明傷哥 2015-10-12 15:44

    不錯,我轉載了

欧美性久久久久