linux系统上与进程有关的命令:

 查看类命令:

    ps,pstree,pidof,pgrep\pkill,top,htop,glances,dstat,vmstat,pmap

 管理类命令:

    bg,fg,jobs,kill,killall,nohup,nice,renice


pstree命令:

    pstree - display a tree of processes

    显示进程之间的关系,用树状图表示

linux进程管理——进程管理相关命令_top


ps命令:

    ps - report a snapshot of the current processes.

    显示当前进程的信息;

    ps [option]

    1 UNIX 风格;必须在选项前边加上-;

    2 BSD 风格;在选项前边不能有-;

    3 GUN 风格;再选项前边必须有两个-;


字段含义:

linux进程管理——进程管理相关命令_ps_02

 USER:进程的属主;进程的发起者;

 PID:标识进程的唯一性的数字标识符;

 CPU:进程在执行过程中占用的CPU处理时间的百分比;

 %MEM;进程占用的物理内存百分比;

 VSZ:虚拟内存集,可交换内存集;

 RSS:常驻内存集,不可交换内存集;

 TTY:进程与哪个终端有关联的,"?"则表示与终端无关; 

 STAT:

  R    运行状态;running or runnable (on run queue)

  S    可中断睡眠态; interruptible sleep (waiting for an event to complete)

  D    不可终端睡眠态; uninterruptible sleep (usually IO)

  t    在跟踪期间被停止;stopped by debugger during the tracing

  T    停止进程控制信号;stopped by job control signal

  X    死进程; dead (should never be seen)

  Z    僵尸进程; defunct ("zombie") process, terminated but not reaped by its parent

  <    高优先级; high-priority (not nice to other users)

  N    低优先级; low-priority (nice to other users)

  L    页面是否锁进内存中;has pages locked into memory (for real-time and custom IO)

  s    会话领导; is a session leader

  l    多线程;is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)

  +    前进程组; is in the foreground process group

 START:至今仍未被结束的进程被开启的时间戳;

 TIME:当前进程累计占用CPU的总时间;

 COMMAND:启动该进程的命令行参数;


BSD风格的选项:

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

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

 u:显示发起进程的用户账户名称;

 o format:以自定义的字段,显示ps命令的执行结果;

linux进程管理——进程管理相关命令_top_03


UNIX风格的选项:

 -u:显示与指定用户相关的进程;

 -e:显示所有的进程

 -f:显示完整格式的进程信息:

    PPID:父进程的pid

    C:表示进程占用的CPU的时间的百分比


 -F:显示完整格式的内存信息:(多了几项内容)

    SZ:虚拟内存集

    RSS:常驻内存集

    PSR:执行此进程的CPU的核心编号


 -H:显示进程的层级结构(父子关系)

    

 -o format:以自定义的字段,显示ps命令的执行过结果;


linux进程管理——进程管理相关命令_top_04



pgrep,pkill命令

 pgrep, pkill - look up or signal processes based on name and other attributes

 pgrep是查询进程

 pkill是杀掉进程


 pgrep  [option]  pattern

 pkill [option] pattern

  -U, --uid :显示进程的真实用户ID

  -u:显示进程的有效用户ID

-t terminal:显示与指定终端关联的进程;

-a:显示进程的完整命令行参数;


比如:

linux进程管理——进程管理相关命令_top_05

    我在kill掉我的ssh后,我的 X shell 就断开了,因为 X shell 是基于ssh协议来进行远程连接的,我只能在我的虚拟机上重启了一下ssh进程;

linux进程管理——进程管理相关命令_top_06

然后,我的 X shell 才可以正常连上;

linux进程管理——进程管理相关命令_ps_07



pidof:

  pidof -- find the process ID of a running program.

  根据指定的正在运行的进程名称查找其对于的进程号;


linux进程管理——进程管理相关命令_glances_08


top命令:

    top - display Linux processes

linux进程管理——进程管理相关命令_top_09


当在linux中输入top时;我们会看到如图所示的动态的显示信息:解释一下具体的信息

 第一行:

    当前系统时间;

    系统自上次断电以后运行的总时长;

    当前登录系统的用户的总数;

    在过去的1分钟,5分钟,15分钟的三个时间段内,CPU上等待执行的进程的队列的长度。

 第二行:

    系统中运行的进程的总数;

    正在运行的进程数;

    处于睡眠态的进程数;

    已停止的进程数;

    僵死态的进程数;

 第三行:各类进程占用CPU时间的百分比的统计信息

    us:user space,用户空间中的进程占用CPU时间的百分比;

    sy:system,内核空间中的内核进程占用CPU时间的百分比;

    ni:nice,使用nice值调整了进程的优先级之后额外多占CPU时间的百分比;

    id:idel,CPU空闲时间的百分比;

    wa:waiting,等待IO完成的进程占用的CPU时间的百分比;

    hi:hardware interupting,处理硬件中断事件所限号的CPU时间的百分比;

    si:software interupting,处理软件中断事件所限号的CPU时间的百分比;

    st:stolen,被虚拟化程序等进程偷偷占用的CPU时间的百分比;

 第四行:以kib为单位显示物理内存空间的使用情况的统计信息;

    total:物理内存空间的总大小;

    free:空闲的物理空间大小;

    userd:已经被使用的物理空间的大小,不可回收;

    buff/cache:用于缓冲区和缓冲区的物理内存的空间大小;这段内存是可以随时回收,并不算真正的消耗;    

 第五行:以kib为单位显示swap空间的使用情况的统计信息;

    total:swap空间的总大小;

free:swap空间剩余空间大小;

used:已经被占用的swap空间大小;

    avail mem:真正的可用的物理内存的空间大小;


交互式命令:(在进入界面之后才会生效的命令)

    1:显示或隐藏CPU各核心的详细信息;

P:根据各个进程对CPU时间的占用百分比进行降序排序;

M:根据各个进程对物理内存空间占用的百分比进行降序排序;

T:根据各个进程对CPU时间占用的百分比进行降序排序;

l:显示或隐藏第一行,uptime等信息;

t:显示或隐藏第二、三行信息

m:显示或隐藏第四、五行信息

q:退出top的交互式模式

s:修改top命令的刷新时间间隔;

k:向指定PID的进程发送指定的信号;

        信号:kill -l查询

linux进程管理——进程管理相关命令_top_10

 

常用的选项:

    -d #:指定top交互式模式中的刷新间隔,默认是3秒;

    -b:非交互式显示结果



vmstat命令:

 Procs

  r: 等待运行的进程数

  b: 处在非中断睡眠状态的进程数

  w: 被交换出去的可运行的进程数。

       此数由 linux 计算得出,但 linux 并不耗尽交换空间


 Memory

  swpd: 虚拟内存使用情况,单位:KB

  free: 空闲的内存,单位KB

  buff: 被用来做为缓存的内存数,单位:KB


 Swap

  si: 从磁盘交换到内存的交换页数量,单位:KB/秒

  o: 从内存交换到磁盘的交换页数量,单位:KB/秒


 IO

  bi: 发送到块设备的块数,单位:块/秒

  bo: 从块设备接收到的块数,单位:块/秒


 System

  in: 每秒的中断数,包括时钟中断

  cs: 每秒的环境(上下文)切换次数


 CPU

  按 CPU 的总使用百分比来显示

  us: CPU 使用时间

  sy: CPU 系统使用时间

  id: 闲置时间


常用选项:

  -a,--active:显示活跃的以及非活跃的内存空间数量;

  -s,--stats:从/proc/meminfo文件中抽取的信息,加工后输出;

  delay:指示在指定的时间重复执行vmstat命令;默认单位为秒;

  count:重复执行vmstat命令的次数;

linux进程管理——进程管理相关命令_ps_11


pmap命令:

  pmap - report memory map of a process


  pmap [options] pid [...]


   -x, --extended:显示扩展信息;

linux进程管理——进程管理相关命令_glances_12


htop - interactive process viewer


 htop [-dChusv]

 常用选项:

    -d --delay=DELAY:htop命令的数据刷新时间间隔;

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

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


 常用的交互式命令:

    l:显示指定进行所有打开的文件列表;

    t:显示进程树结构,可以显示出进程之间的父子关系;相当于F5键的功能;

    a:设定进程的CPU亲源性,将选定进程的绑定至某个CPU核心上运行;

linux进程管理——进程管理相关命令_glances_13



glances:

 glances - A cross-platform curses-based monitoring tool


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


 常用选项:

    -b:以Byte为单位显示网卡的数据通信速率;默认是比特每秒;

    -d:禁用disk I/O模块;

    -m:禁用mount模块;

    -n:禁用network模块;

    -t refresh:以秒为单位指定数据刷新时间间隔;

    -f /PATH/TO/OUTPUT_DIR:指定输出文件的路径;

    -o {HTML|CSV}:为输出到文件的数据指定数据格式;

    -s:将glances进程作为服务进程,因此可以提供基于套接字的网络访问;

    -B @IP|HOST:将glances进程绑定到指定的IP地址上;通常与-s选项一起使用;


 glances可以工作于C/S模型下;

    S:服务器模式

     # glances -s -B IPADDR


     IPADDR指的是服务器上本地某个可用的IP地址;


    C:客户端模式

     # glances -c SERVER_IPADDR


     SERVER_IPADDR指的是从远程客户端是哪个发起连接的目标服务器的IP地址;

 glances交互式操作命令;

    b:网络模块中的速率统计在bps和Bps间切换;

    c:根据CPU占用率进行进程排序;

    m:根据内存占用率进行进程排序;

    n:隐藏或显示NERWORK模块;

    d:隐藏或显示DISK模块;

    f:隐藏或显示FILE模块;

    t:恢复默认进程排序;

    h:显示help帮助信息;

    ....

linux进程管理——进程管理相关命令_top_14

linux进程管理——进程管理相关命令_ps_15


dstat:

 dstat - versatile tool for generating system resource statistics


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


 常用选项:

    -c,--cpu:仅显示与CPU相关的统计信息;

    -d,--disk:仅显示与磁盘等IO设备相关的统计信息;

    -g,--page:仅显示与page相关的信息;

    -n,--net:仅显示与网络接口相关的统计信息;

    -s,--swap:仅显示与交换分区相关的统计信息;

    -y,--system:仅显示与系统相关的统计信息;

    --tcp:仅显示与TCP协议的连接状态相关的统计信息;

    --udp:仅显示与UDP协议的连接状态相关的统计信息;

linux进程管理——进程管理相关命令_ps_16


kill:

 kill - 终止进程


 kill [-s signal|-p] [--] pid...


 kill -l [signal]:查看当前系统中支持的信号的种类和信号名称;


 有效的信号表示方法:

    1.使用信号的数字编码进行信号表示;

    2.使用信号的完整名称进行信号表示;

    3.使用信号的简写名称进行信号表示;简写名称不包含"SIG"的其余部分;


 常用的信号:

    1) SIGHUP: 无需关闭对应进程而直接让其重新读取其自身的配置文件;

    2) SIGINT:终止运行于前台的进程,使用Ctrl+c组合键,可以发送此信号;

    9) SIGKILL: 没有任何预兆终止正在运行的进程,进程所有占用的资源都不会被立即回收;

    15) SIGTERM:kill命令默认发送的信号;终止进程的运行,

    18) SIGCONT:让转入后台的进程在后台继续运行;

    19) SIGSTOP:让转入后台的进程在后台停止运行;

linux进程管理——进程管理相关命令_glances_17

 

killall

 killall - 以名字方式来杀死进程


 killall [options] ...PROCRSS_NAME..


 常用选项:

    -u:仅向指定所有者所拥有的进程发送信号;

   -s:向指定名称的进程发送指定的非SIGTERM信号;

   -I:忽略进程名称大小写的区别;

linux进程管理——进程管理相关命令_top_18


进程作业:

 前台作业:

    foreground jobs,一般是通过终端启动并且在启动后一直占据终端的进程;


 后台作业:

    background jobs,一般系统启动时随系统启动,也可以通过终端启动,但启动后理解释放对终端的占用,此时我们称其为"后台运行";


 使进程从前台转移至后台:

    1.正在运行的前台作业;

    Ctrl+z

    2.对于尚未启动的进程,使其在启动后自动转入后台:

# COMMAND &

注意:此类从前台启动直接转入后台运行的进程,始终是与终端有关的进程,因此,如果终端被关闭,或shell进程被终止,则此类进程也会被终止;

3.对于尚未启动的进程,使其在启动后自动转入后台,并同时剥离其与终端的关联关系;

    # nohup COMMAND &


查看后台作业的信息:

jobs

linux进程管理——进程管理相关命令_ps_19



将后台作业转入到前台运行:

fg [JOB_ID]

   注意:如果省略JOB_ID,则在后台进程中以"+"标识的作业会被转入前台;


终止后台进程作业:

kill %JOB_ID:将后台作业结束;

linux进程管理——进程管理相关命令_ps_20

 调整进程优先级的命令;

    nice,renice


 进程的优先级:

    0-139

0

1-99

100-139:动态优先级;通过调整进程的nice值来改变进程的动态优先级;

  NICE值的取值范围:-20~19


默认情况下,所有用户进程的动态优先级都是120,而所有进程的NICE值默认都为0;


只有超级用户root才能使用附属的NICE值,进而提升进程的优先级;普通用户仅能使用正数的NICE值,进而降低进程的优先级;


nice

 nice - run a program with modified scheduling priority


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


    -n:为后面的进程调整nice值;默认为10;

linux进程管理——进程管理相关命令_glances_21


linux进程管理——进程管理相关命令_top_22



renice:

 renice - alter priority of running processes


 renice [-n] priority [-gpu] identifier...


 常用选项:

    -n priority :设置此次要调整的nice值;即在原有的nice值之上追加上此处指定的数量;

-p pid:

linux进程管理——进程管理相关命令_top_23