本文标识 : L00012
本文编辑 : 灭霸 编程工具 : redhat6 阅读时长 : 7分钟
进程和线程
Linux 属于多用户、多任务的操作系统 , 其特性在于 :
1.多用户是:指多个用户在同一时间使用计算机系统;
2.多任务是:指Linux 可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务。
Linux 在操作系统设计上,从进程( Process )演化出线程( Thread ),最主要的目的就是更好地支持多处理器,并且减小(进程 / 线程)上下文切换的开销。
根据操作系统的定义
进程 : 是系统资源管理的最小单位
线程 : 是程序执行的最小单位
线程和进程十分相似,不同的只是线程比进程小
1.采用了多个线程可共享资源的设计思想。它们的操作大部分都是在同一地址空间进行的。
2.从一个线程切换到另一线程所花费的代价比进程低。
3.进程本身的信息在内存中占用的空间比线程大。
4.线程更能允分地利用内存。
5.线程可以看作是在进程内部执行的指定序列。
6.线程和进程的最大区别在于线程完全共享相同的地址空间,运行在同一地址上。7. 多个程序在同一时间请求, CPU 根据”先进先出”原则执行线程。而其他的线程则在线程队列中等待。
在自身虚拟地址空间运行的一个单独的程序。
进程说明 :
1. 程序在未被执行的时候,被当做静态指令的集合。
2. 程序被执行后称之为”作业”或”任务”
3.每个任务至少拥有一个进程作为此任务在系统中的代表。
4.操作系统利用分时管理的方法使所有的任务”进程”共同分享系统资源。主动权属于操作系统。
5.当某个线程死掉,则可以通过对其管理的进程进行操作 , 从而可以将此进程所代表的任务结束掉。
一个正在执行的进程成为一个任务一个任务可以包含多个进程因此对任务的控制即是对正在运行的进程进行控制。
命令 :pstree
功能 : 进程以树型结构显示
语法格式 : pstree [options]
选项 | 用法 |
---|---|
-u | 在进程名旁显示进程所属的用户名。 |
-p | 在进程名旁显示 PID 。 |
-a | 显示命令的详细信息。 |
命令 :ps
功能 : 显示当前系统内进程信息及状态等。
语法格式 :ps [options]
选项 | 用法 |
---|---|
a | 显示当前终端下所有用户的进程 |
x | 选择所有不在当前终端下的进程。 |
u | 查看进程的 UID 或账户名 |
w | 列加宽 , 可显示更多的信息 , 可重复使用 |
e | 选择所有的进程。 |
f | 列示完整的列表 |
l | 显示进程的所属者,进程号和父进程号。 |
命令 :top
功能 : 实时刷新当前系统情况特点 :top 有许多内置命令。
内置命令 1:
h 帮助。
q 退出。
space 立刻刷新。
s设置刷新时间,单位为秒。
k杀掉一个进程。
R定义一个进程的优先级。
top 结果输出:
第 1 行 :
当前系统时间
uptime 时间
当前登入系统的账户总数
当前系统 1 、 5 、 15 分钟的系统负载值 ( 即任务队列的平均长度 ), 数值一般超过 5 即负载过大。
第 2 行 Tasks( 任务 / 进程 ):
当前进程总数
运行状态的进程总数
休眠状态的进程总数
僵尸状态的进程总数
第 3 行 CPU 状态 :
us: 用户空间占用 CPU%
sy: kernel 空间占用 CPU%
ni: 改变过优先级的进程占 CPU%
id: 空闲 CPU%
wa: IO 等待占用 CPU%
hi: 硬中断占用 CPU%
si: 软中断占用 CPU%
st: Xen Hypervisor 服务分配给虚拟机上的任务占用 CPU%
第 4 行 : 内存 ( 单位 kb)
物理内存总数
使用的内存总数
空闲内存总数
缓存总数
第 5 行 :swap( 单位 kb)
swap 总数
使用 swap 的内存总数
swap 空闲内存总数
缓冲交换区总数
第 7 行 : 各进程的状态监控
PID: 进程 ID
USER: 进程使用者
PR: 进程优先级
NI: 优先级值
VIRT: 使用的虚拟内存总量 (kb)VIRT=SWAP+RES
RES: 进程使用的,没有被置换出来的物理内存 (kb)
SHR: 共享内存大小 (kb)
S: 状态 ( 参看 ps)
%CPU: 进程自上次更新后到本次更新所占用的 CPU%
%MEM: 进程自上次更新后到本次更新所占用的 MEM%
TIME+: 进程使用的 CPU 时间总计 , 单位 1/100 秒
COMMAND: 进程生成的命令及参数
内置命令 2 :
1: 按”一”键可以监控每个 CPU 及每个 CPU 各个核心情况
b: 开启 / 关闭高亮显示
x: 开启 / 关闭排序列的高亮显示 ( 先执行 b, 在执行此 )
x 子操作 :
(1)shift+>: 高亮向右排序列
(2)shift+<: 高亮向左排序列
M: 根据 MEM 使用率大小进程排序
P: 根据 CPU 使用率进行排序
T: 根据时间 / 累计时间进行排序
W: 将当前设置写入 ~/.toprc 配置文件
u: 查看指定账户的进程信息
H: 显示 / 关闭线程 信息
B: 在标头,正在运行的程序上以加粗字体显示
命令 :lsof
功能 : 显示进程所打开的文件
语法格式 :lsof [ 选项 ]
lsof 命令可以列出被进程所打开的文件的信息。被打开的文件可以是:
1.普通的文件
2.目录
3.网络文件系统的文件
4.字符设备文件
5.( 函数 ) 共享库
6.管道,命名管道
7.符号链接
8.底层的 socket 字流,网络 socket , unix 域名 socket
9.在里面,大部分的东西都是被当做文件的… .. 还有其他很多
lsof 输出各列信息的意义如下:
参数 | 含义 |
---|---|
COMMAND : | 进程的名称 PID :进程标识符 |
USER : | 进程所有者 |
FD : | 文件描述符,应用程序通过文件描述符识别该文件。如 cwd 、 txt 等 |
TYPE : | 文件类型,如DIR 、 REG 等 |
DEVICE : | 指定磁盘的名称 |
SIZE : | 文件的大小 |
NODE : | 索引节点(文件在磁盘上的标识) |
NAME : | 打开文件的确切名称 |
命令 :kill
功能 : 杀死进程
语法格式 :kill [ 选项 ] PID
下面是一些常用命令
命令 | 含义 |
---|---|
kill -9 PID | 强制杀死进程 |
kill -19 PID和kill -stop 进程名 | 暂停进程kill -stop 进程名 |
kill -18 PID和kill -cont 进程名 | 启动暂停进程 |
kill -l | 查看系统所有信号 |
killall -9 进程名 | 杀死所有跟进程有关进程 |
pkill -t 终端 | 按终端杀死进程 |
pkill -t 终端 -9 | 按终端杀死进程,同时终端也被杀死 |
pkill -9 进程名 | 按进程名杀死进程 |
挂起进程
命令 | 含义 |
---|---|
Ctrl + Z 和& | 把进程挂到后台 |
fg % job号 | 把后台挂起进程调到前台 |
bg % job号 | 把前台进程挂到后台 |
jobs | 查看后台挂起进程工作号 |
kill -9 %job号 | 杀死进程 |
进程优先级 Nice值的范围: -20到19 Nice越高,优先级越低 Renice 10 PID //调整进程优先级 tty //查看当前使用的终端