PS 进程

什么是进程?

所谓进程,它是已启动的可执行程序的运行中实例。进程有以下组成部分

  • 已分配内存的地址空间
  • 安全属性,包括所有权凭据和特权
  • 程序代码的一个或多个执行线程
  • 进程状态

进程的环境包括:

  • 本地和全局变量
  • 当前调度上下文
  • 分配的系统资源,如文件描述符和网络端口

进程状态

在多任务处理操作系统中,每个CPU(或CPU核心)在一个时间点上处理一个进程。在进程运行时,他对CPU时间和资源分配的直接要求会有变化。进程分配有状态,状态会随环境需求而改变。

Linux进程状态

状态 描述
T 进程已被停止(暂停)
Z 进程已释放其全部资源(PID除外)
R 进程正在CPU上运行或者正在等待于CPU上运行
S 进程正在处于睡眠状态,直至满足某些条件后才会启动
D 进程正在等待I/O或某些条件得到满足,并且绝对不会响应信号

PS命令用于列出当前的进程。该命令可以提供详细的进程信息,包括:

  • 用户识别符(UID)他确定进程的特权;
  • 唯一进程识别符(PID);
  • CPU和已经花费的实时时间;
  • 进程在各种位置上分配的内存数量;
  • 进程的位置STDOUT,称为控制终端
  • 当前的进程状态
重点

Linux版的ps命令支持三种选项格式,包括:

  • UNIX(POSIX)选项,可以分组但必须以连字符开头;
  • DSB选项,可以分组但不可以与连字符;
  • GNU长选项,以双连字符开头
  • 例如,ps -aux不同于ps aux
    常用显示列表(选项aux)显示所有进程,包含用户感兴趣的列,以及没有控制终端的进程。长列表(选项lax)提供更多技术详细信息,但可以通过避免查询用户名来加快显示。相似的UNIX语法使用选项-ef来显示所有进程
    PS 进程

PS 进程
PS 进程
默认情况下,如果不使用选项而运行ps,将选择具有与当前用户相同的有效用户ID(EUID)并与调用ps所处同一终端关联的所有进程。

  • 方括号中的进程(通常位于顶部)为调度的内核线程
  • 僵停在ps列表中显示为exiting会defunct
  • ps仅显示一次。如需重复更新的进程显示,请运行top(1)
  • ps可以采用树形格式显示,来查看父/子关系
  • 默认的输出没有排序。显示顺序与系统进程表的顺序匹配,在进程终止和新进程创建时重新使用列表行。输出可能会按照时间顺序显示,但不一定,除非使用明确的呃-O或- -sort选项

练习后台和前台进程

  1. 打开两个终端窗口
  2. 在做窗口中启动一个进程,该进程以一秒为间隔持续向~/outfile 文件附加单词”rock“和一个空格,整个命令集必须包含在括号内,以便作业控制可以将该集合解释为一个作业
    PS 进程
  3. 在右窗口中,使用tail确认新进程正在写入该文件
    PS 进程
  4. 在左窗口中暂停正在运行的进程。shell将返回作业ID用方括号,在右窗口中确认进程输出已停止

ctrl +z
PS 进程

  1. 在左窗口中,查看jobs列表,+表示当前的作业,在后台重新启动改作业,在右侧窗口中确定输出再次处于活动状态
    PS 进程
  2. 终止rock进程,在左侧窗口中,使作业进入前台(fg),然后使用ctrl +c 终止该作业。确认rock进程
    已消失。在右窗口中,确认rock输出不在活动
    PS 进程
    5.在左侧窗口中,使用ps查看剩余的作业。暂停中的作业具有状态T。其他后台作业为睡眠中(S),因为ps在显示时处于‘CPU上’(R)
    PS 进程