Linux--系统进程管理

  在早期的计算机中不包含操作系统,从头到位一台计算机只运行了一个程序,并且这个程序能访问计算机中的所有资源,只做一件事情。操作系统的出现使得计算机能运行多个程序,并且不同的程序都在单独的进程中运行,进程又可以启动多个线程。

系统进程

基本概念

  1. 计算机,主要是由内核(Kernel)和运行在内核之上的众多进程(Process)来实现的。(内核也是一个程序)
  2. 内核,主要负责管理系统的进程,内存,设备驱动和网络等
  3. 程序是静态概念,本身作为一种软件资源长期保存;而进程是程序的执行过程,是动态概念,有一定的生命周期,动态产生和消亡的。
  4. 进程是指一个在内存中运行的应用程序,一个进程可以启动多个线程。对于计算机来而言,主要工作都在CUP和内存中完成。
  5. 线程是指进程中的一个执行流程,线程总是属于某个进程,进程中的多个线程共享进程的内存空间
  6. 注意:程序,由指令+数据组成。

程序的运行

  • 一个命令的运行

内存是由内存环的,内核运行在0环(内核空间),用户进程运行在3环(用户空间),当执行一些敏感信息的时候都是由内核完成。比如运行一个mkdir命令,发起这个命令就启动mkdir这个进程,当按下“Enter”键的时候,程序就会被装载到内存,在内存中会划分一个区域(保存这该进程的数据和指令),这就表示启动一个进程了。当运行起来的时候,就需要创建一个目录,发现需要去操作硬盘,mkdir这个进程通过系统调用会向内核发送操作硬盘的申请。内核接收到申请后,就转入内核模式,mkdir就从cpu中退出了(归队),退出时会保存进程信息(保存在内核中,内核会追踪每一个进程信息,内核里面有一个(task structure)数据结构;会维护每一个进程信息ID,NAME,PID,PPID等)内核持有CPU,接受到命令读取内存信息并修改,完成后同步到硬盘,该命令执行完成。

  • 多个进程的运行

CPU要么由进程所持有,要么由内核所持有,进程的执行信息保存在内存当中,描述信息在内核当中当多个程序同时运行的时候(以为同时),多个进程和内核就会轮流的去持有CPU资源进程所有数据就会加载到内存当中(在内存修改的数据可以同步到硬盘IO设备),CPU就会管理着内存当中的进程(户口本,该那个进程运行,运行的时间,下一个是谁运行)。CPU只有一个的情况下,当一个进程所持有CPU的时间到了,但没有执行完,内核就会持有CPU保存进程的描述信息(寄存器,记录执行到哪儿)这个过程叫做保存现场,进程归队。CPU会调度下一个进程,执行完成后之前的进程如果被唤醒,内核信息里面就会给出之前执行到哪儿的信息,让该进程继续执行,这个过程就叫恢复现场。 当执行完成之后,该进程就退出了,内存空间就释放了,内核也会销毁这个进程信息。

相关管理工具

查看进程

  • 基本命令
ps        #查看静态的进程统计信息(processes statistic),当前控制台下该属于该用户的进程
          #ps -ef #可以显示出所有用户的进程System V风格,ps aux是BSD风格
top       #查看进程动态信息
htop      #查看进程动态信息,top的升级版
pgrep     #查询进程信息
pstree    #查看进程
  • ps

说明:

UID: #用户Id
PID : #进程号
PPLD: #父进程的进程号
STIME: #创建进程时间
TTY: #进程启动的终端
STAT: #进程当前状态(S休眠状态,D不可中断的休眠状态,R运行状态,Z僵死状态,T停止
NI : #进程优先级
TIME: #进程运行时间
COMMAND/CMD:#进程的命令
%CPU: #占用CPU时间和总时间的百分比
%MEM: #占用内存与系统内存总量的百分比

  • pstree

除init进程以外,其他进程都有父进程,init是伴随着系统的启动。

管理进程

  • 启动进程
  1. 前台启动:使用service 程序 start,eg:service network start。
  2. 后台程序:使用service 程序 start $,eg:service network start $。
  3. 前台启动,放入后台:正在运行的程序,按Ctrl+Z组合键。
  4. 后台进程,调回前台:使用”job -l”选项显示进程的PID,后通过fg或fg PID 命令讲后台进程调入前台执行。
  • 杀掉进程
  1. kill -1 PID #终端断线
  2. kill -2 PID #中断正在执行的程序,等于Ctrl + c
  3. kill -3 PID #退出(同 Ctrl + \)
  4. kill -9 PID #强制、尽快终止进程
  5. kill -15 PID #终止进程
  6. kill -18 PID #继续(与STOP相反, fg/bg命令)
  7. kill -19 PID #暂停(同 Ctrl + Z)

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器