一、何为进程

    通常来讲,进程时运行起来的程序,为什么这样说呢,程序文件是存放在磁盘上的,一旦内核将其加载至内存中运行起来,它就成为了一个进程,而且系统还会给予进程一个ID号,成为PID,用来标识进程。同时根据启动这个进程的使用者的相关属性信息,给予这个PID一组有效的权限配置。

二、如何产生一个进程

    运行一个程序或者命令就可以触发一个事件而取得一个PID,因为系统只识别二进制程序文件,所以我们可以通过执行系统上的二进制程序文件来运行程序,进而产生进程

三、如何管理进程

    为方便管理,Linux为我们提供了许多进程管理的命令,下面让我来简单介绍一下

   ▲ps命令   查看进程信息

      ps [option]

      选项有三种风格:

      This version of ps accepts several kinds of options:

       1   UNIX options, which may be grouped and must be preceded by a dash.

       2   BSD options, which may be grouped and must not be used with a dash.

       3   GNU long options, which are preceded by two dashes.

        选项:

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

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

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

Linux上的进程管理_Linux

    USER:进程的属主

    PID:进程的PID号,用来表示此进程

    CPU%:占CPU的百分比

    MEM%:占内存的百分比

    VSZ:虚拟内存集

    RSS:常驻内存集

    TTY:与其相关的终端

    STAT:进程的状态

        R:running
        S: interruptablesleeping
        D: uninterruptable sleeping
        T: stopped
        Z: zombie
        +: 前台进程
        l: 多线程进程
        N:低优先级进程
        <: 高优先级进程
        s: session leader,会话(子进程)发起者

    TIME:使用掉CPU的时间

    COMMAND:与此进程相关的命令

    常用组合:

      ●-ef

        -e: 显示所有进程
        -f: 显示完整格式程序信息

      -●eFH

        -F: 显示更完整格式的进程信息
        -H: 以进程层级格式显示进程相关信息

   ● 自定义

        -eo   pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm
        axo   stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm

     ▲top命令  动态的显示进程信息

        界面如下图 ,红色标识的是有关CPU参数,下面的PID,USER那一栏参数基本上和ps命令一样   Linux上的进程管理_进程管理_02     top中有许多的内置命令:

        ●排序:
          P:以占据的CPU百分比,%CPU
          M:占据内存百分比,%MEM
          T:累积占据CPU时长,TIME+

        ●首部信息显示:
          uptime信息:l命令
          tasks及cpu信息:t命令
          cpu分别显示:1 (数字)
          memory信息:m命令

        ●退出命令:q
        ●修改刷新时间间隔:s
        ●终止指定进程:k
        ●保存文件:W

    ▲htop

        htop与top很类似,界面比hop做的漂亮,它通过文字图形化地显示每一个进程的CPU和内存使用量、swap使用量。界面如下图所示

Linux上的进程管理_进程管理_03
    ▲uptime 显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1、5、10分钟的平均负载,一般不会超过1)

    ●系统平均负载:
        指在特定时间间隔内运行队列中的平均进程数。值越小服务器负载越小
   ●如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能良好。如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。
   ●如果linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被充分使用了。

Linux上的进程管理_Linux_04     ▲vmstat命令:虚拟内存信

Linux上的进程管理_进程管理_05     ●procs:
      r:等待运行的进程的个数,和核心数有关
      b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度)

    ●memory:
      swpd: 交换内存的使用总量
      free:空闲物理内存总量
      buffer:用于buffer的内存总量
      cache:用于cache的内存总量

    ●swap:
      si:从磁盘交换进内存的数据速率(kb/s)
      so:从内存交换至磁盘的数据速率(kb/s)

    ●io:
      bi:从块设备读入数据到系统的速率(kb/s)
      bo: 保存数据至块设备的速率

    ●system:
      in: interrupts, 中断速率,包括时钟
      cs: context switch, 进程切换速率

    ●cpu:
        us:Timespent running non-kernel code
        sy: Time spent running kernel code
        id: Time spent idle. Linux 2.5.41前,包括IO-wait time.
        wa: Time spent waiting for IO. 2.5.41前,包括in idle.
        st: Time stolen from a virtual machine. 2.6.11前, unknown

    ▲glances  在EPEL源里下载安装

Linux上的进程管理_进程管理_06

    ●常用选项:
      -b: 以Byte为单位显示网卡数据速率
      -d: 关闭磁盘I/O模块
      -f /path/to/somefile: 设定输入文件位置
      -o {HTML|CSV}:输出格式
      -m: 禁用mount模块
      -n: 禁用网络模块
      -t #: 延迟时间间隔
      -1:每个CPU的相关数据单独显示

    ●此外,glances还可以给予C/S模式来监控系统信息

       服务模式:
         glances -s -B IPADDR
         IPADDR: 指明监听的本机哪个地址
       客户端模式:
         glances -c IPADDR
         IPADDR:要连入的服务器端地址

    ▲kill命令:向进程发送控制信号,以实现对进程管理

     常用信号:man 7 signal
      1) SIGHUP: 无须关闭进程而让其重读配置文件
      2) SIGINT: 中止正在运行的进程;相当于Ctrl+c
      9) SIGKILL: 杀死正在运行的进程
      15) SIGTERM:终止正在运行的进程
      18) SIGCONT:继续运行
      19) SIGSTOP:后台休眠

    按PID:kill [-SIGNAL] pid…
    按名称:killall[-SIGNAL] comm…
    按模式:pkill[options] pattern
      -SIGNAL
      -u uid: effective user,生效者
      -U uid: real user,真正发起运行命令者
      -t terminal: 与指定终端相关的进程
      -l: 显示进程名
      -a: 显示完整格式的进程名
      -P pid: 显示父进程为此处指定的进程的进程列表

      ●下图举例通过ps命令查找进程号,然后杀死这个进程

Linux上的进程管理_进程管理_07

Linux上的进程管理_Linux_08

Linux上的进程管理_Linux_09