Linux 进程管理
进程管理
概念
进程
程序的一次执行过程
资源分配和管理的基本单位
进程管理的内容
监视进程:获取当前系统中各个进程的具体状态信息
调整进程运行优先级
守护进程
与进程有关的信息
PID (Process ID) 进程号
PPID (Parent ID) 父进程的 PID 号
USER/UID 执行该进程的用户名及其 uid
UID TTY 启动该进程的终端
PRI(priority) 进程的优先级,数字越大表示优先级越低
NICE 进程的谦让度,表示进程对 CPU 时间要求的迫切程度
%CPU 进程占用的 CPU 比例
%MEM 进程占用的内存比例
TIME 进程实际占用 CPU 的总时间
STIME 进程开始执行的时间
ADDR 进程在内存中的地址
RSS: 进程占用的内存大小 (KB)
VSZ 进程占用的虚拟内存空间
CMD 启动进程的命令
STAT (state,可用 S 表示) 进程的状态
S 睡眠状态
Z 僵尸状态
W 进程没有驻留页(等待)
D 不间断睡眠(挂起)
R 运行或者准备运行状态
T 停止或者追踪
I 空闲
N 低优先级的任务
Linux 系统中部分常用的信号
进程的优先级(PRI)
进程的优先级 PRI(priority)是操作系统在进程调度时用于判决进程是否能够获得 CPU 的依据之一
进程的优先级越高,则越能在竞争中胜出而获得 CPU 时间
以一个整数来表达的,数值越低,优先级越高
每个普通进程的优先级默认为 80
进程的谦让度(NICE)
进程的谦让度(NICE)表示进程对 CPU 时间要求的迫切程度。
取值范围为-20~19
进程的谦让度为负数时,反映进程对 CPU 资源的要求较为迫切。
一般来说:优先级 (PRI) 与谦让度 (NICE) 存在如下的关系: PRI (new) = PRI (old) + NICE
root 用户可以调整自己和其他用户的进程的 nice 值,且范围为-20~19;
普通用户只能调整自己进程的 nice 值,为了避免普通用户抢占系统资源, nice 的调整范围为 0~19,而且只能往高调整
进程类型
系统进程 : 操作系统启动后,系统环境平台运行所加载的进程。
用户进程:与终端相关联,是由用户所执行的进程。
守护进程:在后台运行的进程,有时也称为服务。它没有屏幕提示,只是在 后台等待用户或系统的请求
Linux 系统中的部分系统服务及其守护进程
进程监视命令
ps (process status) 命令
功能:报告进程的相关信息
格式:ps [选项]
选项
- -l 以长格式显示进程信息
- -e 显示所有进程的信息(包含系统进程)
- -a 显示所有用户进程
- -x 显示没有控制终端的进程
- -u 显示用户名和启动时间等信息
例
|
|
top 命令
功能:以实时的方式报告进程的相关信息
格式:top [选项]
选项
- -d 10 设定刷新进程信息的间隔时间(秒)
pstree 命令
功能:显示进程家族树的信息
格式:pstree [选项] [进程 PID/用户名]
选项
-p 显示每个进程的 PID 号
-u 用户名 指定只显示属于该用户的进程
lsof (list open files) 命令
功能:列出由某进程所打开的文件
格式:lsof [选项] [文件或目录路径]
选项
-p PID 列出由该进程所打开的所有文件
-u 用户名 列出某用户打开的所有文件
kill 命令
功能:向特定进程发送某种信号
格式:kill [选项] [-信号名称/编号] [PID 列表]
选项
- -l 列出系统中定义的信号
进程优先级命令
nice 命令
功能:设定要启动的进程的谦让度
格式:
nice [选项] 命令
选项
- -n(nice) 数值 :设定谦让度,数值的范围 -20 ~ 19
实例
|
|
renice 命令
功能:调整已存在进程的 nice 值
格式:
renice -n 谦让度 进程 pid 号
实例
|
|
系统服务管理命令
runlevel 命令
功能:用于显示系统当前的和上一次的运行级别。如系统不存在上一次的运行级别,用 N 来代替
格式:
runlevel
init 命令
功能:转换服务的运行级别。
格式:
init[n]
,其中格式中的 n 为 0~6 的级别,转换级别后系统立刻生效。例
|
|
systemctl 系统服务管理
查看系统服务启动状态。
|
|
实例:搜索指定的服务 (crond) 在系统中是否开机启动。
|
|
列出所有处于激活状态的服务
|
|
UNIT:服务名
LOAD:服务是否已经被加载
ACTIVE:服务活动状态
SUB:服务进程状态
DESCRIPTION:服务的描述
服务状态控制
|
|
实例
|
|
服务开机自启控制
|
|
实例
|
|
版本迭代差异
Centos7/RHEL7 版本:
systemd 进程 取代 init 进程;
init 进程的配置文件/etc/inittab 保留,但内容改变,原来的功能也不再使用
- targets 取代 runlevels
- 获得默认启动的 target: systemctl get-default
- 设置系统默认启动的 target: systemctl set-default
systemctl set-default multi-user.target
修改为多用户字符状态systemctl set-default graphical.target
修改为图形界面
- centos7 仍然保留使用静态的运行级别来构建不同的启动状态
信号
TODO:https://www.cnblogs.com/zhaokunhao/p/14573716.html