CentOS進程管理

  

1、pstree命令:顯示進程樹

[root@localhost ~]# pstree
init─┬─auditd───{auditd}
     ├─crond
     ├─dbus-daemon───{dbus-daemon}
     ├─httpd───3*[httpd───26*[{httpd}]]
     ├─master─┬─pickup
     │       
                 └─qmgr
     ├─6*[mingetty]
     ├─mysqld_safe───mysqld───20*[{mysqld}]
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd───sshd───bash───pstree
     └─udevd───2*[udevd]

# Linux系統各進程的相關信息均保存在/proc/PID目錄下的各文件中

wKiom1YKWUnBy1zLAAM2yODunIY113.jpg

 

2ps命令:顯示進程的當前狀態

命令格式:ps [ OPTION ] ...

1)常用組合:aux

a: 與終端相關的進程;

u: 以用戶爲中心組織進程狀態信息顯示

x: 與終端無關的進程;

[root@localhost ~]# ps
aux | head -8
USER        PID %CPU %MEM    VSZ  RSS TTY      STAT START   TIME COMMAND
root          1 0.1  0.0  19232 1512 ?        Ss   07:32  0:01 /sbin/init
root          2 0.0  0.0      0    0 ?        S    07:32  0:00 [kthreadd]
root          3 0.0  0.0      0    0 ?        S    07:32  0:00 [migration/0]
root          4 0.0  0.0      0    0 ?        S    07:32  0:00 [ksoftirqd/0]
root          5 0.0  0.0      0    0 ?        S    07:32  0:00 [stopper/0]
root          6 0.0  0.0      0    0 ?        S    07:32  0:00 [watchdog/0]
root          7 0.0  0.0      0    0 ?        S    07:32  0:00 [migration/1]

各字段解析:

VSZ: Virtual memory SiZe,虛擬內存集

RSS: ReSident Size, 常駐內存集

STAT:進程狀態

R:running,運行中

S: interruptable sleeping,可中斷睡眠

D: uninterruptable sleeping,不可中斷睡眠

T: stopped,停止狀態

Z: zombie,殭屍狀態

 

+: 前臺進程

l: 多線程進程

N:低優先級進程

<: 高優先級進程

s: session leader

 

2)常用組合:-ef

-e: 顯示所有進程

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

 

3)常用組合:-eFH

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

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

       ni: nice值

       pri: priority,優先級

       psr: processor, CPU

       rtprio: 實時優先級

 

3、pgrep, pkill

   pgrep [options] pattern:根據進程相關屬性查找進程

   pkill [options] pattern:發送信號(signal)到指定進程

     options:         

  -u uid: effective user

      -U uid: real user

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

      -l: 顯示進程名

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

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

 

4、pidof: 根據進程名獲取其PID

[root@localhost ~]# pidof httpd
1455 1454 1453 1411

5、top and htop  :顯示進程相關信息

1top命令:

     排序:

       P:以佔據的CPU百分比;

       M:佔據內存百分比;

       T:累積佔據CPU時長;

 

    首部信息顯示

       uptime信息:l命令

       tasks及cpu信息:t命令

       cpu分別顯示:1 (數字)

       memory信息:m命令

 

   退出命令:q

   修改刷新時間間隔:s

   終止指定進程:k

 

    選項:

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

       -b: 以批次方式;

       -n #: 顯示多少批次;

[root@localhost ~]# top -d 3 -b -n 2

 

2)htop命令:

    選項:

        d #: 指定延遲時間;

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

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

    命令:

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

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

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

  t: 顯示進程樹

 

wKiom1YKWj3B3QasAAgUBYNSE2E243.jpg

 

6、vmstat命令:虛擬內存狀態信息顯示

命令格式:vmstat [options] [delay [count]]

選項:  -s: 顯示內存的統計數據

        

各字段解析:

procs:

r:等待運行的進程的個數;

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

memory:

swpd: 交換內存的使用總量;

free:空閒物理內存總量;

buffer:用於buffer的內存總量;

cache:用於cache的內存總量;

swap:

si:數據進入swap中的數據速率(kb/s)

so:數據離開swap中的數據速率(kb/s)

io:

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

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

system:

in: interrupts, 中斷速率;

cs: context switch, 進程切換速率;

cpu:

us:用戶空間所佔CPU使用時間比例

sy:內核空間所佔比例

id:空閒時間所佔比例

wa:等待IO時間所佔比例

st:虛擬機偷盜CPU時間所佔比例

 

7glances命令

glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [--password]

 [-t refresh] [-f file] [-o output]

 

內建命令:

a  Sort processes automatically     l  Show/hide logs

c  Sort processes by CPU%           b  Bytes or bits for network I/O

m  Sort processes by MEM%           w  Delete warning logs

p  Sort processes by name           x  Delete warning and critical logs

i  Sort processes by I/O rate       1  Global CPU or per-CPU stats

d  Show/hide disk I/O stats         h  Show/hide this help screen

f  Show/hide file system stats      t  View network I/O as combination

n  Show/hide network stats          u  View cumulative network I/O

s  Show/hide sensors stats          q  Quit (Esc and Ctrl-C also work)

y  Show/hide hddtemp stats

 

常用選項:

-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:要連入的服務器端地址)

 

wKioL1YKWpDT3r1AAAYbuMGeN-g363.jpg

 

8dstat命令:生成系統資源統計信息工具

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

      options:-c: 顯示cpu相關信息;

            -C #,#,...,total

-d: 顯示disk相關信息;

-D total,sda,sdb,...

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

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

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

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

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

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

 

--tcp:顯示tcp連接狀態

(listen, established, syn, time_wait, close)

--udp:顯示udp連接狀態信息

--unix:unix域套接字狀態信息

--raw:raw套接字狀態信息

--socket:套接字狀態信息

--ipc:ipc狀態信息

 

--top-cpu:顯示最佔用CPU的進程;

--top-io: 顯示最佔用io的進程;

--top-mem: 顯示最佔用內存的進程;

--top-lantency: 顯示延遲最大的進程;

    例:延時爲2,顯示5次

wKiom1YKWrmyxNwhAAFg9BjRn2k566.jpg

 

9sar:收集報告或保存系統活動信息

命令格式:sar [options] [-A] [ -o [ filename ]] t [n]

t:採樣間隔

n:採樣次數,默認值是1;

-o filename :將命令結果以二進制格式保存在文件中。

options :

-A:所有報告的總和

-u:輸出CPU使用情況的統計信息

-v:輸出inode、文件和其他內核表的統計信息

-d:輸出每一個塊設備的活動信息

-r:輸出內存和交換空間的統計信息

-b:顯示I/O和傳送速率的統計信息

-a:文件讀寫情況

-c:輸出進程統計信息,每秒創建的進程數

-R:輸出內存頁面的統計信息

-y:終端設備活動情況

-w:輸出系統交換活動信息

 

[root@localhost ~]# sar-u -o sar.txt 2 3 Linux
2.6.32-504.el6.x86_64 (localhost.localdomain)  09/26/2015  _x86_64_  (1 CPU)
 
11:28:25 PM     CPU    %user     %nice   %system  %iowait    %steal     %idle
11:28:27 PM     all     0.50      0.00      1.98     0.99      0.00     96.53
11:28:29 PM     all     0.00      0.00      1.51     1.51      0.00     96.98
11:28:31 PM     all     0.00      0.00      1.50     1.50      0.00     97.00
Average:        all     0.17      0.00      1.66     1.33      0.00     96.84

 

[root@localhost ~]# sar -r 2 3 Linux
2.6.32-504.el6.x86_64 (localhost.localdomain) 09/26/2015  _x86_64_   (1 CPU)
 
11:29:54 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
11:29:56 PM   1597996   308496     16.18     20496   162756     91560      3.10
11:29:58 PM   1597872   308620     16.19     20496   162756     91560      3.10
11:30:00 PM   1597872   308620     16.19     20496   162756     91560      3.10
Average:      1597913   308579     16.19     20496   162756     91560      3.10
[root@localhost ~]# sar -d -p 2 1 Linux
2.6.32-504.el6.x86_64 (localhost.localdomain)   09/26/2015  _x86_64_  (1 CPU)
 
11:34:28 PM    DEV  tps  rd_sec/s  wr_sec/s avgrq-sz  avgqu-sz  await   svctm  %util
11:34:30 PM    sda  0.00  0.00    0.00      0.00      0.00      0.00    0.00   0.00
11:34:30 PM    sdb  0.00  0.00    0.00      0.00      0.00      0.00    0.00   0.00
11:34:30 PM    sr0  0.00  0.00    0.00      0.00      0.00      0.00    0.00   0.00
 
Average:       DEV  tps  rd_sec/s  wr_sec/s avgrq-sz  avgqu-sz  await   svctm  %util
Average:       sda  0.00  0.00    0.00      0.00      0.00      0.00    0.00   0.00
Average:       sdb  0.00  0.00    0.00      0.00      0.00      0.00    0.00   0.00
Average:       sr0  0.00  0.00    0.00      0.00      0.00      0.00    0.00   0.00

常用選項:

查看CPU: sar -u、 sar -q

查看內存:sar -B、sar -r、sar -W

查看I/O: sar -b、sar -u、sar -d -p

  

10kill命令:向進程發送控制信號,以實現對進程管理

顯示當前系統可用信號:

# kill -l

# man 7 signal

 

常用信號:

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

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

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

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

18) SIGCONT:

19) SIGSTOP:

 

指定信號的方法:

(1) 信號的數字標識;1, 2, 9

(2) 信號完整名稱;SIGHUP

(3) 信號的簡寫名稱;HUP

 

向進程發信號:

kill [-SIGNAL] PID...

 

終止“名稱”之下的所有進程:

killall [-SIGNAL] Program

 

11nice and renice:進程優先級調整

靜態優先級:100-139

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

nice命令:

nice [OPTION] [COMMAND [ARG]...]

renice命令:

renice [-n] priority pid...

查看:

ps axo pid,comm,ni

[root@centos7 ~]# nice -n 5 httpd
[root@centos7 ~]# ps -axo pid,comm,ni | grep httpd
  6760 httpd             5
  6762 httpd             5
  6763 httpd             5
  6764 httpd             5
[root@centos7 ~]# renice -n 0 `pidof httpd`
6760 (process ID) old priority 5, new priority 0
6762 (process ID) old priority 5, new priority 0
6763 (process ID) old priority 5, new priority 0
6764 (process ID) old priority 5, new priority 0

 

12Linux的作業控制

前臺作業:通過終端啓動,且啓動後一直佔據終端;

後臺作業:可以通過終端啓動,但啓動後即轉入後臺運行(釋放終端);

 

讓作業工作與後臺

(1) 運行中的作業

Ctrl+z

(2) 尚未啓動的作業

# COMMAND &

此類作業雖然被送往後臺運行,但其依然與終端相關;如果希望送往後臺後,剝離與終端的關係:

# nohup COMMAND &

查看所有作業:

# jobs

 

作業控制:

# fg [[%]JOB_NUM]:把指定的後臺作業調回前臺;

# bg [[%]JOB_NUM]:讓送往後臺的作業在後臺繼續運行;

# kill [%JOB_NUM]:終止指定的作業,必須帶%


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