16进程管理与SElinux

  • 系统的进程有哪些状?
  • 不同的状态会如何影响系统的运行?
  • 进程之间是否可以互相管理?。
  • 与进程有关的还有SElinux这个加强文件存取安全性的东西

16.1什么是进程

  • Linux下所有命令与你能够执行的操作都与权限有关
    • 系统如何判断你的权限
    • 13章账号管理的UID/GID,及文件的属性
  • 【触发任何一个事件,系统都会将它定义为一个进程,且给予这个进程一个ID,同时根据触发这个进程的用户与相关属性关系,给予这个PID一组有效权限设置)
  • 这个PID能在系统上面执行的操作就与这个PID的权限有关。
  • 什么叫做【触发事件】
  • 什么情况下会触发一个事件
  • 同一个事件可否被触发多次

16.1.1进程与程序( process c& progran)

  • 如何产生一个进程
  • 【执行一个程序或命令】就可触发一个事件而获取一个PID
  • 系统只认识二进制文件,当要让系统工作的时候,就要启动一个二进制文件,这个二进制文件就是程序

  • 每个进程都有三组权限,每组都有r,w,x
  • 当root执行touch时,它获取的是UID/GID=0/0的权限
    • dmtsai(UID/GID=501/501)执行这个touch时,它的权限就跟root不同

16进程管理与SElinux

16进程管理与SElinux

  • 程序一般放在磁盘,然后用户的执行来触发
  • 触发后会加载到内存中成为个体,就是进程
  • 为让OS可管理这个进程,进程会给予执行者权限/属性等参数
    • 及进程所需要的脚本或数据,最后再给予PID
  • 操作系统通过这个PID来判断该进程是否有执行权限

  • 操作系统时,通常利用连接程序或直接在主机上面登录,

  • 然后获取我们的shell!

  • shell是bash对吧!

  • /bin/bash对吧!

  • 同时间的每个人登录都是执行/bin/bash对吧!

  • 每个人获取的权限就是不同

  • 当我们登录并执行bash时,系统已给我们一个PID,

    • 根据登录者的UD/GID(/etc/ passwd)而来
  • /bin/bash是一个程序,

  • dmtsai登录后,它获取一个PID为2234的进程,这个进程的User/Group都是dmsa

  • 当这个进程执行其他作业时,如touch时,那么由这个进程衍生出来的其他进程在一般状态下,也会沿用这个进程的相关权限。

  • 程序:通常为二进制程序,放置在存储媒介中(如硬盘、光盘、软盘、磁带等)以物理文件的形式存在。
  • 进程:程序被触发后,执行者的权限与属性、程序的代码与所需数据等都会被加载到内存,操作系统给予这个内存中的单元一个标识符

子进程和父进程

  • 当我们登录系统后,会获取一个bash的shell,然后我们用这个bash提供的接口去执行另一个命令,
  • usr/bin/ passwd或是 touch等,那些另外执行的命令也会被触发成为PID
  • 那个后来执行命令所产生的PID就是【子进程,而在我们原本的bash环境下,就称为【父进程借用我们在第10章Bash谈到 export所用的示意图来说明好了

16进程管理与SElinux

  • 从图16.1.3来看,连续执行两个bash后
  • 第二个bash的父进程就是前一个bash。
  • 每个进程都有一个PID,那某个进程的父进程如何判断?
  • 通过(PPID)判断
  • 第10章的export内容我们也探讨过环境变量的继承问题,
    • 子进程可以获取父进程的环境变量。

  • 目前的bash下,再触发一次bash,
  • 并用【ps-】查看进程相关的输出信息。
  • 直接执行bash,会进入到子进程的环境中,然后输入ps-后,出现

16进程管理与SElinux

  • 第一个bash的PD与第二个bash的PPID都是13928,因为第二
    个bash是来自于第一个所产生的嘛!
  • pS-l查看到相关的进程信息即可。

  • 明明我将有问题的进程关洲了,怎么过一阵子它又自动产生了?而且
    新产生的那个进程的PID与原先的还不一样
  • 如果不是crontab计划任务的影响,肯定有一个父进程存在,所以你杀掉子进程后,父进程就会主动再生成一个。
  • 找出那个父进程,然后将它删除就可以。

fork and exec:程序调用的流程

  • 子进程与父进程之间的关系复杂,在于进程之间的调用。
  • Linux的程序调用通常称fok-and-exec的流程1。
  • 进程都会借由父进程以复制(fork)的方式产生一个一模样的子进程,
  • 被复制出来的子进程再以exec的方式来执行实际要执行的进程,最终就成为一个子进程。整个流程有点像下面这张图:

16进程管理与SElinux

  • (1)系统先以fork复制一个与父进程相同的临时进程,与父进程唯一的差别PID不同
  • 这个临时进程还会多一个PPID就是父进程的进程标识符
  • (2)临时进程以exec的方式加载实际要执行的进程,
    • 新的进程名称为qqq,最终子进程的进程代码就会变成qqq

系统或网络服务:常驻在内存的进程