进程管理

进程概念:一个程序在其自身的虚拟地址空间中的一次执行活动。

linux中的进程

在多用户多任务的linux系统中,每个进程都与运行的用户和组相关联,除了进程识别号PID外,在进程控制块PCB中每个进程还有另外4个与用户和组相关的识别号。

RUID:实际用户识别号

RGID:实际组识别号

EUID:有效用户识别号

EGID:有效组识别号

RUID、RGID是用来识别正在运行此进程的用户和组。EUID、EGID用来确定一个进程对其访问的文件的权限和优先权。

进程的类型

交互进程:有一个shell启动的进程,交互既可以在前台运行,也可以在后台运行。

批处理进程:不同于特定的终端相关联,提交到等待队列中顺序执行的进程。

守护进程:在linux启动时初始化,需要时运行与后台的进程。

进程的启动方式

(1.)手工启动

前台启动:手动启动一个进程的最常用方式。

后台启动:使用&命令。

(2.)调度启动

查看进程

命令 说明
ps 查看进程的详细信息
pgrep 通过模式匹配查找进程id
pidof 通过进程名获取进程的pid

ps 格式:ps [选项]

参数:

选项 说明 选项 说明
a 显示所有进程 f/-H 显示进程树,等价于–forest
e 在命令后显示环境变量 w/-w 宽行输出,通常用于显示完整的命令行
u 显示用户名和启动时间等信息 -e 显示所有进程 等价于–A
x 显示没有控制终端的进程 -f 完全显示,增加用户名,ppid,进程起始时间
o/-o 用户自定义输出 –sort<order> 指定按那些列排序

ps输出的消息含义

输出项 说明 输出项 说明
PID 进程号 TIME 进程自从启动以来占用cpu的时间
PPID 父进程的进程号 USER 用户名
TTY 进程从哪个终端启动 %CPU 占用cpu时间与时间的百分比
STAT 进程的当前状态 %MEM 占用内存与系统内存总量的百分比
START 进程开始执行的时间 SIZE 进程代码大小+数据大小+栈空间大小 KB
VSZ 进程占用的虚拟内存空间 KB COMMAND/CMD 进程的命令名
RSS 进程所占用的内存的空间 KB

进程状态STAT一栏表示状态的字符含义

状态 说明
R 进程正在执行中
S 进程处于睡眠状态
T 追踪或停止
Z 僵尸进程,进程已经被终止,但其父进程并不知道,没有妥善处理
W 进程没有固定的pages
< 高优先级的进程
N 低优先级的进程

1

杀死进程

发生以下情况需要杀死进程

  • 进程占用了过多的cpu时间
  • 进程锁住了一个终端,使得前台进程无法运行
  • 进程运行时间过长,但没有预期效果或者无法正常退出
  • 进程产生了过多的到屏幕或磁盘文件的输出

进程信号

概念:进程信号是在软件层次上对中断机制的一种模拟,进程信号是最基本的进程间通信方式,可以在进程之间直接发送。

使用kill -lman 7 signal 可以查看可以的进程信号。

常用进程信号说明

信号 数值 用途
SIGHUP 1 重读配置文件
SIGINT 2 从键盘上发出的强行终止信号 ctrl+c
SIGKILL 9 结束接受信号的进程 强行杀死进程
SIGTERM 15 正常的终止信号

可以发送进程信号的命令

命令 说明
kill 通过指定进程的PID为进程发送进程信号
killall 通过指定进程的名称为进程发送进程信号
pkill 通过模式匹配为指定的进程发送进程信号

进程控制

概念:控制当前正在运行的进程的行为。

进程控制常用命令:

命令或快捷键 功能说明
cmd& 命令后的&符号表示该命令放到后台执行
nohup cmd & 将该命令放到后台运行,用户注销后依然执行
ctrl+d 终止一个正在前台运行的进程 正常
ctrl+c 终止一个正在前台运行的进程 强行
ctrl+z 挂起一个正在前台运行的进程
jobs 显示后台作业和被挂起的进程
bg 在后台恢复运行一个被挂起的进程
fg 在前台恢复一个被挂起的进程