进程
概述
进程管理:相当于任务管理器
程序是一串没有运行的代码,进程就是运行起来的代码。
线程:相当于复制了进程的部分代码,程序运行起来之后,真正执行的是线程。
Linux系统当中启动程序的过程:父进程先启动——子进程
子进程的资源由父进程来进行分配。
结束的过程:子进程先结束——父进程收回子进程的资源——父进程才会终止
特殊情况:父进程结束了,子进程还在。子进程变为僵尸进程。
静态查看进程
查看进程信息:分为静态查看、动态查看
静态查看进程信息——ps -aux(第一种)
a:显示终端上的所有进程,包括其他用户的进程
u:列出进程的执行用户
x:显示当前终端进程的详细信息
user :表示进程的用户
PID :表示进程号,每个进程在系统中运行时的唯一标志。每个pid号都是不重复的
%CPU :表示进程占用CPU的百分比
%MEM :表示进程占用物理内存的百分比
VSZ :表示进程使用的虚拟内存大小(KB)
RSS:表示占用物理内存的量(KB)
TTY:表示终端。 ?表示该进程不是由终端启动的
STAT:status状态 就是进程的状态:1、S :处于休眠状态,但是随时可唤醒
2、D:不可唤醒的休眠状态
3、R:运行
4、T:停止状态,后台进程暂停或者进程处于跟踪调试状态
5、Z:僵尸进程,即父进程结束了,但是子进程还在
STAT状态后面的字符含义:
s:表示该进程包含子进程
<:表示该进程优先级高
N:表示该进程优先级低
l:表示该进程有多个线程
+:表示进程位于前台运行
L:表示该进程有一部分被锁进内存
START:表示进程启动的时间
TIME:表示进程实际占用CPU的时间
COMMAND:表示进程启动的命令
ps -aux 主要用来查看进程占用系统资源的情况
静态查看进程信息——ps -elf (第二种)
e:表示显示系统内的所有进程
l:表示进程的详细信息
f:表示完成的格式展示进程的信息
F:表示内核分配给进程的系统标识
S:表示进程的状态
UID:表示进程的用户
PID:表示进程的进程号
PPID:表示进程的父进程,即谁启动的这个进程
C:表示进程在生命周期当中的CPU利用
PRI:表示优先级,数字越大,优先级越低
NI:表示谦让值
ADDR:表示进程在内存当中的地址
SZ:假如该进程被换出,所需要的交换空间的大小
WCHAN:如果进程处于休眠状态,显示睡眠中的系统函数名
STIME:表示进程启动的时间
TTY:表示终端。 ?表示该进程不是由终端启动的
TMIE:表示进程实际占用CPU运行的时间
CMD:表示进程启动的详细命令
结束进程的命令:kill -9 强制结束进程
面试题:kill进程是谁来结束该进程?
kill只是传递了一个信号,是系统将进程结束的。
特殊的进程,僵尸进程
面试题:如果有僵尸进程,你应该怎么办?
回答:少量的僵尸进程影响不大,因为僵尸进程所占的系统资源很少,可以忽略不计。如果太多,只能重启,kill无法结束僵尸进程
动态查看进程
动态获取进程信息:top
top - 17:15:42 up 8:02, 4 users,load average:0.00,0.01,0.05
17:15:42 :表示系统时间
up 8:02:表示系统运行的时长
4 users:表示当前用户登录的用户
load average:0.00,0.01,0.05:表示系统的负载 0.00表示的是1分钟内,0.01表示的是5分钟内,0.05表示的是15分钟内 系统处理的任务数的平均值。
Tasks: 228 total,1running,226 sleeping,1 stopped,0 zombie
Tasks:表示进程信息
228 total:表示系统总共有228个进程
running:表示运行的进程数
sleeping:表示休眠的进程数
stopped:表示终止的进程数
zombie:表示的僵尸进程数
us:表示系统用户占用CPU的百分比
sy:表示内核占用CPU的百分比
ni:表示优先级调度占用的cpu百分比
id:表示系统空闲的CPU比率
wa:表示磁盘的读写性能
hi:1分钟之内CPU的使用率
si:5分钟内cpu的使用率
st:15分钟内CPU的使用率
这两行就是free-h
进程信息区各列的作用:
pid:进程号
user:进程的用户
pr:优先级
ni:谦让值
VIRT:进程使用的虚拟内存(kb)
RES:进程使用的物理内存(kb)
SHR:共享内存的大小
S:进程的状态
%CPU:进程占用CPU的百分比
%MEM:进程占用物理内存的百分比
TIME+:进程占用CPU的时间总计 1/100秒
commd:进程启动的命令
数字1键:显示CPU的个数
c键:根据CPU占用的量的百分比大小,从大到小排序
q键:退出top
top -b -n 1:运行一次之后立即退出top 相当于ps
运维的指标
五大负载:
cpu负载:监控CPU的使用率 工具:top,htop,作用:了解CPU是否过载
内存负载:监控内存 工具:free top echo 1 > /pros/sys/vm/drop_caches 清除缓存的命令
硬盘负载:工具:I/O 磁盘的读写性能 iostat
网络负载:带宽的利用率,流量的使用情况
进程负载:监控进程使用资源的情况 工具:top ps
pgrep :查看进程id 一般配合kill一起使用
pgrep -a:显示进程名和pid号
pgrep -c:仅显示匹配进程的数量,不显示其他内容
pgrep -f:匹配进程名以及参数
jobs:列出位于后台进程的状态信息
jobs -l:列出所有后台进程的pid号,进程名
jobs -p :列出所有后台进程 进程组 pid 只有pid
jobs -n:仅显示最近的后台进程
jobs -r:仅显示正在运行的后台进程
jobs -s仅显示已经停止的后台进程
在命令行的结尾加一个 & 符号,就是把进程调度到后台运行
fg可以把后台的任务调度到前台
定时任务、计划任务
* * * * *
*分:0-59
*时:0-23
*日:1-31
*月:1-12
*周:0-7,0和7都表示周日
* * * * * 一般是可执行的脚本
crontab -e 创建定时任务
* 表示该范围内的任意时间
,表示间隔 多个不连续的时间点
- 表示连续的时间范围
/ 表示间隔的频率
crontab -e -u 用户名 指定用户创建定时任务
crontab -l -u 用户名 展示指定用户的定时任务
crontab -r 全部清空