進程及做業管理(二)

概述:php

   本篇是上篇進程及做業管理(一)http://1992tao.blog.51cto.com/11606804/1851196的後續內容,將繼續介紹進程相關的管理工具!html

=============================================================================linux

進程查看及管理工具

 1.uptime命令ios

uptime命令:apache

  • 顯示當前時間,系統已啓動的時間、當前上線人數,系統平均負載(一、五、10分鐘的平均負載,通常不會超過1);centos

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

  • 若是每一個CPU內核的當前活動進程數不大於3的話,那麼系統的性能良好。若是每一個CPU內核的任務數大於5,那麼這臺機器的性能有嚴重問題;bash

  • 若是linux主機是1個雙核CPU的話,當Load Average 爲6的時候說明機器已經被充分使用了。
    服務器

演示:網絡

[root@centos7 ~]# uptime
 22:22:11 up 13:54,  2 users,  load average: 0.00, 0.01, 0.05

 2.top命令

top命令:- display Linux processes

  • 相對於ps而言,ps顯示的是某個時間點的進程狀態信息,然而在實際的運用當中,咱們可能須要動態持續監控進程的運行狀態,top命令就能夠實現這一功能。

wKioL1i03NuAKfrLAACNC3Ygaq0551.png


命令及選項:

排序命令:

  • P:以佔據cpu百分比排序;

  • M:以佔據內存百分比排序;

  • T:累計佔用cpu時間排序

首部信息命令:

  • uptime信息:l 命令 是否顯示;

  • tasks及cpu:t 命令 是否顯示;

  • 內存信息:  m 命令 是否顯示;

相關操做命令:

  • 退出命令:    q

  • 刷新時間間隔:s

  • 終止指定進程:k

選項:

  • -d #:指定刷新時間間隔,默認爲3妙;

  • -n #:批次方式顯示,顯示多少批次;

  • -b :batch,以批次顯示;

每一行表明的含義以下:

第一行:uptime 信息

  1. 系統當前的時間,即:22:29:39

  2. 系統啓動到如今所通過的時間,即:up 14:02

  3. 當前已登陸系統的用戶數,即:2 users

  4. 系統在1,5,15分鐘的平均負載,值越小表示系統越空閒,若是高於1,就須要注意當前系統負載太高。

第二行:

  • 顯示的是目前進程的總量與個別程序在什麼狀態(running,sleeping,stopped,zombie),須要注意的是最後的zmobie值,若是不是0就要查看下哪一個進程處於僵死狀態;

第三行:

顯示的是cpu的總體負載,若是說是多核心的cpu,能夠按下數字1來切換成不一樣cpu的負載率;

  • us:user space用戶運行程序佔用CPU的百分比;

  • sy:system (kernel space)用於運行內核佔用CPU百分比;

  • ni:nice用戶進程空間所改變優先級的進程佔用CPU的百分比;

  • id:idle空閒CPU百分比;

  • wa:wait io 等待I/O花費時間;

  • hi:hardware interrupt 硬件中斷佔用CPU百分比;

  • si:software interrupt 軟件中斷佔用CPU百分比;

  • st:stolen,被虛擬機「偷走」的百分比;

第四行:

  • 表示物理內存的使用狀況;

第五行:

  • 表示交換分區的使用狀況;

第六行:

  這裏默認是空白顯示,當在top程序當中輸入命令時,顯示狀態的地方,這裏能夠輸入的命令有:

  • P:以佔據CPU百分比大小排序;

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

  • T:CPU累計佔用時間排序;

  • l:是否顯示系統負載行;

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

  • 1:這裏是數字1,平均或單獨顯示CPU的負載狀態;

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

  • q:退出命令;

  • s:修改延遲時長;

  • k:終止指定進程;

top命令行表明含義:

  • PID:每一個進程ID;

  • USER:進程所屬的使用者;

  • PR:Priority的簡寫,進程的優先級,越小優先級越高;

  • NI:Nice的簡寫,與Priority有關,也是越小越早被運行;

  • VIRT:進程須要的虛擬內存大小,而非使用的虛擬內存大小;

  • RES:進程當前使用的內存大小,不包括swap;

  • SHR:進程與其餘進程共享的內存大小,可經過RES-SHR來計算進程所佔用的物理內存;

  • S:   進程狀態;

  • %CPU:CPU的使用率;

  •  %MEM:物理內存是使用率;

  • TIME+:CPU使用時間的累加

 3.htop命令

htop命令:

  • 除了top命令外,還有一個top的加強版命令htop,系統默認狀況下沒有安裝,須要epel源來進行安裝;(在工做中epel源,直接指定阿里雲,網易或者搜狐的鏡像網站便可)

選項:

  • -d #:指定延遲時間;

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

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

htop界面所支持的一些交互式命令:

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

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

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

  • t:顯示進程樹

注:

   詳細使用方法參考:

演示:  

[epel]
name=Fedora-epel/7/x86_64
baseurl=http://10.1.0.1/fedora-epel/$releasever/$basearch/                                                              # 使用的是變量 6和7都適用
gpgcheck=0

安裝好以後,直接經過 # yum install htop 命令進行安裝,安裝後執行htop命令便可,

 以下:

wKiom1fTfs-xCEpEAAEhHLXQP_k680.png

幫助以下:

wKiom1fThXfAcxccAACKdfToWiU616.png

內存工具

做用:

  • 動態顯示系統資源的使用狀況,這些資源包括:內存、磁盤、網絡、cpu等資源

 1.vmstat命令

vmstat命令:虛擬內存信息

用法:

  • vmstat[options] [delay [count]]

每一行所表明的含義:

wKiom1i1A2-x2tWrAAC7dRh9q9s561.png


選項:

  • -s:顯示內存統計數據

演示:  

[root@centos7 ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 458712   1372 295840    0    0     4     0   29   24  0  0 99  0  0

# 每兩秒中顯示一次,共顯示3次
[root@centos7 ~]# vmstat 2 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 458664   1372 295840    0    0     4     0   29   24  0  0 99  0  0
 0  0      0 458664   1372 295840    0    0     0     0   21   21  0  0 100  0  0
 0  0      0 458664   1372 295840    0    0     0     0   21   13  0  0 100  0  0
# 顯示內存統計數據信息
[root@CentOS6 ~]# vmstat -s
      1004136  total memory
       367776  used memory
       171720  active memory
        89104  inactive memory
       636360  free memory
        48268  buffer memory
       194220  swap cache
      2097148  total swap
            0  used swap
      2097148  free swap
         1290 non-nice user cpu ticks
           50 nice user cpu ticks
         4044 system cpu ticks
      1415750 idle cpu ticks
         4467 IO-wait cpu ticks
           10 IRQ cpu ticks
          854 softirq cpu ticks
            0 stolen cpu ticks
       244210 pages paged in
        47602 pages paged out
            0 pages swapped in
            0 pages swapped out
       236639 interrupts
       233074 CPU context switches
   1488242549 boot time
         3436 forks

 2.pmap命令

pmap命令 報告進程的內存映射

用法:

  • pmap [options] pid[...]

  • -x:顯示詳細格式的信息;

演示:

[root@centos7 ~]# pmap 1
1:   /usr/lib/systemd/systemd --switched-root --system --deserialize 21
00007ff0a5d59000     16K r-x-- libuuid.so.1.3.0
00007ff0a5d5d000   2044K ----- libuuid.so.1.3.0
00007ff0a5f5c000      4K r---- libuuid.so.1.3.0
00007ff0a5f5d000      4K rw--- libuuid.so.1.3.0
00007ff0a5f5e000    224K r-x-- libblkid.so.1.1.0
00007ff0a5f96000   2048K ----- libblkid.so.1.1.0
00007ff0a6196000     12K r---- libblkid.so.1.1.0
00007ff0a6199000      4K rw--- libblkid.so.1.1.0

 另一種實現方式:# cat /proc/PID/maps 以下:

[root@centos7 ~]# cat /proc/1/maps
7ff0a5d59000-7ff0a5d5d000 r-xp 00000000 08:03 33782768        /usr/lib64/libuuid.so.1.3.0
7ff0a5d5d000-7ff0a5f5c000 ---p 00004000 08:03 33782768        /usr/lib64/libuuid.so.1.3.0
7ff0a5f5c000-7ff0a5f5d000 r--p 00003000 08:03 33782768        /usr/lib64/libuuid.so.1.3.0
7ff0a5f5d000-7ff0a5f5e000 rw-p 00004000 08:03 33782768        /usr/lib64/libuuid.so.1.3.0
7ff0a5f5e000-7ff0a5f96000 r-xp 00000000 08:03 34593175        /usr/li

系統監測工具

 1.glances命令

介紹:

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

選項:

  • -b:以Byte爲單位顯示網卡數據速率

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

  • -f:/path/to/somefile: 設定輸入文件位置

  • -o:{HTML|CSV}:輸出格式

  • -m:禁用mount模塊

  • -n:禁用網絡模塊

  • -t #: 延遲時間間隔

  • -1:每一個CPU的相關數據單獨顯示

C/S模式下運行glances命令

服務模式:

  • glances -s -B  IPADDR

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

客戶端模式:

  • glances -c IPADDR

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

演示:

wKiom1fTuYSDYq6xAADlAuYhLYc183.png幫助信息以下:

wKioL1fTue2zcpnOAACDJaeZzus929.png


2.dstat命令

dsate命令:系統監控工具(很重要)

  • dstat是一個能夠取代vmstat、iostat、netstat和ifstat這些命令的多功能產品。dastat能夠很方便的監控系統運行情況並用於基準測試和排除故障。

用法:

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

選項:

wKiom1i1CgKy1DoWAABCmGQ9rEo195.png


使用參考

演示:

wKioL1fTw_yAwcMGAACmLLSr1QE482.png

 



  以上都是一些進程的查看、進程資源的獲取等命令,接下來是進程的管理,所謂進程的管理就是向進程發送一些控制信號,來完成對進程的管理控制。

進程管理工具

 1.kill命令

做用:

  • 顯示當前系統的信號,以及向進程發送信號指令,以實現對進程的管理。

用法1:

  • kill -l [signal] (顯示當前系統可用信號(或者使用man 7 signal)

每一個信號有三種表示方式:

  • 信號的數字標識;如 1

  • 信號的完整名稱; SIGHUB

  • 信號的簡寫名稱;如 HUB

用法2:

  • kill [-s signal|-SINGAL] pid...  :向進程發送信號

經常使用的信號:

  • SIGHUP,1:無須從新啓動進程而讓其重讀配置文件,並生效;

  • SIGINT,2:打斷正在運行的進程;至關於Ctrl+c;

  • SIGKILL,9:強行終止(殺死)正在運行的進程;

  • SIGTERM,15:安全終止正在運行的進程;

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

  • SIGSTOP,19:暫停進程;

演示:

[root@centos7 ~]# kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX	

[root@centos7 ~]# kill -l 1
HUP

2.向進程發送信號:

[root@CentOS6 ~]# ps aux |grep httpd  
root       7654  0.0  0.3 186052  3920 ?        Ss   06:02   0:00 /usr/sbin/httpd
apache     7658  0.0  0.2 186052  2516 ?        S    06:02   0:00 /usr/sbin/httpd
apache     7659  0.0  0.2 186052  2500 ?        S    06:02   0:00 /usr/sbin/httpd
apache     7660  0.0  0.2 186052  2500 ?        S    06:02   0:00 /usr/sbin/httpd
apache     7661  0.0  0.2 186052  2500 ?        S    06:02   0:00 /usr/sbin/httpd
apache     7662  0.0  0.2 186052  2500 ?        S    06:02   0:00 /usr/sbin/httpd
apache     7663  0.0  0.2 186052  2500 ?        S    06:02   0:00 /usr/sbin/httpd
apache     7664  0.0  0.2 186052  2500 ?        S    06:02   0:00 /usr/sbin/httpd
root       7697  0.0  0.0 103316   844 pts/0    S+   06:06   0:00 grep --color=auto httpd

# 發送信號
[root@CentOS6 ~]# kill -s 15 7660
[root@CentOS6 ~]# ps aux |grep httpd
root       7654  0.0  0.3 186052  3920 ?        Ss   06:02   0:00 /usr/sbin/httpd
apache     7658  0.0  0.2 186052  2516 ?        S    06:02   0:00 /usr/sbin/httpd
apache     7659  0.0  0.2 186052  2500 ?        S    06:02   0:00 /usr/sbin/httpd
apache     7661  0.0  0.2 186052  2500 ?        S    06:02   0:00 /usr/sbin/httpd
apache     7662  0.0  0.2 186052  2500 ?        S    06:02   0:00 /usr/sbin/httpd
apache     7663  0.0  0.2 186052  2500 ?        S    06:02   0:00 /usr/sbin/httpd
apache     7664  0.0  0.2 186052  2500 ?        S    06:02   0:00 /usr/sbin/httpd
root       7700  0.0  0.0 103316   848 pts/0    S+   06:06   0:00 grep --color=auto httpd

 1.killall命令

做用:

  • 殺死指定進程的全部進程

用法:

  • killall [-SIGNAL] program

演示:

[root@CentOS6 ~]# killall httpd
[root@CentOS6 ~]# ps aux |grep httpd
root       7759  0.0  0.0 103316   848 pts/0    S+   06:30   0:00 grep --color=auto httpd

做業管理(job contral)

 1.Linux做業控制

job

前臺做業(foreground):

  • 經過終端啓動,且啓動後直佔據終端

後臺做業(background):

  • 可經過終端啓動,但啓動後即轉入後臺運行(釋放終端)

如何讓做業運行於後臺?

運行中的做業:

  • Ctrl+z

注意:

  • 送日後臺後,做業會轉爲中止態;

還沒有啓動的做業:

  • ~]# COMMAND &

注意:

  • 此類做業雖然被送日後臺運行,但其依然與終端相關;退出終端,將關閉後臺做業。 若是但願送日後臺後,剝離與終端的關係:

  • ~]# nohup COMMAND &

查看全部做業:

  • ~]# jobs

做業控制

  • # fg [[%]JOB_NUM]:把指定的後臺做業(做業號)調回前臺;

  • # bg [[%]JOB_NUM]:讓送日後臺的做業在後臺繼續運行;

  • # kill [%JOB_NUM]:終止指定的做業;(百分號和做業號是不能夠省略的)

演示:

# 運行中的進程按 Ctrl+z 送日後臺
[root@CentOS6 ~]# ping www.baidu.com
PING www.a.shifen.com (61.135.169.125) 56(84) bytes of data.
64 bytes from 61.135.169.125: icmp_seq=1 ttl=56 time=3.73 ms
64 bytes from 61.135.169.125: icmp_seq=2 ttl=56 time=4.46 ms
64 bytes from 61.135.169.125: icmp_seq=3 ttl=56 time=5.96 ms
^Z
[1]+  Stopped                 ping www.baidu.com
[root@CentOS6 ~]# htop

[2]+  Stopped                 htop

# 查看後臺做業,其中帶加號的優先級最高,「-」其次
[root@CentOS6 ~]# jobs  
[1]-  Stopped                 ping www.baidu.com
[2]+  Stopped                 htop

# fg 調回前臺,不指明做業號,默認調回有 + 的做業
[root@CentOS6 ~]# fg 
ping www.baidu.com
64 bytes from 61.135.169.121: icmp_seq=5 ttl=56 time=3.84 ms
64 bytes from 61.135.169.121: icmp_seq=6 ttl=56 time=4.23 ms

[root@CentOS6 ~]# kill %1

[1]-  Stopped                 ping 10.1.252.161
[root@CentOS6 ~]# jobs
[1]-  Terminated # 已終止           ping 10.1.252.161
[2]+  Stopped                 htop
[root@CentOS6 ~]# jobs
[2]+  Stopped                 htop

 2.進程優先級及調整進程nice值的方法

進程優先級

  • 可經過nice值調整的優先級範圍:100-139;

  • nice值分別對應於:-20,19;

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

  • 只有根用戶才能下降nice值(提升優先性);

調整進程nice值的方法:

對於還沒有啓動的進程 (僅管理員可調低nice值

  • # nice -n N COMMAND :N表示nice值,範圍 -20~19;

對於已經啓動並處於運行中進程的nice值

  • # renice [-n] N PID

查看nice值和優先級

  • # ps axo pid,comm,ni,priority

演示:

[root@CentOS6 ~]# nice -n -5 htop
[root@CentOS6 ~]# ps axo pid,comm,ni,priority |grep htop
  8275 htop             -5  15
[root@CentOS6 ~]# renice -n -3 8275
8275: old priority -5, new priority -3
[root@CentOS6 ~]# ps axo pid,comm,ni,priority |grep htop
  8275 htop             -3  17
相關文章
相關標籤/搜索