目录
一、进程
1.定义
2.组成
3.进程环境包括
4.进程的生命周期
二、描述进程状态
三、相关命令
1.top命令
2.ps命令
二、中断进程
1.基本进程管理信号
2.每个信号的默认操作
3.相关命令
(1)kill命令
(2)killall命令
(3)pkill命令
三、以管理员身份注销账户
四、监控进程活动
1.负载均衡
(1)介绍
(2)负载均衡相关数据解释
(3)关于CPU的负载均衡解释
一、进程
1.定义
进程是已启动的可执行程序的运行中的实例
2.组成
已分配的内存的地址空间
安全属性,包括所有凭证和特权
程序代码的一个或多个执行线程
进程状态
3.进程环境包括
本地和全局变量
当前调度上下文
分配的系统资源,如文件描述符合网络端口
4.进程的生命周期
现有的父进程复制自己的地址空间(fork)来创建一个新的子进程结构,每个新进程分配有一个唯一进程ID(PID),满足跟踪和安全性需求,PID和父进程ID(PPID)是新进程环境的元素,任何进程可创建子进程,所有进程都是第一个系统进程的后代
通过fork进程,子进程继承安全性身份、过去和当前的文件描述符、端口、资源特权,环境变量,以及程序代码。随后,子进程可能exec其自己的程序代码。通常,父进程在子进程运行期间处于睡眠状态,设置一个在子进程完成时发出信号的请求(wait),在退出时,子进程已经关闭或者丢弃了其资源和环境。剩下唯一的资源叫僵停,是进程表中的一个条目。父进程在子进程退出时收到信号而被唤醒,清理子条目的进程表,由此释放子进程的最后一个资源,然后,父进程继续执行自己的程序代码。
二、描述进程状态
名称 | 标志 | 内核定义的状态名称和描述 |
运行 | 红 | TASK_RUNNING:进程正在CPU上执行,或者正在等待运行。处于运行中(或可运行)状态时,进程可能正在执行用户例程或内核例程(系统调用),或者已排队并就绪 |
睡眠 | S | TASK_INTERRUPTICLE:进程正在等待吗某一条件 |
睡眠 | D | TASK_UNINTERRUPTICLE:此进程也在睡眠,但是与S状态不同,不会响应信号。仅仅在进程中断可能会导致意外设备状态的情况使用 |
睡眠 | K | TASK_KILLABLE:与不可中断的D状态相同,但是有修改,允许等待中的任务响应要被中断(彻底退出)的信号 |
睡眠 | I | TASK_REPORT_IDLE:D状态的一个子集,在计算负载均衡值时,内核不会统计这些进程 |
已停止 | T | TASK_STOPPED:进程已被停止(暂停) |
已停止 | T | TASK_TRACED:正在被调试的进程也会被临时停止,并且共享一个T状态标志 |
僵停 | Z | EXIT_ZOMBIE:子进程在退出时向父进程发出信号 |
僵停 | X | EXIT_DEAD:当前父进程清理(获取)剩余的子进程结构时,进程现在已彻底释放 |
三、相关命令
1.top命令
S列显示每个进程的状态,在单CPU系统上,一次只能运行一个进程,可以看到有多个R进程,并非所有进程都在运行,有些在等待
2.ps命令
用于列出当先进程,显示更详细的信息包括:
(1)用户UID,它确定进程的特权
(2)PID
(3)CPU和已经花费的实际时间
(4)进程在各种位置上分配内存数量
(5)进程stdout的位置,称为控制端
选项:
-aux 最常见的选项集,显示包括无控制终端的进程在内的所有进程。
-lax 提供更多技术的详细信息,但是可以避免查询用户名来加快显示。
-ef 类似于UNIX的语法使用选项。
-j 显示与作业相关的信息。
方括号中的进程(通常位于列表顶部)为调度的内核线程
僵停列为exiting和defunct
ps输出是一次性的,top可以实时更新输出
ps可以采用树形显示格式,便于查看父子进程之间的关系
二、中断进程
1.基本进程管理信号
信号编号 | 短名称 | 定义 | 用途 |
1 | HUP | 挂起 | 用于报告中断控制进程的终止,也用于请求进程重新初始化(重新加载配置)而不终止 |
2 | INT | 键盘中断 | 导致程序终止,可以被拦截或处理,通过按INTR键序列(ctrl+C)发送 |
3 | QUIT | 键盘退出 | 与SIGINT相似,在终止时添加进程转储。通过按QUIT键序列(ctrl+\)发送 |
9 | KILL | 中断、无法拦截 | 导致立即终止程序,无法拦截,忽略或处理,总是致命的 |
15 | TERM(默认) | 终止 | 导致程序终止,和SIGKILL不同,可以拦截,忽略处理,要求程序终止的“友好”方式;允许自我清理 |
18 | CONT | 继续 | 发送至进程使其恢复(若已经停止)。无法被拦截,即使被处理,也始终恢复进程 |
19 | STOP | 停止、无法拦截 | 暂停进程,无法被拦截或处理 |
20 | TSTP | 键盘停止 | 和SIGSTOP不同,可以被拦截、忽略或处理,通过按SUSP键序列(ctrl+Z)发送 |
2.每个信号的默认操作
终止——导致程序立即终止(退出)
核心转储——导致程序保存内存镜像(核心转储),然后终止
停止——导致程序停止执行(暂停),再等待继续(恢复)
3.相关命令
(1)kill命令
此命令根据PID编号向进程发送信号,此命令可用于发送任何信号,而不仅仅是终止信号
选项:
-l 列出所有可用信号的名称和编号
(2)killall命令
可以根据命令名称向多个进程发送信号
(3)pkill命令
向一个或多个符合条件的进程发送信号,选择条件可以是命令名称、特定用户拥有的进程或所有系统范围进程。pkill命令包括高级选择条件:
命令:具有模式匹配的命令名称的进程
UID:某一Linux用户账户拥有的进程吗,无论是有效还是真实
GID:某一Linux组账户拥有的进程,无论有效还是真实
父级:特定父进程的子进程
终端:运行于特定控制终端的进程
三、以管理员身份注销账户
要注销某个用户,首先确定要终止的登录会话,使用w命令列出用户登录和当前运行的进程,记录TTY和FROM列,以确定要关闭的会话
所有用户登录会话都与某个终端设备(TTY)相关联,若设备名称的格式为pts/N,说明这是一个与图形终端窗口或远程登录会话相关联的伪终端,如果格式为ttyN,则说明用户位于一个系统控制台、替代控制台或其他直接连接的终端设备上
四、监控进程活动
1.负载均衡
(1)介绍
负载均衡表示一段时间内感知系统负载,报告CPU上准备运行的进程数以及等待磁盘或网络I/O完成的进程数
(2)负载均衡相关数据解释
三个平均值表示了1,5,15分钟的负载情况
(3)关于CPU的负载均衡解释
需要CPU时间的进程是增加负载数的原因,可以根据显示的负载均衡值除以系统中的逻辑CPU数,低于1,则资源利用率好,等待时间短,高于1,则资源饱和度高,等待时间长。
空闲CPU队列的负载数为0,每个等待CPU处理的进程都会使负载数加1,如果有一个进程在CPU上运行,则负载数为1,尽管资源(CPU)处于使用状态,但是没有等待要求,如果该进程运行整整1分钟,那么它对着1分钟的负载均衡贡献值就是1。