什么是进程
进程简单来说就是在操作系统中运行的程序,他是操作系统资源管理的最小单位。但是进程是一个动态的实体,它是程序的一次执行过程。进程和程序的区别在于:进程是动态的,程序是静态的,进程是运行中的程序,而程序是一些保存在硬盘上的可执行代码
程序代码的一个或多个执行线程:
进程状态:
程序:二进制文件,静态 /bin/date ,/usr/sbin/sshd
进程:是程序运行的过程,动态有生命周期及运行状态
线程状态:
1、新建:新创建了一个线程对象
2、可运行:线程对象创建后,其他线程调用了该对象的start方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu的使用权。
3、运行:可运行状态的线程获得了cpu时间片(timeslice),执行程序代码。
4、阻塞:阻塞是指线程因为某种原因放弃了cpu使用权,也即让出了cputimeslice,暂时停止运行。直到线程进入可运行状态,才有机会再次获得cpu timeslice转到运行状态。阻塞的情况分三种
(一):等待阻塞:运行的线程执行o.wait方法,JVM会把该线程放入等待队列中
(二):同步阻塞:两个任务同时对于一个文件处理,同时只能有一个任务处理,拎一个会进行等待状态。
(三):运行的线程发出i/o请求是,jvm会把线程置为阻塞状态。当I/O处理完毕时,线程重新转入可运行状态
5、死亡:方法执行结束,或者因异常退出了run,则该线程结束生命周期,死亡的线程不可在此复生
总结:新建>可以运行>运行>阻塞>死亡
ps命令查看静态的进程统计信息
常用的参数
a:显示当前终端下所有进程信息(与x选项结合是将显示系统中所有的进程信息)
u:是用以用户为主的格式输出进程信息
x:显示当前用户在所有终端下的进程信息
固定用法1:ps -aux 将以简单的形式显示出进程信息
USER: 启动该进程的用户账号信息
PID: 该进程在系统中的数字ID号,在当前系统中是唯一的
%CPU:CPU占用的百分比
%MEM:内存占用的百分比
VSZ:占用虚拟内存(SWAP)的大小
RSS:占用常驻内存(物理内存)的大小
TTY: 表明该进程在哪个终端上运行。“?”表示未知或者不需要终端
SATA: 显示了进程当前的状态,如S(休眠),R(运行),Z(僵死),<(高优先级),N(低优先级),s(父进程),+(前台进程),l(多线性进程),D(不可休眠进程)对处于僵死状态的进程应该予以手动终止
START: 启动该进程的时间
TIME: 该进程占用CPU时间
COMMAND: 启动该进程的命令的名称
PPID:表示对应进程的父进程的PID号
PRI:用户态优先级
NI: nice值,内核态优先级,取值范围(-20~19),值越小,优先级越高
ADDR:若是 - ,代表正在运行
SZ:在swap交换分区的容量
WCHAN:当前进程在内核中的名称
STIME:启动时间
top命令(动态查看进程信息)
top 命令全屏操作界面快捷键
默认:3s刷新一次,按s修改刷新时间按空格:立即刷新
p:按cpu排序
M:按内存排序
T:按时间排序
P:进程IP,查看某个进程状态
N:键根据启动时间进程排序
u/U:指定显示的用户
h:可以获得lop程序的在线帮助信息
q:键可以正常退出top程序
10:33:00 当前系统运行时间
up 系统运行时间为41分钟
user 当前登陆用户数 2
load average 系统负载,分别为1,5,15分钟内的负载均衡
Takes 222 total 当前进程总数
1 running 正在运行的进程数
0 sleeping 睡眠的进程数
0 stop 停止的进程数
0 zombie 僵尸进程数
%Cpu(s): us, 用户空间占用CPU百分比
sy 内核空间占用CPU百分比
ni, 用户进程空间内改变过优先级的进程占用CPU百分比
id 空闲CPU
wa 等待输入输出的CPU时间百分比
hi 硬中断 si 软中断 st 实时
KiB Mem 物理内存总量
free 空闲内存总量
used 使用中的内存总量
buff/cache 缓冲内存量
KiB Swap: total交换区总量
free 空闲交换区总量
used使用的交换区总量.
avail Mem可用交换取总量
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
3.3 根据特定条件查看进程信息–pgrep
常用参数
-l | 显示进程名 |
-u | 指定特定用户 |
-t | 指定终端 |
pstree命令以树形结构列出进程信息
常用选项
-a | 各进程树之间的连接以ASCII字符来连接 |
-u | 各进程树之间的连接以Unicode字符来连接,在某些终端界面下可能会有错误 |
-p | 同时列出每个进程的PID |
pstree -aup查看