Linux進程管理

什麼是進程?

Linux 系統中,觸發任何一個事件,系統都將會將它定義爲一個進程,並且給予這個進程一個編號ID,稱爲PID,同時根據觸發這個進程的用戶與相關屬性關係,給予這個PID一組有效的權限設置。

進程與程序:

程序(program):通常爲二進制程序放置在存儲媒介中,以物理文件的形式存在。

進程(process):程序在被觸發後,執行者的權限與屬性、程序的程序代碼與所需數據都會被加載到內存中,操作系統並給及這個內存內的單元一個標示符(PID)。總的來說,進程就是運行中的程序的一個副本,是被載入內存的一個指令集合。

    進程ID Process  ID,PID)用來標記每一個進程

    UIDGIDSELinux 語境決定對文件系統的存取和訪問權限

    通常從執行進程的用戶來繼承

    存在生命週期

子進程與父進程:

 子進程是由一個進程所產生的進程,產生這個子進程的進程稱爲父進程;父進程終止子進程自然終止。

 子進程與父進程之間的關係最大的複雜點在於進程相互之間的調用,在linux中的過程調用中通常稱爲fork-and-exec的流程,進程都會通過父進程以複製的方式產生一個一模一樣的子進程,然後被複製出來的子進程再以exec的方式來執行實際要進行的進程,最終就成爲一個子進程的存在。

 進程的創建:

第一個進程(父子關係):init (centos6)

systemd (centos7 )

   進程:都是由父進程創建  方法fork(),clone()

進程的優先級:

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

 0-139CentOS4,5):各有140個運行隊列和過期隊列

   0-9899CenOS6

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

Nice值:-2019對應系統優先級100-13999

wKiom1m1JV_iYe8jAADLfMa2fbo448.png

wKioL1m1JVSTxvVoAADkuhsvXxk677.png進程狀態:

 運行態:running

   就緒態:ready

    睡眠態:可中斷:interruptable

              不可中斷:uninterruptable

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

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

進程管理工具:

ps命令:ps命令用於報告當前系統的進程狀態。可以搭配kill指令隨時中斷、刪除不必要的程序。ps命令是最基本同時也是非常強大的進程查看命令,使用該命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵死、哪些進程佔用了過多的資源等等,總之大部分信息都是可以通過執行該命令得到的

命令語法:ps   [OPTION] ….

支持三種風格的選項:

    UNIX 風格:ps  -ef

    BSD風格:ps axo

    GNU風格:ps  --help

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

              a選項包括所有終端中的進程

              x選項包括不鏈接終端的進程

   u選項顯示進程所有者的信息

              f選項顯示進程的父進程

              o屬性選項顯示定製的信息

pid(進程id)、comm(進程命令)、%cpu%mem(內存)、state(狀態)、tty(終端)、euser(有效用戶)、ruser(發起命令的用戶)

wKiom1m1JeThJ7nwAAGjj9gAhFQ976.png

STAT:進程狀態

  • Rrunning

  • S:     interruptable sleeping

  • D:     uninterruptable sleeping

  • T: stopped

  • Z: zombie

  • +: 前臺進程

  • l: 多線程進程

  • N:低優先級進程

  • <: 高優先級進程

  • s: session     leader,會話(子進程)發起者

命令常用組合:

     -ef

         -e: 顯示所有進程

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

     -eFH

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

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

     ni: nice

    pri: priority,優先級

    psr: processor, CPU編號 (使用的是哪顆cpu)

    rtprio: 實時優先級wKioL1m1JtCBiCuSAAFr_sNzbxU061.png

ps –C processname :單獨顯示某個進程,可以使用-o 擴展參數選項

wKiom1m1J1TQgeE3AABhg7nForQ914.png

pstree命令:顯示進程樹,以樹狀圖的方式展現進程之間的派生關係,顯示效果比較直觀。

pstree  –p  :在進程樹狀圖中顯示進程ID

wKioL1m1KiCxA4XzAAHBMEakZbE481.png

nice/renice命令:調整優先級。靜態優先級:100-139,進程默認啓動時的nice值爲0,優先級爲120,只有跟用戶才能降低nice值(提高優先性)。

nice  –n  xx Command:以指定的優先級運行某個命令,xx的範圍是-20~19

wKioL1m1KoniyVJQAAI2zYQWPSk331.png

renice –n  xx COMMAND : 在運行中的進程,修改優先級

wKiom1m1KvXzt68KAACiHhLgVBg001.png

pgrep命令:搜索進程

    -u uid:effective user,生效者

    -U uid: real user,真正發起運行命令者

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

    -l: 顯示進程名

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

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

pgrep [options]  pattern  支持正則表達式wKiom1m1K0WRFJELAABWpZcVwxY218.png

pidof命令:按確切的程序名查看pid

命令絕對路徑:/sbin/pidof

用法:pidof COMMAND

將來可以用來腳本中監控一個重要的服務是否開啓

wKiom1m1K3fRYJfIAADlqwtZaVw521.png

uptime:顯示啓動狀態,顯示當前時間,系統已啓動的時間、當前上線人數,系統平均負載(1510分鐘的平均負載,一般不會超過1)。(沒有明確的單位。)

wKiom1m1K6CiHuynAABO5e9-ntw910.png

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

    通常每個CPU內核的當前活動進程數不大於3,那麼系統的性能良好。如果每個CPU內核的任務數大於5,那麼此主機的性能有嚴重問題。

 如果linux主機是1個雙核CPU,當Load Average 6的時候說明機器已經被充分使用。

top命令:顯示進程使用系統資源情況

wKioL1m1K8egNJfsAAHQ6fnJ1fI173.png

第一行:相當於uptime命令
第二行:進程信息
第三行:CPU使用情況
第四行:內存使用情況
第五行:交換分區swap使用情況

cpu那行:

  • ususer, 用戶空間佔用

  • sysystem, 內核空間佔用

  • ni:調整nice時間

  • ididle,空閒

  • wawait, 等待IO時間

  • hihard interupt, 硬中斷

  • sisoft interupt, 軟中斷(模式切換)

  • ststole, 虛擬機偷走的時間

排序:

在打開top後,可以按快捷鍵進行自定義排序:

P:以佔據的CPU百分比,%CPU

M:佔據內存百分比,%MEM

T:累積佔據CPU時長,TIME+

首部信息是否顯示

  • uptime信息:l(字母l

  • taskscpu信息:t

  • cpu分別顯示:1(數字1

  • memory信息:m

  • 退出命令:q

  • 修改刷新時間間隔:s

  • 終止指定進程:k

  • 保存文件:W

也可以使用命令行的方式對top顯示的信息進行管理

選項:

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

-b: 全部顯示所有進程

-n #: 刷新多少次後退出

htop命令:是一個Linux下交互式的進程瀏覽器,可以用來代替top命令。默認沒有安裝,需要從EPEL源安裝。

wKioL1m1LGbwfW6KAAE5mlc4v5s180.png

子命令:

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

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

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

  •     t: 顯示進程樹

使用命令直接對顯示信息進行操作:

選項:

    -d #: 指定延遲時間;

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

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

vmstat 命令:含義是顯示虛擬內存狀態,但是它還可以報告關於進程、內存、I/0等系統整體運行狀態。

wKiom1m1LPuzTtLWAAB5jtxc95M390.png

命令默認顯示一次就退出。可以設置間隔幾秒刷新一次,也可以定義刷新次數

wKioL1m1LPqQQearAADhS-VaywA557.png

顯示中的各項含義:

procs:

r:可運行(正運行或等待運行)進程的個數,和核心數有關

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

memory

swpd: 交換內存的使用總量

free:空閒物理內存總量

buffer:用於buffer的內存總量

cache:用於cache的內存總量

swap:

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

增加si:dd if=/dev/zero of=/dev/null 

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

增加so:dd if=/dev/zero of=/dev/null  bs=3Gcount=1

io

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

增加bi:dd if=/dev/sda of=/dev/null

bo: 保存數據至塊設備的速率

增加bo:dd if=/dev/zero of= /app/f1 

system

in: interrupts 中斷速率,包括時鐘

cs: context switch 進程切換速率

      cpu

us:Time spent running non-kernel code

sy: Time spent running kernel code

id: Time spent idle. Linux 2.5.41,包括IO-wait time.

wa: Time spent waiting for IO.2.5.41前,包括in idle.

st: Time stolen from a virtualmachine.2.6.11, unknown.

iostat命令:統計CPU和設備IO信息

pmap命令:顯示進程和內存間的映射關係

    pmap  –x PID顯示詳細格式的信息

wKioL1m1La3wUsLOAAFPzAOWndY879.png

glances命令:系統監控工具,通過glances工具我們可以監視CPU、平均負載、內存、網絡流量、磁盤I/O,其他處理器和文件系統空間的利用情況。

C/S模式下運行glances命令

服務模式:

   glances-s -B IPADDR

   IPADDR: 指明監聽的本機哪個地址

客戶端模式:

    glances-c IPADDR

    IPADDR:要連入的服務器端地址

示例:

wKiom1m1LhyjbHEXAAELiAjqxoQ954.png

dstat命令:dstat命令是一個全能系統信息統計工具。擁有一個彩色的界面,在手動觀察性能狀況時,數據比較顯眼容易觀察;而且dstat支持即時刷新,如輸入dstat 3即每三秒收集一次,但最新的數據都會每秒刷新顯示。dstat也可以收集指定的性能資源,如dstat -c即顯示CPU的使用情況。

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

-c: 顯示cpu相關信息

-C #,#,...,total

-d: 顯示disk相關信息

-D total,sda,sdb,...

-g:顯示page相關統計數據

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

-n: 顯示network相關統計數據

-p: 顯示process相關統計數據

-r: 顯示io請求相關的統計數據

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

默認採用-cdngy參數

wKiom1m1LoniSg4aAAE-vkGEbIQ400.png進程管理工具:

Kill 命令:向進程發送控制信號,以實現對進程的管理,每一個信號對應一個數字。

Kill –l :顯示當前系統可用信號

wKiom1m1LsiRF8vPAAKvupfF8HQ477.png

常用信號:man 7 signal

1) SIGHUP: 無須關閉進程而讓其重讀配置文件

2) SIGINT: 中止正在運行的進程;相當於Ctrl+c

3) SIGQUIT:相當於ctrl+\

9) SIGKILL: 強制殺死正在運行的進程

15) SIGTERM:終止正在運行的進程

18) SIGCONT:繼續運行

19) SIGSTOP:後臺休眠

注:

(1)不是所有的進程都可以使用發信號9 的方式結束的,對於終端進程就會失效。

wKiom1m1L5CyfP9bAAKAhrj6C6g751.png    (2)Kill -0 pid選項檢查某個進程是否正常工作,(以後可以用來檢查摸個服務是否正常工作)killall命令:根據進程名管理進程(有時候一個服務開啓的進程太多,根據進程號一個一個刪除太麻煩。)

wKiom1m1L-vBFG6mAAIKJFkBXxg705.png


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章