首页 > 代码库 > 【linux基础】18、进程管理工具

【linux基础】18、进程管理工具


1、pstree

   进程树查看

-p:并显示各进程的PID

[root@Note3 ~]# pstree
init─┬─ManagementAgent───2*[{ManagementAgen}]
     ├─NetworkManager
     ├─VGAuthService
     ├─atd
     ├─auditd───{auditd}
     ├─console-kit-dae───63*[{console-kit-da}]
     ├─crond
     ├─cupsd
     ├─dbus-daemon
     ├─dhclient
     ├─hald─┬─hald-runner─┬─hald-addon-acpi
     │      │             └─hald-addon-inpu
     │      └─{hald}
     ├─login───bash
     ├─master─┬─pickup
     │        └─qmgr
     ├─5*[mingetty]
     ├─modem-manager
     ├─polkitd
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd─┬─sshd───bash
     │      └─sshd───bash───pstree
     ├─ssserver
     ├─udevd───2*[udevd]
     ├─vmtoolsd───{vmtoolsd}
     └─wpa_supplicant

2、ps

  显示的是当前进程状态信息的快照,为静态结果

[root@Note3 ~]# ping 192.168.10.10 >/dev/null &
[1] 18435
[root@Note3 ~]# ps
  PID TTY          TIME CMD
 8587 pts/0    00:00:00 bash
18435 pts/0    00:00:00 ping
18473 pts/0    00:00:00 ps

   默认情况,ps命令只显示属于当前用户并正在当前终端中运行的进程

技术分享支持众多选项:

   BSD风格:选项前不加“-”

   SysV风格

根据进程启动时是否是通过终端上的用户接口交互式启动的,进程可分为两类:

所有与终端相关的进程:a

所有与终端无关的进程:x

以用户为中心组织进程状态信息显示:u

常用选项组合:1:axu

[root@Note3 ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  19360  1536 ?        Ss   03:55   0:01 /sbin/init
root         2  0.0  0.0      0     0 ?        S    03:55   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    03:55   0:00 [migration/0]
root         4  0.0  0.0      0     0 ?        S    03:55   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S    03:55   0:00 [migration/0]
root         6  0.0  0.0      0     0 ?        S    03:55   0:00 [watchdog/0]

USER:进程的属主

PID:进程号

%CPU:占据CPU的的百分比

%MEM:占据内存的百分比

VSZ:占用线性地址空间的大小

RSS:常用驻内存集,指不可以被交换至swap空间的数据占据空间大小;

TTY:终端

START:进程启动时间

TIME:占据CPU累计时间

COMMAND:启动当前进程的命令,[COMMAND]表示为内核线程

STAT:进程状态

      R:运行

      S:interruptible sleeping,可中断睡眠

      D:uniterruptible sleeping, 不可中断睡眠

      T: stopped 停止

      Z: zombie 僵死

      s: session leader  进程领导者

     +: 前台进程,占据着某终端,终端关闭进程也被关闭

     l: 多线程进程

     <: 高优先级进程

     N: 低优先级进程


常用选项组合2: -ef          ppid:父进程号

        -e: 显示所有进程;

 -f: 显示丰富格式信息

常用选项组合3:-eFH

-F: 显示额外信息

-H: 以层级形式显示进程间关系;


自定义需要显示的信息:axo

   ps axo pid,command,psr,pri,ni

     psr: 当前进程运行的CPU编号;

     pri: 当前进程的优先级;

      ni: 当前进程的nice值:-20, 19



3、uptime

   显示当前系统时间运行时长(上次开机至现在运行的时间),登录的用户数系统平均负载

系统平均负载:在特定时间间隔内CPU上等待运行的进程队列的长度(平均进程数

  通过top\uptime\w\tload可以获取到load average的值,它的三个数字值分别记录了一分钟\五分钟\十五分钟的系统平均负载。


4、top命令

  top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止,比较准确的说,top命令提供了实时的对系统的整体运行状态监视.它将显示系统中CPU最“敏感”的任务列表,是一个综合了多方信息监测系统性能和运行信息的实用工具。

该命令可以按CPU使用、内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定,有许多交互式的子命令:技术分享

首部信息显示:

l: 是否显示系统负载行;队列长度的合理区间:CPU颗数*0.7

t: 是否显示进程摘要信息及CPU平均占用率(负载状态);

1:(数字1)分别显示多颗CPU负载状态

m:是否显示内存和交换分区使用信息


排序:

P:以占据的CPU百分比大小排序;从大到下依次排序

M:以占据Memory空间大小排序;

T:累积占用CPU时间排序;


cpu平均占用率栏详解:

Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
        us: user space

us:用户空间所占的比率

sy: system (kernel space) 内核空间

ni: nice (被nice调整过的进程)改变过优先级的进程占用CPU的百分比

id: idle   空闲

wa: wait io  等待io完成

hi:hardware interrupt  硬件中断

si: software interrupt   软件终端

st: stolen, 被虚拟化(虚拟机)“偷走”的百分比


q: 退出命令

s:修改刷新间隔时间,默认为3

k: 终止指定进程


top命令的选项:

-b: batch,批次显示

-n #: 显示的批次数量,和-b一起使用

-d N: 指明延迟时长


5、htop
   htop是Linux系统下一个基本文本模式的、交互式的进程查看器,主要用于控制台或shell中,可以替代top,或者说是top的高级版。

快速查看关键性能统计数据,如CPU(多核布局)、内存/交换使用
可以横向或纵向滚动浏览进程列表,以查看所有的进程和完整的命令行
杀掉进程时可以直接选择而不需要输入进程号
通过鼠标操作条目
比top启动得更快

命令:

u: 过滤仅显示选定用户的进程;

s: 跟踪选定的进程所发起的系统调用;

l: 显示选定进程所打开的文件;

t: 显示进程的层次结构;

a: 设定进程的cpu亲缘性;(将选定的进程绑定在指定的CPU上)

选项:

-d #: 延迟时长

-u USERNAME: 仅显示指定用户的进程;

-s COLUMN: 根据指定的字段进行排序;


6、vmstat

  报告关于进程、内存、磁盘I/O,系统中断,进程切换,cpu平均占用率等系统整体运行状态

[root@Note3 ~]# vmstat  #默认显示一次
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 1383072  59572 325744    0    0     4     0   21   21  0  0 100  0  0	

技术分享

r:运行或等待运行的进程个数

in:中断发生速率,每秒的中断数

使用格式:

   vmstat [delay [counts]]

         延时刷新  刷新几次 

     -s:显示内存统计数据

[root@Note3 ~]# vmstat 1 3  #每隔1秒刷新一次,总共刷新3次,不指定刷新次数则一直运行下去
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 1383104  59676 325744    0    0     4     0   21   21  0  0 100  0  0	
 0  0      0 1383080  59676 325744    0    0     0     0   41   34  0  0 100  0  0	
 0  0      0 1383080  59676 325744    0    0     0     0   74   46  0  0 100  0  0	
[root@Note3 ~]# vmstat -s
      1914492  total memory
       531264  used memory
       201280  active memory
       218100  inactive memory
      1383228  free memory
        59676  buffer memory
       325744  swap cache
      2047992  total swap
            0  used swap
      2047992  free swap
         2140 non-nice user cpu ticks
           36 nice user cpu ticks
         7526 system cpu ticks
      8954651 idle cpu ticks
         7688 IO-wait cpu ticks
           29 IRQ cpu ticks
         1649 softirq cpu ticks
            0 stolen cpu ticks
       385801 pages paged in
        40062 pages paged out
            0 pages swapped in
            0 pages swapped out
      1897682 interrupts
      1896584 CPU context switches
   1481831717 boot time
        16382 forks

7、dstat

     动态地统计系统资源信息

     dstat命令是一个全能信息统计工具,拥有彩色界面,实时刷新,功能非常强大技术分享

使用格式:

 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











3、pgrep: 

语法格式:pgrep [OPTIONS] "PATTERN"

-U UID:仅显示以指定用户身份运行的进程号;可接用户名或UID

-G GID

-l: 显示PID和进程名;


4、pidof: 显示指定命令所启动的pid

      pidof PROGRAM

            PROGRAM: 给定命令行程序










    


9、pmap: 查看指定进程的内存映射关系;

      pmap [OPTIONS] pid...

-x: 显示扩展信息

    

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

      

      常用选项:

-b: 以Byte/s为单位显示网卡设备数据交换速率;

-d: 关闭磁盘I/O功能模块;

-f /PATH/TO/SOMEFILE:设置输出文件的位置及格式;

-o {HTML|CSV}:

-m: 关闭mount功能模块

-n: 关闭网络功能模块

-r: 关闭进程列表功能模块

-t #: 指定延迟时长,默认为3秒;

-1:单独显示每颗CPU相关负载数据信息;

      glances支持远程模式:

 即可以以C/S模式工作:

     Server: 以监听模式启动glances;

     Client: 以远程模式启动glances,远程连入指定服务器,并Server上的相关性能数据;

     

 服务模式:

   glances -s -B IPADDR

     -B: 用于指明监听的本地地址;


     

 客户端模式:

   glances -c IPADDR

     -c: 用于连入的服务器的地址;


       

killall -SIGNAL 进程名


信号表示方式:

(1) 完整名称,例如SIGINT

(2) 简写名称,例如INT

(3) 数据代称,例如2


常用信号:

        SIGHUP: 1, 通知进程重读其配置文件以让新的配置生效,但不用重新启动进程;

SIGINT:2, 打断正在运行中的进程,相当于键盘组合键Ctrl+c

SIGKILL:9, 强行中止正在运行中的进程

SIGTERM: 15, 安全中止正在运行中的进程,kill默认使用的信号

SIGSTOP: 19, 暂停进程

SIGCONT: 18, 继续运行指定进程


【linux基础】18、进程管理工具