目录
一、进程:
1、定义:
进程是已启动的可执行程序的运行中实例,由已分配的内存地址空间、安全属性、所有权和特权、一个或多个线程以及进程状态组成,常见进程如下:
(1)fork :表示现有的父进程复制自己的地址空间(进程分叉)来创建子进程结构;
(2)exec :表示子进程执行自己的程序代码;
(3)syscall :表示系统调用;
(4)zombie :表示子进程在退出时关闭或丢弃其资源和环境后剩下的唯一资源;
(5)reap :表示父进程获取剩余子进程结构,此时进程已彻底释放。
2、环境:
进程的环境是一个信息列表,包含本地和全局变量、当前调度上下文以及分配的系统资源(文件和网络端口)。
3、状态:
在多任务的操作系统中,每个 CPU 同一时间只能处理一个进程,因此进程运行时具有不同状态,这对系统的故障排除十分有用。
(1)运行中:
R(TASK_RUNNING):进程正在CPU上执行,或正在等待运行;
(2)睡眠:
1)S(TASK_INTERRUPTIBLE):进程正在等待某一条件(硬件请求、系统资源访问信号等),当此条件满足时,该进程将返回到 R 状态;
2)D(TASK_UNINTERRUPTIBLE):睡眠状态,此时不会响应信号。仅在进程中断可能导致设备状态异常时使用;
3)K(TASK_KILLABLE):与 D 状态相同,但允许进程响应中止信号;
4)I (TASK_REPORT_IDLE):D 状态的一个子集,在计算平均负载时不统计;
(3)已停止:
1)T(TASK_STOPPED):进程被暂停,可通过另一信号返回到 R 状态,继续执行;
2)T(TASK_TRACED):正在被调试的进程也会临时停止,此时共享同一个状态标志;
(4)僵停:
1)Z(EXIT_ZOMBIE):子进程在退出时向父进程发出信号,此时除了进程身份(PID)外的资源均已释放;
2)X(EXIT_DEAD):父进程清理剩余的子进程结构,此时进程已彻底释放(此状态无法在进程的使用程序中看到)。
4、查看进程状态:
操作系统为每个新进程分配一个状态。top 命令的 S 列或 ps 命令的 STAT 列均可显示每个进程的状态。
(1)top :
top 命令默认每隔 5 秒刷新动态负载,默认按 PID 升序显示进程。使用 l 、t 和 m 键,可切换负载、线程和内存标题行。
注:在单 CPU 的系统上,一次只能运行一个进程。但可能会出现多个状态为 R 的进程。此时,并非所有进程都在连续运行,其中部分进程处于等待状态。
(2)ps :
注:Rs中的小写s表示包含子进程;S< 表示高优先级;R+ 中的 + 表示正位于后台运行。
ps 的常用选项如下:
1)aux :显示包括无控制终端进程在内的所有进程。
注:ps -aux 不等于 ps aux。ps -aux 为UNIX格式,而 ps aux 为BSD格式。
2)-ef :显示所有进程。
例如,列出当前运行的所有进程,仅查看 tail 行:
3)lax :以长列表格式显示进程,可提供更多信息。
4)j :查找进程和会话信息。
5)--forest :以树形格式显示进程(可查看父进程和子进程间的关系);
6)-O 或 --sort :对输出进行排序,显示顺序与系统进程表的顺序相匹配。
二、控制作业:
控制作业是 shell 的一种功能,允许单个 shell 实例运行和管理多个命令。
1、jobs 命令:
jobs 命令可显示作业列表。
2、在后台运行作业:
一个终端同一时间只能对一个作业发送信号和读取信息,这个作业进程成为该终端的前台进程。用户可将作业进程放入后台运行或暂停。
(1)$ :
在任何命令或管道后附加一个 & 符号,即可使其在后台启动。Bash shell会显示此作业特定于会话的唯一编号与新建子进程的PID。
注:shell 会直接显示 shell 提示符,不会等待子进程终止。
(2)fg :
fg 命令可将后台作业置于前台,需使用 % 后加编号的形式。
ctrl+z 可将前台进程置于后台并暂停。
ctrl+c 可中止进程。
(3)bg :
bg 命令可启动暂停的进程,同样需要使用 % 后加编号的形式。
三、中断进程:
1、signals :
signals 指的是发给进程的软件中断,可以通过名称(如 -HUP 或 -SIGHUP)也可以通过编号(如-1 或 -9)指定,一般signals分为三种类型,如下表:
signals | 名称 | 定义 | 适用场景 |
---|---|---|---|
15 | TERM | 终止 | 正常关闭(默认),允许程序完成基本操作和自我清理后再终止 |
18 | CONT | 继续 | 恢复进程,无法被拦截 |
19 | STOP | 暂时停止 | 暂停进程,无法被拦截 |
注:signals 9 KILL 表示中断,会立即终止进程。此命令常被滥用,且不易释放资源,所以建议先使用 SIGTERM(15),再尝试SIGINT (2) ,实在关不掉再用 SIGKILL(9) 。
2、kill 命令:
使用 kill 命令可向进程发送signals。-l 选项可查看发送的signals。
3、pkill 命令:
使用 pkill 可以向命令、UID 、 GID、子进程以及 terminal 发送 signals。
4、管理员注销用户:
pkill -SIGKILL –u username 会强制中断某一用户的所有进程。username可通过 w 命令获取。
w 命令可显示当前登录系统的用户。
四、平均负载值:
1、uptime :
uptime 命令可显示当前时间、计算机启动时长、运行的用户会话数以及当前的平均负载值(分别显示1min、5min、15min的负载情况)。
2、lscpu :
lscpu 命令可确定系统上的CPU数量。
标签:10,TASK,状态,ps,signals,命令,监控,Linux,进程 From: https://blog.csdn.net/m0_68756914/article/details/143576658注:用显示的负载平均值除以CPU数,若小于1,则表示资源使用率适当,等待时间短。