线程和进程的关系
1、一个进程可以有多个线程,但至少有一个线程;而一个线程只能在一个进程的地址空间内活动。
2、资源分配给进程,同一个进程的所有线程共享该进程所有资源。
3、CPU分配给线程,即真正在处理器运行的是线程。
4、线程在执行过程中需要协作同步,不同进程的线程间要利用消息通信的办法实现同步。
进程与线程的区别总结
根本区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位
资源开销:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。
包含关系:如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。
内存分配:同一进程的线程共享本进程的地址空间和资源,而进程之间的地址空间和资源是相互独立的
影响关系:一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。
执行过程:每个独立的进程有程序运行的入口、顺序执行序列和程序出口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制,两者均可并发执行
ps aux:
a: 显示终端上的所有进程,包括其他用户的进程
u: 表示列出进程的用户
x: 显示所有终端的进程
有哪些命令可以查看平均负载:top w uptime
各列的解释: USER:进程的用户。
PID:进程的ID。
%CPU:进程占用的CPU百分比。
MEM:占用内存的百分比。
VSZ:该进程使用的虚拟内存量(KB) 。
RSS:该进程占用的物理内存量(KB) 。
TTY:启动进程的终端名。不是从终端启动的进程则显示为?
STAT:该进程的状态(D: 不可中断的休眠状态: R: 正在运行状态: S:处于休眠状态,可被唤醒。T: 停止状态,可能是在后台暂停或进程处于跟踪调试状态、Z:僵尸进程,进程已经中止,但是部分程序还在内存当中)
START:该进程被触发启动时间。
TIME:该进程实际使用CPU运行的时间。
COMMAND:进程的启动命令。
ps -elf:
-e:显示系统内的所有进程信息。
-l:使用长格式显示进程信息。
-f:使用完整的格式显示进程信息。
-a:显示所有进程pid。
-T:查看线程信息。
ps -aT 显示所有线程:
进程信息区各列解释:
PID 进程id
USER 进程所有者的用户名
PR 优先级
NI 谦让度值。负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存总量,单位.kb
RES 进程使用的物理内存大小,单位kb
SHR 共享内存大小,单位kb
S 进程状态
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的cpu时间总计,单位1/100秒
COMMAND 命令名/命令行
top查看进程信息
top:
top -H 查看线程
第一行是任务队列信息:
23:24:06系统时间
up 4 min系统已运行时长l user当前登录用户数
load avergae 0.01 0.07 0.05系统负载分别为1、5、15分钟的平均值
第二行为进程信息
Tasks总进程数
running正在运行的进程数sleeping休眠的进程数
stopped种植的进程数zombie僵尸进程数
第三行为cpu的信息
us用户占用
sy内核占用
ni优先级调度占用id空闲cpu
waI/o等待占用hi硬件终止占用si软件终端占用st虚拟化占用
第四行为内存信息
total总内存空间
free空闲内存
used己用内存
buff / cache物理内存和交换内存的缓冲区总和
第五行为交换空间的信息
total 总交换空间
free 空闲交换空间
used 己用交换空间
avail Mem 可用物理空间
pgrep命令——查询进程的PID
根据特定条件查询进程PID信息
-l 显示进程名 -U 指定特定用户 -t 指定终端
查看进程树pstree
以树形结构列出进程信息
-a:显示完整信息 -u:列出对应用户名 -p:列出对应PID号
终止进程的运行:
Ctrl+C组合键
中断正在执行的命令
kill、killall命令
kill用于终止指定PID号的进程
killall用于终止指定名称相关的所有进程
-9选项用于强制终止
kill和kill -9
1、我们经常会用到kill命令去杀死一个进程,但是有时会出现kill不成功的现象,这是就要用到kill -9。
2、之所以这两个命令会有区别是因为所发送的**信号(Signal)**是不同的:
默认情况下kill命令的参数为-15
kill -15代表的信号为SIGTERM,这是告诉进程你需要被关闭,请自行停止运行并退出;
而kill -9代表的信号是SIGKILL,表示进程被终止,需要立即退出;
3、因此kill -9表示强制杀死该进程,这个信号不能被捕获也不能被忽略。
命令:
crontab -l 查询
crontab -r 清空
crontab -e [-u 指定用户]
/var/spool/cron/用户
/etc/crontab 分 时 日 周 用户 绝对路径的命令或脚本
总结:
IO状态是用什么命令去查看的话,可以讲有 iostat , vmstat, iotop, atop