1. 程式人生 > >【linux之進程管理,系統監控】

【linux之進程管理,系統監控】

kill -9 每隔一秒 exist 物理內存 基於 openbsd inpu ocs pid

一、進程管理

前臺進程:一般是指占據著標準輸入和/或標準輸出的進程
後臺進程:不占據
默認開啟的進程都是前臺進程
ctrl+C 中斷
ctrl+z 從前臺轉入後臺
bg 後臺進程編號 讓其在後臺運行
ls -R / & 讓其在後臺進行

使一個進程在後臺進行
1.ctrl+z將前臺進程調入後臺,默認進行到後臺後處於停止狀態
若想要在後臺運行該後臺進程,使用 bg # (#表示後臺進程編號),此時ctrl+c不管用
2.在開啟進程的時候,使用&符號綴在命令之後,也是在後臺運行該進程

使用fg命令可以將已被調入後臺的進程重新調回前臺運行
fg # (#表示後臺進程編號)

jobs 列出後臺進程
+:將默認操作的進程
-:將第二個操作的進程

殺後臺進程:kill -9 PID

紅帽5支持 kill %1 殺死一號進程

PRI:優先級

renice:調整NI值
renice -10 PID

nice:在執行命令的時候直接指定NI值
nice -n +15 vim .bashrc

trap 捕捉指定信號,但是不完成信號本身的功能,而是執行COMMAND部分(信號名字必須大寫)
trap ‘命令’ SIG_SPECIFY
trap `echo "not exists"` SIGINT 捕捉到ctrl+c,輸出not exists

進程的調度執行
守護進程(系統服務),可中斷式的睡眠狀態進程
ls /etc/init.d

kill:後面加PID,向進程或進程組發生信號
2:中斷信號,CTRL+C
9:強行終止機制
15:終止進程,默認的信號
kill -l
2) SIGINT(中斷) 9) SIGKILL(強制終止機制) 15) SIGTERM


pkill :後面加進程名稱,結束進程
pkill vim

killall : kill processes by name
比pkill效率更高一點

二、系統監控命令

ps 查看進程

輸出進程狀態的即時點信息
選項:
a:所有與終端有關的進程
u:按用戶名和啟動時間的順序來顯示進程
x:所有與終端無關的進程

    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.5   2824  1400 ?        Ss   06:07   0:01 /sbin/init
root         
2 0.0 0.0 0 0 ? S 06:07 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 06:07 0:00 [migration/0] USER: 進程所有者 PID: 進程ID %CPU: 占用的 CPU 使用率 %MEM: 占用的內存使用率 VSZ: 占用的虛擬內存大小 RSS: 占用的內存大小 TTY: 終端的次要裝置號碼 (minor device number of tty) STAT: 進程狀態: START: 啟動進程的時間; TIME: 進程消耗CPU的時間; COMMAND:命令的名稱和參數;

=========================================進程STAT狀態==================================
D 無法中斷的休眠狀態(通常 IO 的進程); 
R 正在運行,在可中斷隊列中; 
S 處於休眠狀態,靜止狀態; 
T 停止或被追蹤,暫停執行; 
W 進入內存交換(從內核2.6開始無效); 
X 死掉的進程; 
Z 僵屍進程不存在但暫時無法消除;
W: 沒有足夠的記憶體分頁可分配
WCHAN 正在等待的進程資源;
<: 高優先級進程
N: 低優先序進程
L: 有記憶體分頁分配並鎖在記憶體內 (即時系統或捱A I/O),即,有些頁被鎖進內存

s 進程的領導者(在它之下有子進程); 
l 多進程的(使用 CLONE_THREAD, 類似 NPTL pthreads); 
+ 位於後臺的進程組;

進程的優先級
1.占據CPU處理的時間長短
2.被CPU加載處理的機會

數字越小,優先級越高

0-139
0-99:系統默認定義的
100-139:用戶可以調整的

NICE 調整nice偏移量,修改優先級 -20~+19

普通用戶只能增加nice值,只能使用正整數的nice值
管理員root可以使用負數的nice值

數字越小,優先級越高
120 0

ps axo user,pid,command | head -2
USER       PID COMMAND
root         1 /sbin/init

pstree :顯示進程之間的父子關系
     pstree
init─┬─abrtd
     ├─acpid
     ├─atd
     ├─auditd───{auditd}
     ├─automount───4*[{automount}]
     ├─console-kit-dae───63*[{console-kit-da}]
     ├─crond
     ├─dbus-daemon───{dbus-daemon}
     ├─hald───hald-runner─┬─hald-addon-acpi
     │                    ├─hald-addon-inpu
     │                    └─hald-addon-rfki
     ├─login───bash
     ├─master─┬─pickup
     │        └─qmgr
     ├─mdadm
     ├─5*[mingetty]
     ├─rpc.idmapd
     ├─rpc.statd
     ├─rpcbind
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd───sshd───bash───pstree
     └─udevd───2*[udevd]

pgrep
查看進程的pid

pgrep ps
36

top

top:模式化命令,全屏,動態顯示進程信息,默認情況下每三秒刷新一次
   M:按照內存使用率,從大到小排序顯示
   P:按照CPU處理的時間排序顯示
   T:按照運行時間排序顯示   
   l:是否顯示開啟時間和平均負載的信息
   m:是否顯示內存和交換分區的信息
   t:是否顯示任務量和CPU的信息
   
   k PID;結束進程
   q:退出TOP界面
   
   -d TIME:修改自動刷新時間
top - 09:00:19 (系統時間)up  2:52(開機時間),  2 users,  load average(負載平均值,1分鐘,5分鐘,15分鐘): 0.07, 0.07, 0.01
Tasks: 111 total,   1 running, 110 sleeping,   0 stopped,   0 zombie(僵屍)
Cpu(s)(只有一個CPU):  0.3%us,  0.3%sy,  0.0%ni(nice), 99.0%id(空閑),  0.0%wa(wait),  0.0%hi(硬交換),  0.3%si(軟交換),  0.0%st
Mem:    249620k total,   243048k used,     6572k free,    23696k buffers(緩沖區存元數據信息)
Swap:   524280k total,        0k used,   524280k free,   144352k cached(緩存區存數據信息)

netstat

常見參數
-a (all)顯示所有選項,默認不顯示LISTEN相關
-t (tcp)僅顯示tcp相關選項
-u (udp)僅顯示udp相關選項
-n 拒絕顯示別名,能顯示數字的全部轉化成數字。
-l 僅列出有在 Listen (監聽) 的服務狀態

-p 顯示建立相關鏈接的程序名
-r 顯示路由信息,路由表
-e 顯示擴展信息,例如uid等
-s 按各個協議進行統計
-c 每隔一個固定時間,執行該netstat命令。

提示:LISTEN和LISTENING的狀態只有用-a或者-l才能看到

vmstat:虛擬內存的統計信息

vmstat 1 10:每隔一秒刷新一次,一共顯示10次

vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0   6084  24184 144384   54    0     0    23   21   20  0  1 98  1  0

r :表示運行隊列,如果運行隊列過大,表示你的CPU很繁忙,一般會造成CPU使用率很高

b :表示阻塞的進程數

swpd :虛擬內存已使用的大小,如果大於0,表示你的機器物理內存不足了,如果不是程序內存泄露的原因,那麽你該升級內存了或者把耗內存的任務遷移到其他機器

free :空閑的物理內存的大小

buff : 系統占用的緩存大小

cache :直接用來記憶我們打開的文件,給文件做緩沖

si :每秒從磁盤讀入虛擬內存的大小,如果這個值大於0,表示物理內存不夠用或者內存泄露了

us :用戶CPU時間

sy :系統CPU時間

so : 每秒虛擬內存寫入磁盤的大小,如果這個值大於0,同上。

sy : 系統CPU時間,如果太高,表示系統調用時間長,例如是IO操作頻繁。

id : 空閑 CPU時間,一般來說,id + us + sy = 100

wt : 等待IO CPU時間。

lsof

列出打開的文件

它常用於以列表的形式顯示所有打開的文件和進程。打開的文件包括磁盤文件、網絡套接字、管道、設備和進程。使用這條命令的主要情形之一就是在無法掛載磁盤和顯示正在使用或者打開某個文件的錯誤信息的時候。使用這條命令,你可以很容易地看到正在使用哪個文件。

網絡包分析器:tcpdump

 Tcpdump是最廣泛使用的網絡包分析器或者包監控程序之一,它用於捕捉或者過濾網絡上指定接口上接收或者傳輸的TCP/IP包。它還有一個選項用於把捕捉到的包保存到文件裏,以便以後進行分析。  

-h:查看命令幫助

-i:網絡接口

-c :需要輸出包數量

進程監控:Htop

  Htop 是一個非常高級的交互式的實時linux進程監控工具。 它和top命令十分相似,但是它具有更豐富的特性,例如用戶可以友好地管理進程,快捷鍵,垂直和水平方式顯示進程等等。

監控Linux磁盤I/O :Iotop

 Iotop命令同樣也非常類似於top命令和Htop程序,不過它具有監控並顯示實時磁盤I/O和進程的統計功能。在查找具體進程和大量使用磁盤讀寫進程的時候,這個工具就非常有用。  

輸入/輸出統計:Iostat

  Iostat是一個用於收集顯示系統存儲設備輸入和輸出狀態統計的簡單工具。這個工具常常用來追蹤存儲設備的性能問題,其中存儲設備包括設備、本地磁盤,以及諸如使用NFS等的遠端磁盤。

%user: 在用戶級別運行所使用的CPU的百分比.

%nice:優先進程消耗的CPU時間,占所有CPU的百分比.

%system: 在系統級別(kernel)運行所使用CPU的百分比.

%iowait: CPU等待硬件I/O時,所占用CPU百分比.

%steal: 管理程序維護另一個虛擬處理器時,虛擬CPU的無意識等待時間百分比.

%idle: CPU空閑時間的百分比.


tps: 每秒鐘發送到的I/O請求數.

KB_read /s: 每秒讀取的block數.

KB_wrtn/s: 每秒寫入的block數.

KB_read: 啟動到現在 讀入的block總數.

KB_wrtn: 啟動到現在寫入的block總數.

實時局域網IP監控:IPTraf

IPTraf是一個在Linux控制臺運行的、開放源代碼的實時網絡(局域網)監控應用。它采集了大量信息,比如通過網絡的IP流量監控,包括TCP標記、ICMP詳細信息、TCP/UDP流量分離、TCP連接包和字節數。同時還采集有關接口狀態的常見信息和詳細信息:TCP、UDP、IP、ICMP、非IP,IP校驗和錯誤,接口活動等。

服務管理程序:sysv-rc-conf

  Linux 系統任何時候都運行在一個指定的運行級上,並且不同的運行級的程序和服務都不同,所要完成的工作和要達到的目的都不同,系統可以在這些運行級之間進行切換,以完成不同的工作。sysv-rc-conf是一個強大的服務管理程序,用於查看程序和服務的運行級別。

監視每個進程使用的網絡帶寬:NetHogs

  NetHogs是一個開放源源代碼的很小程序(與Linux下的top命令很相似),它密切監視著系統上每個進程的網絡活動。同時還追蹤著每個程序或者應用所使用的實時網絡帶寬。

監視網絡帶寬:iftop

  iftop是另一個在控制臺運行的開放源代碼系統監控應用,它顯示了系統上通過網絡接口的應用網絡帶寬使用(源主機或者目的主機)的列表,這個列表定期更新。iftop用於監視網絡的使用情況,而‘top‘用於監視CPU的使用情況。iftop是‘top‘工具系列中的一員,它用於監視所選接口,並顯示兩個主機間當前網絡帶寬的使用情況。

<= => :表示的是流量的方向。
TX:發送流量
RX:接收流量
TOTAL:總流量
Cumm:運行iftop到目前時間的總流量
peak:流量峰值
rates:分別表示過去 2s 10s 40s 的平均流量

界面操作:

按h切換是否顯示幫助;

按n切換顯示本機的IP或主機名;

按s切換是否顯示本機的host信息;

按d切換是否顯示遠端目標主機的host信息;

按t切換顯示格式為2行/1行/只顯示發送流量/只顯示接收流量;

linux系統監控工具——Conky

Conky 是一個應用於桌面環境的系統監視軟件,可以在桌面上監控系統運行狀態、網絡狀態等一系列參數,而且可自由定制,但對於新手來說可能會比較難於上手。

Conky是一種自由軟件,用於X視窗系統的系統監視,可以在FreeBSD、OpenBSD和各種Linux發布上使用的自由軟件。Conky具有很高的可配置性,可以監視許多系統參數,如:CPU、內存、交換內存、硬盤使用情況等狀態;各種硬件的溫度;系統的進程(top);網絡狀態;電池電量;系統信息和郵件收發;各種音樂播放器MPD、XMMS2、BMPx、Audacious)的控制。不像其他系統監視器那樣需要高級別的部件工具箱(widget toolkits)來渲染他們的信息,Conky可以直接在X視窗下渲染,這意味著在相同配置下Conky可以消耗更少的資源。

Linux系統監控工具——Nagios

Nagios是一個監視系統運行狀態和網絡信息的監視系統。Nagios能監視所指定的本地或遠程主機以及服務,同時提供異常通知功能等。[ Nagios可運行在Linux/Unix平臺之上,同時提供一個可選的基於瀏覽器的WEB界面以方便系統管理人員查看網絡狀態,各種系統問題,以及日誌等等。

Nagios 可以監控的功能有:

1、監控網絡服務(SMTP、POP3、HTTP、NNTP、PING等);

2、監控主機資源(處理器負荷、磁盤利用率等);

3、簡單地插件設計使得用戶可以方便地擴展自己服務的檢測方法;

4、並行服務檢查機制;

5、具備定義網絡分層結構的能力,用"parent"主機定義來表達網絡主機間的關系,這種關系可被用來發現和明晰主機宕機或不可達狀態;

6、當服務或主機問題產生與解決時將告警發送給聯系人(通過EMail、短信、用戶定義方式);

7、可以定義一些處理程序,使之能夠在服務或者主機發生故障時起到預防作用;

8、自動的日誌滾動功能;

9、可以支持並實現對主機的冗余監控;

10、可選的WEB界面用於查看當前的網絡狀態、通知和故障歷史、日誌文件等;

【linux之進程管理,系統監控】