进程管理的概念

 1.程序是静态的,本身作为一个长期软件资源保存着,而进程是动态的,,有一定的生命周期,是动态产生和消亡的,进程每次执行一个时间片的长度在内核中,当时间片结束后进程就要让出内核给下一个等待运行的进程;进程会将其信息保存在内存结构体中,这样当进程再一次执行时,就可以通过内存结构体所保存的信息达到上一次执行完毕时的状态;

 2.程序和进程没有一一对应关系,进程在运行的状态下回去使用程序;

 3.进程是具有父子关系的;子进程由父进程创建,通过fork()系统调用,将父进程的数据,堆栈段以及进程环境放到子进程当中;当子进程完成其工作时,由其父进程将子进程进行回收处理;将父进程中的数据放入子进程的复制是写时复制,当调用子进程时才会启用;

 在CentOS环境下,内核在正常启用后会执行一个init()的进程来初始化系统;

  CentOS5及以前的版本:SysV Init,Classic Init

  执行init()进程由init去创建子进程,以执行脚本的方式去创建子进程,CentOS5的执行方式是串行的,就是一个一个的去执行这些脚本,所以运行速度会很慢;

  CentOS6:upstart

  执行init()进程由init去创建子进程,不同于CentOS5的是,其执行方式是并行的,可以同时创建多个进程,若其具有多个CPU的话,其效果会更加明显,运行速度较快;

  CentOS7:systemd

  可以以其自身独立的进行整个操作系统的的启动工作,也就是说,只需要启动一个systemd进程,就可以将其他服务进程启动起来,这些服务进程是我们目前需要的进程,当我们需要更多时,才会去启用他们,所以CentOS7的运行速度会较之前的更快;

  前台进程:在前台输入命令,创建对应的子进程,在命令运行的时间内,前台无法运行其他进程;

  后台进程:在前台输入命令,创建对应的子进程,命令运行转入后台执行,不占用前台;

  守护进程:在系统引导的过程中被启用,与任何终端无关;

  用户进程:用户登录系统后才启用,通过终端启动的进程;

 进程优先级:进程的执行是根据其优先级来判断哪个先执行,那个后执行;进程的优先级别从0到139

0到99为系统优先级,数值越高优先级越高,100到139为静态优先级,数值越低优先级越高;

  nice值:-20至19

  0表示优先级别当中的120,-20表示100,19表示139;只有管理员能使用负整数提高进程的优先级别,用户只能使用正整数降低进程的优先级别;

  nice -n 优先级 进程名

  运行进程并且指定优先级别;

  renice -n 优先级 进程名

  对于已经运行的进程,修改其优先级别;


  进程相关命令

  pstree:显示进程树

  ps:显示进程相关信息,如有效用户,PID,占用CPU和内存的百分比等;

  ps有两种形式的选项

  BSD风格:

    a:与终端相关的进程;

    x:与终端无关的进程;

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

  例

  wKiom1l3-l2iYTWfAABTEZ9VEiM040.jpg-wh_50

  USER:进程的所有者;

  PID:进程标识符;

  %CPU:进程占用CPU的百分比;

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

  VSZ:虚拟内存集;

  RSZ:常驻内存集;

  STAT:进程状态

    R:正在运行;

    S:可中断的睡眠状态;

    D:不可中断的睡眠状态;

    T:被跟踪/已停止;

    Z:僵死态;

    +:前台进程;

    <:高优先级进程;

    N:低优先级进程;

  TIME:进程累积的CPU占用时间;


 UNIX风格:

  -e:所有进程;

  -F:以完整格式显示进程信息;

  -H:以层级结构显示父子关系;

 例

  wKioL1l3_DnQQccnAABRZrgnL9A154.jpg-wh_50

 PPID:父进程PID;

 SZ:虚拟内存集;

 RSS:常驻内存集;

 PSR:表示此进程在哪个CPU核心上运行;

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

 

 pgrep:搜索相关进程;

 -u uid:根据用户uid搜索以该用户为有效用户的进程;

 -U uid:根据用户uid搜素以该用户为真实用户的进程;

 -l pattern:搜索进程名,根据部分进程名相关信息;

 例

 Linux进程管理(一)_第1张图片

 wKioL1l3_g6j1NsNAAAa69SqPAs289.jpg-wh_50

 

 pidof:显示进程名称对应的进程ID;

  wKiom1l3_jXCyXMwAAAMlfHo1_I608.jpg-wh_50

 

 top:显示进程的相关信息,较全面;

 Linux进程管理(一)_第2张图片

 第一行:

 当前系统时间

 系统运行时长

 当前系统用户登录数

 在1分钟,5分钟,15分钟时进程平均等待数

 

 第二行

 进程总数

 进程运行数

 进程睡眠数

 进程等待数

 进程僵死数


 第三行

 占用CPU的百分比

 us:用户进程占用CPU的百分比;

 sy:内核级进程占用CPU的百分比;

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

 id:CPU空闲时间百分比;

 wa:等待IO完成占用CPU的百分比;

 hi:硬件中断占用CPU的百分比;

 si:软件终端占用CPU的百分比;

 st:被虚拟化程序等偷走的CPU时间的百分比;

 

 第四行

 内存的相关信息


 第五行

 以KB为单位显示swap空间的使用情况:


 第六行

 进程相关信息


 top命令是前台进程,具有交互命令

 1:显示不同CPU核心的使用情况;

 P:对CPU占用百分比进行排序显示;

 M:对内存占用百分比进行排序显示;

 T:根据累计占用CPU时间进行排序;

 q:退出top命令;


 vmstat:实际内存统计;

 wKioL1l4BL-x59B2AAAw4gU0bjs098.jpg-wh_50

 procs

  r:正在运行的进程数;

  b:阻塞的进程数;

 memory

  swpd:内存被使用的数量;

  free:空闲的内存数量;

  buff:数据缓冲区中的内存数;

  cache:数据缓存区中的内存数;

  buff和cache中的内存数是可以取用的;

 swap

  si:进入交换空间的进程数;

  so:出去交换空间的进程数;

 io

  bi:块数据进入内存的数量;

  bo:内存数据进入块数据的数量;

 System

  in:硬件中断与软件中断数量;

  cs:上下文切换;

 CPU

  us:用户进程占用CPU的百分比; 

  sy:内核级进程占用CPU的百分比; 

  id:空闲CPU的百分比; 

  wa:等待IO完成的CPU的百分比; 

  st:被虚拟化程序等偷走的CPU时间的百分比;


 进程管理命令:

 kill:关闭进程

 kill [signal] pid

 signal

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

    2) SIGINT:终止正在运行的前台进程;

    9) SIGKILL:没有任何预兆的终止正在运行的进程,残暴;

    15) SIGTERM:默认信号,终止正在运行的进程;

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

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

 

 wKiom1l4EVvhm2DqAAAyRlAucg0984.jpg-wh_50

 

 killall:关闭所有同名的进程;

 killall 进程名


 jobs:查看后台进程;

 wKiom1l4KEKQdwjBAAAN_nYFqhA460.jpg-wh_50

 后台进程除了一开始便在后台运行的进程之外,还可以将前台进程转入后台运行;

 ①Ctrl+Z:在前台进程运行之后按键,使之转入后台;

 ②命令 &:运行命令时加个“&”将其直接转入后台运行;这样的进程也是与终端相关的进程;如果终端关闭,则此类进程也会终止;

 ③nohup 命令 &:使其启动并转入后台,这样的进程是与终端无关的进程;


 bg:后台作业在后台运行;

 bg id

 Linux进程管理(一)_第3张图片

 fg:将后台作业放入前台运行;

 fg id