一、生命周期
ps -aux pstree
PID为1,系统进程
5/6版本:init 7版本:systemd
父进程复制自己的地址空间(fork)创建一个新的(子)进程结构
每个新进程分配一个唯一的进程 ID (PID),满足跟踪安全性需求
PID 和 父进程 ID (PPID)是子进程环境的元素,任何进程都可以创建子进程
二、进程属性
1、进程ID(PID):唯一数值 父进程ID(PPID)
2、启动进程的用户ID(UID),所属组(GID)
3、进程的状态
STAT:程序运行状态 状态字母后的字符
R:正在运行 <:高优先级
S:正在休眠 N:低优先级
T:正在侦测或停止 L :进程有页面锁定内存(不能交换到物理内存)
Z:僵尸进程 s :控制进程(进程之间是格力的)
D:不可中断 l :多线程(同一个程序下开启不同线程,共享资源)
+ :进程运行在前台
zombie僵尸进程:不执行代码,占用内存地址空间(出现是正常情况)
1)kill命令无法杀死僵尸父进程
2)杀死僵尸进程的父进程,僵尸进程会随之消失
3)如果僵尸进程的父进程是systemd或init,那么需要重启系统
4、进程的优先级nice
进程的优先级管理
优先级取值范围为(-20,19),越小优先级越高, 默认优先级是 0
nice -n 指定程序的运行优先级
格式:nice -n 数值 程序
renice 改变程序的运行优先级
格式:renice 数值 PID
top -p PID 查看进程优先级
5、进程所连接的终端名(持续命令脱离终端)
6、进程资源占用:比如占用资源大小(内存、CPU、占用量)
三、进程处理
1、上下文切换
1)处理一段时间,到一定时间中断,保存状态,先进行下一个进程
2)运行队列、过期队列
3)一般不能有太多上下文切换,会导致性能下降
2、中断处理
1)硬中断:是由硬件产生的,需要快速响应(比如:磁盘 IO 中断、键盘中断、鼠标中断等)
2)软中断:被用来处理可以推迟的任务(TCP/IP、SCSI 协议操作等)
3、进程切换
前台进程:在终端中运行的命令,该终端为进程的控制终端,若终端关闭,这个进程也随着消失
后台进程:守护进程
1)& 将进程放在后台运行,不能脱离终端
如:ping 192.168.30.100 &
nohup 命令 & 放入后台切换终端
如:nohup ping 192.168.30.100 &
2)ctrl+z 将一个正在前台执行的命令放到后台,并且暂停
3)jobs 查看当前有多少在后台运行的进程
3)fg 将后台中的命令调至前台继续运行
4)bg将一个在后台暂停的命令,变成继续执行
screen命令后台运行,脱离终端——需要安装
screen -ls 列出当前所有会话
screen -S test 新建一个text的会话
screen -r test1 回到text会话
保存路径:/var/run/screen/S-root
4、kill 关闭进程
kill 关闭进程:kill 进程号 关闭单个进程
killall 和 pkill 命令用于杀死指定名字的进程
-l列出全部编号
信号编号信号名
1) SIGHUP 重新加载配置
2) SIGINT 键盘中断 crtl+c
3) SIGQUIT 退出
9) SIGKILL 强制终止
15)SIGTERM 终止(正常结束),缺省信号
18) SIGCONT 继续
19) SIGSTOP 停止
20) SIGTSTP 暂停 crtl+z
killall 命令
kill [子选项][信号] 进程名
选项:-i:交互式,询问是否要杀死某个进程
交互式杀死 sshd 进程:
pkill 命令
pkill 命令和 killall 命令非常相似,也是按照进程名来杀死进程
pkill [选项][信号] 进程名
-t 终端号:按照终端号踢出用户
四、查看进程
1、ps aux查看的信息:
%CPD 占用CPU的百分比
%MEM 占用内存的百分比
VSZ虚拟内存空间:共享文件
RSS真实使用空间:判断进程使用的内存空间
STAT:程序运行状态
Ctrl+c 终止
Ctrl+z 挂起、暂停
Ctrl+d 输入完成
2、ps常用参数:ps -ef 显示所有进程,完全格式输出
UID: 启动这些进程的用户
PID: 进程的 ID
PPID: 父进程的进程号
C: 进程生命周期中的 CPU 利用率
STIME: 进程启动时的系统时间
TTY: 表明进程在哪个终端设备上运行。如果显示?表示与终端无关,这种进程一般是内核态进程。另外,
tty1-tty6 是本机上面的登入者程序,若为 pts/0 等,则表示运行在虚拟终端上的进程。
TIME: 运行进程一共累计占用的 CPU 时间
CMD: 启动的程序名称
3、free
total 系统中有多少的物理内存
used 已经使用的内存数量
free 空闲的内存数量
shared 是多进程共享的内存数量
buff/cache 缓冲和缓存(缓冲:读,缓存:写)内存快耗尽时会释放给内存使用,不能全部释放
available:查看使用空间,评估有多少内存可用于新应用程序(通常 free+buff/cache 的数值要比 available 的数值大)
4、uptime 查看CPU负载工具
时间 运行时间 登录用户数 系统负载(1分钟 5分钟 15分钟)CPU为1 平均值>3 负载过高
5、top命令
第一行内容与uptime一致
Tasks: 481 total 进程总数
1 running 正在运行的进程数
480 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
Cpu(s): 0.0% us 系统用户进程使用 CPU 百分比
0.0% sy 内核中的进程占用 CPU 百分比
98.7% id 空闲 CPU 百分比
0.0% wa cpu 等待 I/0 完成的时间总量
hi 硬中断
si 软中断
st 虚拟机偷取物理的时间
%CPU 上次更新到现在的 CPU 时间占用百分比
%MEM 进程使用的物理内存百分比
VIRT 虚拟内存,是进程正在使用的所有内存
RES 进程所使用的物理内存
SHR 共享内存大小,单位 kb
top 快捷键:
默认 3s 刷新一次,按s修改刷新时间
按空格 :立即刷新。
q:退出
P:按CPU排序
M:按内存排序
T:按时间排序
p: 进程 IP,查看某个进程状态
数字键 1:显示每个内核的CPU 使用率
u/U:指定显示的用户
h:帮助
6、lsof命令
-p pid 查看进程在读哪些文件
-i 端口 查看端口被哪些进程使用