linux進程管理工具

htophtml

 htop工具使用詳解 python

 特色:top 的加強版,支持圖形界面的鼠標操做,能夠橫向或者縱向瀏覽進程列表,殺死進程時不須要輸入進程編號ios

  安裝:經過yum install -y htopshell

[root@iZ28qzns9m4Z ~]# yum install htop
Loaded plugins: langpacks
base                                               | 3.6 kB     00:00     
epel                                               | 4.3 kB     00:00     
extras                                             | 3.4 kB     00:00     
updates                                            | 3.4 kB     00:00     
(1/3): epel/x86_64/updateinfo                        | 362 kB   00:00     
(2/3): epel/x86_64/primary_db                        | 3.5 MB   00:00     
(3/3): updates/7/x86_64/primary_db                   | 4.0 MB   00:01     
Package htop-1.0.3-3.el7.x86_64 already installed and latest version
Nothing to do
[root@iZ28qzns9m4Z ~]#

wKiom1YPXmDi6-OxAA6IBUzNBjo848.jpg



















F1幫助 apache

F2設定安全

1.Metersbash

設定頂端的 顯示信息,分爲左右兩側,Left column 表示左側的顯示的信息,Right column表示右側顯示的信息,若是要新加選項,能夠選擇Available meters添加,F5新增到上方左側,F6新增到上方右側。Left column和Right column下面的選項,能夠選定信息的顯示方式,有LED、Bar(進度條)、Text(文本模式),能夠根據我的喜愛進行設置
服務器

wKiom1YPZDnBu-W6AAFzgarO5UQ850.jpg2. Display options網絡

Linux htop工具使用詳解選擇要顯示的內容,按空格 x表示顯示,選擇完後,按F10保存app

wKioL1YPZH7w3dYxAAICVsrXi_o460.jpg

wKiom1YPZG_wJjy2AARPGNJxHdw751.jpg

3.Colors

Linux htop工具使用詳解設定界面以什麼顏色來顯示,我的認爲用處不大,各人喜愛不一樣,假如咱們選擇Black on White後顯示效果以下

wKioL1YPZR_TwoweAACht2twmZ4341.jpg

4.Colums

做用是增長或取消要顯示的各項內容,選擇後F7(向上移動)、F8(向下移動)、F9(取消顯示、F10(保存更改))此處增長了PPID、PGRP,根據各人需求,顯示那些信息

wKiom1YPZUKBQgpZAAFPfX-_qEg678.jpg

wKioL1YPZVKBUetmAAWD9Jmpo3U935.jpg

 

F3搜索

wKiom1YPYwHzuJnBAAKFWbSqwGQ950.jpg 

F4增量進程過濾器

wKioL1YPZdrDPd1_AAEfMLZTU98716.jpg

F5顯示樹狀結構

wKioL1YPZpGgyYS1AAhZ86DUU8c156.jpg

F6選擇排序方式

wKioL1YPZqPhwI67AAUexVuEU6U367.jpg

F7 可減小nice值提升對應進程的優先級 數值越小越重要,優先級越高

wKioL1YPZr2ytb_XAAEbxqt33_U100.jpg

F8可增長nice值,下降對應進程的優先級 

wKiom1YPZsXyvR49AAJSMIVonb4766.jpg

F9可對進程傳遞信號 殺死進程

F10結束 

htop經常使用交互式命令:

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

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

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

t: 顯示進程的層次結構;

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

 選項:

-d #: 延遲時長

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

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

vmstat :

 是最多見的Linux/Unix監控工具,能夠展示給定時間間隔的服務器的狀態值,包括服務器的CPU使用率,內存使用,虛擬內存交換狀況,IO讀寫狀況,相比top,能夠看到整個機器的CPU,內存,IO的使用狀況,而不是單單看到各個進程的CPU使用率和內存使用率

wKiom1YPaAGAYjCMAAEXT4XY7BI740.jpg

  用法:vmsate [delay [count]]  

[root@iZ28qzns9m4Z ~]# 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
 0  0      0 291464 173488 319600    0    0     0     1   14   24  0  0 100  0  0
 0  0      0 291488 173488 319600    0    0     0     0  467  247  1  0 99  0  0
 0  0      0 291488 173488 319600    0    0     0     8  479  243  0  1 100  0  0
 0  0      0 291552 173488 319600    0    0     0     0  506  257  0  0 100  0  0
 0  0      0 291556 173488 319600    0    0     0     0  446  248  0  0 100  0  0

注:2爲執行頻率爲2秒一次,5爲一共執行5次 

 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:用戶CPU時間,us接近100,r運行隊列達到80(機器在作壓力測試,性能表現不佳)。 

sy:系統CPU時間,若是過高,表示系統調用時間長,例如是IO操做頻繁。

id:空閒 CPU時間,通常來講,id + us + sy = 100,通常我認爲id是空閒CPU使用率,us是用戶CPU使用   率,sy是系統CPU使用率。

wa:等待IO CPU時間。

選項:

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

[root@iZ28qzns9m4Z ~]# vmstat -s
      1016656 K total memory
       725196 K used memory
       365492 K active memory
       195836 K inactive memory
       291460 K free memory
       173488 K buffer memory
       319596 K swap cache
            0 K total swap
            0 K used swap
            0 K free swap
       110198 non-nice user cpu ticks
          587 nice user cpu ticks
       113672 system cpu ticks
    161711582 idle cpu ticks
        11229 IO-wait cpu ticks
           39 IRQ cpu ticks
         5372 softirq cpu ticks
       196502 stolen cpu ticks
       227801 pages paged in
      1315272 pages paged out
            0 pages swapped in
            0 pages swapped out
    794969704 interrupts
    382508916 CPU context switches
   1442223029 boot time
        83643 forks
[root@iZ28qzns9m4Z ~]#

glances 

glances 是一款用於 Linux、BSD 的開源命令行系統監視工具,它使用 Python 語言開發,可以監視 CPU、負載、內存、磁盤 I/O、網絡流量、文件系統、系統溫度等信息

安裝:

[root@iZ28qzns9m4Z ~]# cat /etc/yum.repos.d/epel.repo 
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://mirrors.aliyun.com/epel/7/$basearch
http://mirrors.aliyuncs.com/epel/7/$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

glances: 

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


經常使用選項:

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

 -B @IP|host :綁定服務器端 IP 地址或者主機名稱

 -c @IP|host:鏈接 glances 服務器端

 -C file:設置配置文件默認是 /etc/glances/glances.conf 

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

 -e:顯示傳感器溫度

 -f file:設置輸出文件(格式是 HTML 或者 CSV)

 -m:關閉掛載的磁盤模塊

 -n:關閉網絡模塊

 -p PORT:設置運行端口默認是 61209 

 -P password:設置客戶端 / 服務器密碼

 -s:設置 glances 運行模式爲服務器

 -t sec:設置屏幕刷新的時間間隔,單位爲秒,默認值爲 2 秒,數值許可範圍:1~32767 

 -h : 顯示幫助信息

 -v : 顯示版本信息。

 -o {HTML|CSV}:

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

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

wKioL1YPeQbA0aJmAAn3mr8vAeY546.jpg

交互命令:

 h : 顯示幫助信息

 q : 離開程序退出

 c :按照 CPU 實時負載對系統進程進行排序

 m :按照內存使用情況對系統進程排序

 i:按照 I/O 使用情況對系統進程排序

 p: 按照進程名稱排序

 d : 顯示磁盤讀寫情況 

 w : 刪除日誌文件

 l :顯示日誌

 s: 顯示傳感器信息

 f : 顯示系統信息

 1 :輪流顯示每一個 CPU 內核的使用狀況(次選項僅僅使用在多核 CPU 系統

wKiom1YPdobxHClFAAZfA8HCa40874.jpgglances支持遠程模式:

便可以以C/S模式工做:

  Server: 以監聽模式啓動glances;

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

①安裝pip-python  

wget --no-check-certificate   下載程序包 
tar zxvf pip-1.4.1.tar.gz  
cd pip-1.4.1/
python setup.py install
pip install -U Markdown
yum install lm_sensors 安裝監控主板程序包
pip install Jinja2 
glances -o HTML -f /var/www/html
glances -o CSV -f /home/cjh/glances.csv 輸出爲csv 格式
libreoffice --calc %U /tmp/glances.csv

wKiom1YPeV6C38M7AAMf7YBw8J8832.jpg

服務模式:

glances -s -B IPADDR

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

  客戶端模式:

glances -c IPADDR

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

dstat:

 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

想輸出一個csv格式的文件用於之後,能夠經過下面的命令

dstat –output /tmp/sampleoutput.csv -cdn

wKiom1YPfSvTDugjAAO-aCgSPG4315.jpg

kill以及 killall

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

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

    (1) kill -l

    (2) man 7 signal  

    向進程發信號:

        kill [-SIGNAL] PID 

        默認的信號爲SIGTERM;

        

        信號表示方式:

        (1) 完整名稱,例如SIGINT

        (2) 簡寫名稱,例如INT

        (3) 數據代稱,例如2

        經常使用信號:

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

        SIGINT:2, 打斷正在運行中的進程,至關於鍵盤組合鍵Ctrl+c

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

        SIGTERM: 15, 安全停止正在運行中的進程

        SIGSTOP: 19, 暫停進程

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

kill類似的一組進程:

    killall [-SIGNAL] PROGRAM

[root@iZ28qzns9m4Z pip-1.4.1]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Sep14 ?        00:00:33 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2     0  0 Sep14 ?        00:00:00 [kthreadd]
root       330     1  0 Sep14 ?        00:00:04 /usr/lib/systemd/systemd-journald
root       342     1  0 Sep14 ?        00:00:00 /usr/sbin/lvmetad -f
root       348     1  0 Sep14 ?        00:00:00 /usr/lib/systemd/systemd-udevd
root       424     1  0 Sep14 ?        00:00:01 /usr/sbin/rsyslogd -n
root       426     1  0 Sep14 ?        00:00:11 /usr/lib/systemd/systemd-logind
dbus       427     1  0 Sep14 ?        00:00:22 /bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
nscd       429     1  0 Sep14 ?        00:00:03 /usr/sbin/nscd
root       444     1  0 Sep14 ?        00:00:04 /usr/sbin/crond -n
root       459     1  0 Sep14 tty1     00:00:00 /sbin/agetty --noclear tty1
ntp        466     1  0 Sep14 ?        00:00:10 /usr/sbin/ntpd -u ntp:ntp -g
root       512     1  0 Sep14 ?        00:00:00 /sbin/iprupdate --daemon
root       515     1  0 Sep14 ?        00:00:00 /sbin/iprinit --daemon
root       534     1  0 Sep14 ?        00:00:00 /sbin/iprdump --daemon
root       643     1  0 Sep14 ?        00:12:08 /usr/local/aegis/aegis_update/AliYunDunUpdate
root       890     1  0 Sep14 ?        00:00:00 /usr/sbin/gshelld
root       943     1  0 Sep14 ?        00:33:30 /usr/local/aegis/aegis_client/aegis_00_79/AliYunDun
root       961     1  0 Sep14 ?        00:32:43 /usr/local/aegis/alihids/AliHids
root      2972     1  0 Sep18 ?        00:00:37 /usr/sbin/httpd -DFOREGROUND
apache   11291  2972  0 Sep28 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   11292  2972  0 Sep28 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   11293  2972  0 Sep28 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   11294  2972  0 Sep28 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root     18579 21752  0 09:55 ?        00:00:00 sshd: root@pts/0
root     18581 18579  0 09:55 pts/0    00:00:00 -bash
root     18687     2  0 11:10 ?        00:00:00 [kworker/0:2]
root     18858     2  0 14:01 ?        00:00:00 [kworker/0:1]
apache   18869  2972  0 14:21 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   18870  2972  0 14:21 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   18871  2972  0 14:21 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   18872  2972  0 14:21 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   18876  2972  0 14:21 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   18992  2972  0 14:29 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root     19018     2  0 15:00 ?        00:00:00 [kworker/0:0]
root     19039 18581  0 15:03 pts/0    00:00:00 ps -ef
root     21752     1  0 Sep20 ?        00:00:00 /usr/sbin/sshd -D
root     32457     2  0 Sep17 ?        00:00:00 [kworker/0:1H]
[root@iZ28qzns9m4Z pip-1.4.1]# killall httpd
[root@iZ28qzns9m4Z pip-1.4.1]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Sep14 ?        00:00:33 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root       261     2  0 Sep14 ?        00:00:00 [ext4-dio-unwrit]
root       330     1  0 Sep14 ?        00:00:04 /usr/lib/systemd/systemd-journald
root       342     1  0 Sep14 ?        00:00:00 /usr/sbin/lvmetad -f
root       348     1  0 Sep14 ?        00:00:00 /usr/lib/systemd/systemd-udevd
root       424     1  0 Sep14 ?        00:00:01 /usr/sbin/rsyslogd -n
root       426     1  0 Sep14 ?        00:00:11 /usr/lib/systemd/systemd-logind
dbus       427     1  0 Sep14 ?        00:00:22 /bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
nscd       429     1  0 Sep14 ?        00:00:03 /usr/sbin/nscd
root       444     1  0 Sep14 ?        00:00:04 /usr/sbin/crond -n
root       459     1  0 Sep14 tty1     00:00:00 /sbin/agetty --noclear tty1
ntp        466     1  0 Sep14 ?        00:00:10 /usr/sbin/ntpd -u ntp:ntp -g
root       512     1  0 Sep14 ?        00:00:00 /sbin/iprupdate --daemon
root       515     1  0 Sep14 ?        00:00:00 /sbin/iprinit --daemon
root       534     1  0 Sep14 ?        00:00:00 /sbin/iprdump --daemon
root       643     1  0 Sep14 ?        00:12:08 /usr/local/aegis/aegis_update/AliYunDunUpdate
root       890     1  0 Sep14 ?        00:00:00 /usr/sbin/gshelld
root       943     1  0 Sep14 ?        00:33:31 /usr/local/aegis/aegis_client/aegis_00_79/AliYunDun
root       961     1  0 Sep14 ?        00:32:43 /usr/local/aegis/alihids/AliHids
root     18579 21752  0 09:55 ?        00:00:00 sshd: root@pts/0
root     18581 18579  0 09:55 pts/0    00:00:00 -bash
root     18687     2  0 11:10 ?        00:00:00 [kworker/0:2]
root     18858     2  0 14:01 ?        00:00:00 [kworker/0:1]
root     19018     2  0 15:00 ?        00:00:00 [kworker/0:0]
root     19047 18581  0 15:04 pts/0    00:00:00 ps -ef
root     21752     1  0 Sep20 ?        00:00:00 /usr/sbin/sshd -D
root     32457     2  0 Sep17 ?        00:00:00 [kworker/0:1H]
[root@iZ28qzns9m4Z pip-1.4.1]#

前臺做業:經過終端啓動,而且在中止以前也會一直佔據終端;

後臺做業:做業啓動之時與終端無關,或者是在前臺啓動,但啓動後轉爲與終端無關模式運行;

一、對於已經啓動並處於運行中的做業:Ctrl+z

注意: 做業被送日後臺後,默認處於stopped狀態;

二、對於還沒有啓動的做業: COMMAND &

注意: 此兩類方式相關做業,仍然與終端相關;這意味着,終端終止,將會致使與此終端相關的全部做業被終止;

剝離進程與終端的關係:

# nohup COMMAND &

做業控制命令:

  fg [[%]job_num]:把指定的做業調回前臺;

  bg [[%]job_num]:把調日後臺的指定的做業啓動起來,讓其後臺默默運行;但此做業必須支持運行    於後臺;

  kill [%job_num]:終止指定的做業;  

進程優先級調整:

靜態優先級:

經過指定進程的nice值來調整其優先級;用戶 空間運行的進程通常都有其nice值;

nice值: -20, 19

優先級:  100, 139

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

(1) 對於還沒有啓動的進程:

# nice -n N COMMAND

(2) 對於已經啓動並處於運行中的進程:

# renice -n N PID 

注意:普通用戶默認只能調低優先級即僅可以調大nice,;

[root@iZ28qzns9m4Z ~]# top &
[1] 959
[root@iZ28qzns9m4Z ~]# jobs
[1]+  Stopped                 top
[root@iZ28qzns9m4Z ~]# glances &
[2] 969
[root@iZ28qzns9m4Z ~]# jobs
[1]-  Stopped                 top
[2]+  Stopped                 glances
[root@iZ28qzns9m4Z ~]# 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 852348  11224  80356    0    0   529    14  522  307  1  1 91  3  4
[root@iZ28qzns9m4Z ~]# ^C
[root@iZ28qzns9m4Z ~]# 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 852292  11224  80388    0    0   519    14  521  306  1  1 92  2  4
[root@iZ28qzns9m4Z ~]# vmstat 2
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 852508  11224  80388    0    0   502    14  515  304  1  1 92  2  4
^Z
[3]+  Stopped                 vmstat 2
[root@iZ28qzns9m4Z ~]# jobs
[1]   Stopped                 top
[2]-  Stopped                 glances
[3]+  Stopped                 vmstat 2

Welcome to aliyun Elastic Compute Service! #重啓終端後臺做業消失

[root@iZ28qzns9m4Z ~]# jobs
[root@iZ28qzns9m4Z ~]# 
[root@iZ28qzns9m4Z ~]# vi aaa

[2]+  Stopped                 vi aaa
[root@iZ28qzns9m4Z ~]# job
-bash: job: command not found
[root@iZ28qzns9m4Z ~]# jobs
[1]-  Stopped                 glances
[2]+  Stopped                 vi aaa
[root@iZ28qzns9m4Z ~]# fg %1
glances
[root@iZ28qzns9m4Z ~]# glances &
[3] 1067
[root@iZ28qzns9m4Z ~]# jobs
[2]-  Stopped                 vi aaa
[3]+  Stopped                 glances
[root@iZ28qzns9m4Z ~]# bg 2
[2]- vi aaa &
[root@iZ28qzns9m4Z ~]# jobs
[2]+  Stopped                 vi aaa
[3]-  Stopped                 glances
[root@iZ28qzns9m4Z ~]#