CentOS進程管理

CentOS進程管理

筆記

Linux系統中的基本運行單位是進程,通過對系統系統中的進程的管理能夠對系統的實時運行狀態進行了解和調度。Linux中提供了用于查看、調整和停止進程的命令。本文仍然以RHEL6說明Linux系統的進程管理。


一、進程概述

程序是保存在存儲介質中的可執行機器代碼(或指令)和數據的集合,而進程是在計算機處理器執行中的計算機程序。他們的關系如下:

·程序是保存在外部存儲介質中的可執行代碼和數據,是靜態保存的代碼。 
·進程是程序代碼在處理器中的運行,是動態執行的代碼。 
·操作系統在執行程序時,將代碼有外部存儲介質(硬盤)讀取到內部存儲介質(內存)中,駐留在內存中的程序代碼 作為進程在CPU中被動態執行。 
·Linux是多進程操作系統,每個程序啟動時可以創建多個進程,與其他程序創建的進程共同運行在Linux內核空間。每 個進程都是一個獨立的任務,它們一招操作系統內核制定的規則交替被CPU執行。每個單獨的進程運行在自己的虛擬地址空間,并且只能通過安全的內核管理機制與其他進程進行交互。 
·在進程的生存期內將使用許多系統資源,它將使用CPU來運行指令,使用物理內存來保存執行代碼和數據,它將打開和使用文件子系統中的文件,并直接或間接地使用系統中的物理設備。

二、查看進程

1、使用ps命令

常用參數: 
a 顯示所有用戶的所有進程(包括其它用戶); 
u 按用戶名和啟動時間的順序來顯示進程; 
x 顯示無控制終端的進程; 
e 顯示所有進程,包括沒有控制端的進程; 
f 用樹形格式來顯示進程; 
l 長格式輸出; 
w 為了避免詳細參數被截斷,可以用多個w來讓其顯示完整(比如說ww或者是www); 
o 需要查看的選項

舉例說明:

~ ]#ps aux | more USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root  1  0.0  0.3 193648  6648 ?        Ss   5月06   1:09 /usr/lib/systemd/systemd --system --deserialize 13
root  2  0.0  0.0  0   0 ?        S     May06   0:00 [kthreadd]
root  3  0.0  0.0  0   0 ?        S     May06   0:01 [ksoftirqd/0]
root  5  0.0  0.0  0   0 ?        S<    May月06   0:00 [kworker/0:0H]
root  7  0.0  0.0  0   0 ?        S     May06   0:04 [migration/0]
root  8  0.0  0.0  0   0 ?        S     May06   0:00 [rcu_bh]
root  9  0.0  0.0  0   0 ?        S     May06   2:33 [rcu_sched]
root  10  0.0  0.0  0   0 ?        S     May06   0:05 [watchdog/0]
root  11  0.0  0.0  0   0 ?        S     May06   0:05 [watchdog/1]
root  12  0.0  0.0  0   0 ?        S     May06   0:05 [migration/1]
root  13  0.0  0.0  0   0 ?        S     May06   0:08 [ksoftirqd/1]

ps命令輸出中包含的信息:

USER:進程的屬主; 
PID :進程的ID; 
PPID :父進程; 
%CPU :進程占用的CPU百分比; 
%MEM :占用內存的百分比; 
NI :進程的NICE值,也就是進程的優先值(-20~19之間),數值越大,優先級越底; 
VSZ :進程虛擬大小; 
RS :駐留中頁的數量; 
TTY :終端ID。問號表示是無終端的,也就是系統本身。 
STAT :進程狀態 
D Uninterruptible sleep (usually IO) 
R 正在運行可中在隊列中可過行的; 
S 處于休眠狀態; 
T 停止或被追蹤; 
W 進入內存交換(從內核2.6開始無效); 
X 死掉的進程(從來沒見過); 
Z 僵尸進程; 
< 優先級高的進程 
N 優先級較低的進程 
L 有些頁被鎖進內存; 
s 進程的領導者(在它之下有子進程); 
l 多線程 (using CLONE_THREAD, like NPTL pthreads do) 
+ 位于后臺的進程組; 
WCHAN :正在等待的進程資源; 
START : 啟動進程的時間; 
TIME : 進程消耗CPU的時間; 
COMMAND: 啟動進程的命令的名稱和參數; 
ps命令的其他用法:

(1)

~]# ps aux |grep httpd                       ###查看httpd程序的進程 root  1879  0.0  1.6  33096  8548 ?        Ss   13:31   0:00 /usr/sbin/httpd
apache  1887  0.0  0.8  33096  4212 ?        S    13:31   0:00 /usr/sbin/httpd

(2)

~]# ps axo pid,%cpu,%mem,comm |grep httpd   ##只查看pid,%cpu,%mem,comm這幾項 1879 0.0 1.6 httpd 1887 0.0 0.8 httpd 1888 0.0 0.8 httpd

至于其他的參數,大家可以自行練習一下。

Tips:什么是僵尸進程。通常,造成僵尸進程的成因是因為該進程應該已經執行完畢,或者是因故應該要終止了, 但是該進程的父進程卻無法完整的將該進程結束掉,而造成那個進程一直存在內存當中。如果你發現在某個進程的 CMD 后面還接上 時,就代表該進程是僵尸進程。當系統不穩定的時候就容易造成所謂的僵尸進程。也有可能是因為程序寫的不完善,或者是使用者的操作習慣不良等等所造成。如果你發現系統中很多僵尸進程時,記得要找出該進程的父進程,然后做個跟蹤排除問題!

2、top命令

top命令會在當前終端全屏顯示系統運行信息,實時跟蹤系統資源的使用情況,顯示內容包括CPU、內存占用情況,系統運行進程的列表和每一個進程運行的狀態等信息,對于分析系統運行中的問題很有幫助。

[root@Vtest ~]# top

以下是top某一刻的輸出信息:

top - 20:49:29 up 9 days, 17:02,  3 users,  load average: 0.00, 0.01, 0.05
Tasks: 198 total,  2 running, 196 sleeping,  0 stopped,  0 zombie
%Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1867292 total,  150628 free,  734708 used,  981956 buff/cache
KiB Swap:  2098172 total,  2098172 free,  0 used.  842256 avail Mem 

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND  67748 root  20   0  157708   2324   1564 R   0.3  0.1   0:00.08 top  1 root  20   0  193648   6648   3872 S   0.0  0.4   1:09.78 systemd  2 root  20   0   0   0   0 S   0.0  0.0   0:00.78 kthreadd  3 root  20   0   0   0   0 S   0.0  0.0   0:01.45 ksoftirqd/0  5 root  0 -20  0   0   0 S   0.0  0.0   0:00.00 kworker/0:0H  7 root      rt  0   0   0   0 S   0.0  0.0   0:04.57 migration/0  8 root  20   0   0   0   0 S   0.0  0.0   0:00.00 rcu_bh  9 root  20   0   0   0   0 S   0.0  0.0   2:33.51 rcu_sched  10 root      rt  0   0   0   0 S   0.0  0.0   0:05.65 watchdog/0  11 root      rt  0   0   0   0 S   0.0  0.0   0:05.26 watchdog/1  12 root      rt  0   0   0   0 S   0.0  0.0   0:05.15 migration/1  13 root  20   0   0   0   0 S   0.0  0.0   0:08.54 ksoftirqd/1  15 root  0 -20  0   0   0 S   0.0  0.0   0:00.00 kworker/1:0H  16 root      rt  0   0   0   0 S   0.0  0.0   0:06.32 watchdog/2  17 root      rt  0   0   0   0 S   0.0  0.0   0:03.65 migration/2  18 root  20   0   0   0   0 S   0.0  0.0   0:01.72 ksoftirqd/2  21 root      rt  0   0   0   0 S   0.0  0.0   0:05.62 watchdog/3  22 root      rt  0   0   0   0 S   0.0  0.0   0:03.74 migration/3  23 root  20   0   0   0   0 S   0.0  0.0   0:00.91 ksoftirqd/3  27 root  0 -20  0   0   0 S   0.0  0.0   0:00.00 khelper  28 root  20   0   0   0   0 S   0.0  0.0   0:00.01 kdevtmpfs  29 root  0 -20  0   0   0 S   0.0  0.0   0:00.00 netns  30 root  20   0   0   0   0 S   0.0  0.0   0:01.24 khungtaskd  31 root  0 -20  0   0   0 S   0.0  0.0   0:00.00 writeback  32 root  0 -20  0   0   0 S   0.0  0.0   0:00.00 kintegrityd  33 root  0 -20  0   0   0 S   0.0  0.0   0:00.00 bioset  34 root  0 -20  0   0   0 S   0.0  0.0   0:00.00 kblockd  35 root  0 -20  0   0   0 S   0.0  0.0   0:00.00 md  41 root  20   0   0   0   0 S   0.0  0.0   0:01.18 kswapd0  42 root  25   5   0   0   0 S   0.0  0.0   0:00.00 ksmd  43 root  39  19   0   0   0 S   0.0  0.0   0:15.76 khugepaged  44 root  20   0   0   0   0 S   0.0  0.0   0:00.31 fsnotify_mark  45 root  0 -20  0   0   0 S   0.0  0.0   0:00.00 crypto

我們把輸出信息劃分為三部分:

1-5行為第一部分:

第1行:

top – 20:49:29 : 當前時間,默認每三秒更新一次。 
up 9 days :系統運行了多長時間,格式為時:分 
3 users :當前登錄用戶數 
load average: 0.00, 0.01, 0.15 :系統負載,即任務隊列的平均長度。三個數值分別為> 1分鐘、5分鐘、15分鐘前到現在的平均值。

第2行:

Tasks: 198 total :系統總的進程數 
2 running :正在運行的進程數 196 
sleeping :休眠狀態的進程數 
0 stopped :停止的進程數 
0 zombie :僵尸進程數

第3行:

Cpu(s): 0.0%us :(user mode)用戶所占用CPU百分比 
0.1%sy :(system mode)內核所占用CPU百分比 
0.0%ni :(nice)用戶進程內改變過優先級的進程占用CPU百分比 
99.9% :id(idle task) 空閑CPU百分比 
0.0%wa :(I/O waiting)等待輸入輸出的CPU時間百分比(I/O 產生的問題,會嚴重的影響您的服務器性能,因為I/O是消耗CPU的) 
0.0%hi :(servicing IRQs)硬中斷百分比 
0.0%si :(servicing soft IRQs)軟中斷百分比 
0.0%st :(steal (time given to other DomU instances))虛擬化被偷時間

第4行:

Mem: 1867292 tota :物理內存總量 
734708 used :已使用的物理內存 
150628 free :未使用的物理內存 
981956 buff/cache:內核緩存占用的物理內存

第5行:

Swap: 2098172 total:交換分區總容量 
0k used:已使用的交換分區容量 
2098172 free:未使用的交換分區容量 
842256 avail Mem :緩存的總容量

如果存在未使用的物理內存,則cached占用的是物理內存,如果未使用的物理內存為0,則cached將會占用部分swap分區,那么cached的容量是它占用的物理內存部分加上占用的swap分區的部分。

第6行為第二部分:

此為top的內部命令輸入部分,常用命令有:

s 改變top命令的刷新頻率(默認是3秒),Change delay from 3.0 to:輸入相應的數字 
l 關閉或開啟第一行 top 信息 
t 關閉或開啟第二行 Tasks 和第三行 Cpus 信息 
m 關閉或開啟第一部分第四行 Mem 和 第五行 Swap 信息 
N 以 PID 的大小的順序排列表示進程列表 
P 以 CPU 占用率大小的順序排列進程列表 
M 以內存占用率大小的順序排列進程列表 
R 對排列進行反轉 
u 顯示指定用戶的進程,默認是全部用戶的進程 
c 顯示進程的全路徑,默認是只有進程名 
n 或者 # 設置在進程列表所顯示進程的數量,但最多是顯示滿屏 
f 調整top命令顯示列表項。如增加GROUP列或UID列等等。但在下次使用top命令,還是原來成默認的。 
k 結束進程 
r 調整進程的優先級(Linux和AIX是從-20到19,HP-UX為0到39),至于如何得到的,可以通過man nice來查看。 
h 顯示幫助 
q 退出 top

其余部分為進程信息,top進程信息列表中各列的含義:

PID 進程id 
PPID 父進程id 
RUSER Real user name 
UID 進程所有者的用戶id 
USER 進程所有者的用戶名 
GROUP 進程所有者的組名 
TTY 啟動進程的終端名。不是從終端啟動的進程則顯示為 ? 
PR 優先級 
NI nice值。負值表示高優先級,正值表示低優先級(Linux和AIX是從-20到19,HP-UX為0到39) 
P 最后使用的CPU,僅在多CPU環境下有意義 
%CPU 上次更新到現在的CPU時間占用百分比 
TIME 進程使用的CPU時間總計,單位秒 
TIME+ 進程使用的CPU時間總計,單位1/100秒 
%MEM 進程使用的物理內存百分比 
VIRT 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES 
SWAP 進程使用的虛擬內存中,被換出的大小,單位kb。 
RES 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA 
CODE 可執行代碼占用的物理內存大小,單位kb 
DATA 可執行代碼以外的部分(數據段+棧)占用的物理內存大小,單位kb 
SHR 共享內存大小,單位kb 
nFLT 頁面錯誤次數 
nDRT 最后一次寫入到現在,被修改過的頁面數 
S 進程狀態

D=不可中斷的睡眠狀態 
R=運行 
S=休眠 
T=跟蹤/停止 
Z=僵尸進程 
COMMAND 命令名/命令行 
WCHAN 若該進程在睡眠,則顯示睡眠中的系統函數名 
Flags 任務標志

默認情況下僅顯示比較重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通過我們上面所說的內部的f命令,來調整列表選項。

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

(0)
zerozero
上一篇 2017-05-15 21:01
下一篇 2017-05-15 21:30

相關推薦

  • btrfs文件系統及管理

      什么是btrfs? Btrfs(B-tree文件系統,通常念成Butter FS,Better FS或B-tree FS),linux文件系統,具有寫時復制COW(copy-on-write),改善ext3文件系統單文件大小限制,并加入其他特性,如可寫快照,快照的快照,內建RAID,子卷(subvloume),專注于容錯,修復和易于管理。單文件…

    系統運維 2016-05-13
  • 磁盤分區,raid,lvm,腳本編程_第七周練習

    Q1:創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; [root@promote ~]# fdisk /dev/sdb        &n…

    Linux干貨 2016-12-24
  • 第9天:壓縮,任務,rpm包

    http://note.youdao.com/yws/public/redirect/share?id=b3e4fc37bdd98991638dce69ce3eea53&type=false

    Linux干貨 2016-08-18
  • LVM基本原理及使用

    LVM簡介 LVM全稱Logical Volume Manager(邏輯卷管理),是將幾個物理分區(或硬盤)通過軟件組合成一塊看起來是獨立大硬盤(VG),然后對這塊大硬盤分割成可使用的邏輯卷(LV),最終能夠掛載使用,以達到對磁盤空間進行彈性管理的目的。 LVM的基本原理 基本術語 dm(device mapper):將一個或多個底層塊設備組織成一個邏輯設備…

    Linux干貨 2016-04-17
  • Linux-進程管理

    本小節介紹  1、進程的描述  2、用戶怎么樣管理進程  3、進程管理的命令 進程的概念        內核的功能:進程管理、文件系統、網絡功能、內存管理、驅動程序、安全功能等。        Pro…

    2017-07-02
  • vim編譯器與shell腳本簡介

    一、vim文本編譯器       vi:Visual Interface,文本編輯器;   文本: ASCII Unicode  文本編輯種類:行編輯器:sed  ;全屏編輯器:nano,vi ,vim ;其他編輯器:gedit(圖形),g…

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