1、进程概念
①进程是操作系统最核心的概念,那什么是进程?
进程就是正在运行中的程序,资源单位。
②线程
进程内代码的执行过程,线程是CPU的执行单位,一个进程至少有一个线程
一个进程的多个线程共享该进程的内存资源。
不同进程的多个线程的内存资源是相互隔离的
③那什么是程序?
程序就是一堆代码文件
④内核态和用户态
内核态:程序运行的过程
用户态:操作系统控制着硬件去运行程序的过程
⑤并发与并行
并行:多个程序看起来是同时运行的,事实上是cup利用时间、空间碎片快速在多个程序之间快速切换,给人的感 觉就是多个程序在同时运行
并发:多个程序真正意义上的同时运行,只有多内核才能实现
强调:CPU是运行代码,而不是做io
⑥任务运行的三种状态
运行态、 就绪态、 阻塞态
⑦提交任务的两种方式
同步、 异步
二、查看进程信息
[root@@321 ~]# ps aux (查看进程池)
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 125432 3860 ? Ss 08:39 0:01 /usr/lib/systemd/systemd --sw
root 2 0.0 0.0 0 0 ? S 08:39 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 08:39 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 08:39 0:00 [kworker/0:0H]
STAT:进程状态
R:运行状态 S:可中断睡眠状态
D:不可中断睡眠状态 T:暂停状态
z :僵尸进程 x:死掉的进程(几乎看不到,很快会被操作系统回收掉)
>:>代表优先级较高的进程 n:n带表优先级较低的进程
s:包含子进程 +:+表示的是前台的进程组
Linux进程有两种睡眠状态
Intreeuptible Sleep (可中断睡眠,在ps命令中显示“s”)
处在这种睡眠状态的进程是可以通过给它发送signal来唤醒的,比如HUP信号给nginx的master进程可以让nginx重新加载配置文件而不需要重新启动nginx进程。
Unintreeuptible Sleep (不可中断睡眠,在ps命令中显示“D”)
处在这种状态的进程不接受外来的任何signal,这也是为何无法用kill杀掉处于D状态的进程,无论是“kill”、“kill -9”
、“kill -15”还是“Ctrl+c”、“Ctrl +z”都无济于事,因为它们压根就不受这些信号的支配。
查看进程树 : pstree PID号
查看PPID:ps -elf PPID号
动态查看:top -d 1 (一秒刷新一次)
top -d 1 -p (进程的PID)
top -d 1 -u nginx (查看指定用户的进程)
top -b -n 2 > a.txt (将两次刷新信息写到文件)
显示信息解释
top - 19:37:01 up 10:57, 2 users, load average: 0.00, 0.01, 0.05
第一部分系统整体统计时间
up左边:当前系统时间
up右边:系统从开机到现在的运行时间
load average: 0.00, 0.01, 0.05 : CPU的1分钟、5分钟、15分钟的平均负载
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
us:用户态占用CPU时间的百分比
sy:内核态占用CPU时间的百分比
ni:代表优先被调度的进程占CPU时间的百分比
id:CPU空闲百分比
wa:CPU等待io的百分比
hi:硬件终端,处理硬件中断所占用的CPU时间
si:软件中断,处理软件中断所占用的CPU时间
st:被偷走的CPU
中断是系统用来影响硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的终端处理程序来影响设备的请求
ps:中断是一个异步的事件处理机制,可以提高操作系统处理并发的能力。
三、top命令
top的运行过程中可以通过top内部命令对进程的显示方式进行控制,top内部命令如下
M:按内存的使用排序
P:按CPU的使用排序
N:按PID的大小排序
R:对排序进行反转
f自定义显示字段
1:显示所有CPU的负载情况
s:改变画面更新频率
h |?帮助
<:向前
>:向后
z:色彩
命令行选项:
top -d 刷新时间s -p pid #只看某一个进程的信息
top -d 刷新时间s -u 用户 #只查看该用户开启的所有进程信息
四、调整进程的优先级
r调整进程的优先级
优先级的等级范围是-20~19,其中数值越低优先级越高,数值越高优先级越低,优先级最高为-20,最低为19
需要注意:普通用户只能在0~19之间调整应用程序的优先级,只有超级用户有权限调整更高的优先权(-20~19)
kill信号管理
1:重新加载
2:中断进程,类似于Ctrl+c
3:正常终止进程
9:强制杀死进程
15:默认信号,终止进程
18:被暂停的进程将继续回复运行
19:暂停进程
20:停止进程运行
命令示例:
[root@@321 ~]# kill -9 9813 (9813为进程的PID号)
pkill:
-t:指定终端
-9:强制,把终端运行的命令和终端一起杀掉