Linux中的进程管理

知识要点
认识进程
进程和程序的关系
进程相关操作
查看系统性能

进程是什么
1.程序
保存在硬盘、光盘等介质中的可执行代码和数据
是静态保存的代码
2.进程
在CPU及内存中运行的动态执行的程序代码
进程是程序运行的实例
同一个程序可能对应多个进程
进程是分配和保护资源的基本单位
多进程的优点就是稳定
每个进程都有它的PID
进程内存空间三部分
PCB —进程控制块(进程详细信息:ID,名称,状态等)
代码段
数据段Linux中的进程管理进程得到了除CPU资源之外的所有资源,他就是就绪状态
子进程和父进程
INIT进程是系统中第一个进程,PID永远为1Linux中的进程管理PID是进程ID PPID是父进程ID
进程相关操作
1.ps命令
用途:查看静态的进程统计信息
格式:ps aux
ps -elf

常用命令选项
ax:显示所有进程信息
u:使用以用户为主的格式输出进程信息
-e:显示系统内的所有进程信息
-l:使用长格式显示进程信息
-f:使用完整的格式显示进程信息

补充:pstree命令可以查看到进程的树状结构Linux中的进程管理
2.ps aux:
USER 进程的用户;
PID 进程的ID;
%CPU 进程占用的CPU百分比;
%MEM 占用内存的百分比;
VSZ 该进程使用的虚拟内存量(KB);
RSS 该进程占用的物理内存量(KB);
TTY 该进程在哪个终端上运行(登陆者的终端位置),若与终端无关,则显示(?)。若为pts/0等,则表示由网络连接主机进程;
STAT 进程状态
START 该进程启动时间;
TIME 该进程实际使用CPU运行的时间;
COMMAND 命令的名称和参数;

3.ps -elf:所有进程 长格式显示 完整的格式显示进程信息
F 进程的flag, 4 代表使用者为 super user
S 进程状态
UID 进程的用户;
PID 进程的ID;
PPID 父进程的ID
C CPU利用率,以整数表示
PRI Priority的缩写
NI Nice的缩
PRI/NI 代表此进程被 CPU 所执行的优先顺序,数值越小代表该进程越快被 CPU 执行。
ADDR 指出该进程内存的地址,如果是 running的程序,一般就是 “-”
SZ 占用内存大小;
WCHAN 是否正在运作当中,若为 - 表示正在运作
STIME 进程的启动时间
TTY 该进程在哪个终端上运行(登陆者的终端位置)
TIME 该进程实际使用CPU运行的时间;
CMD 命令的名称和参数;

进程的状态
D 无法中断的休眠状态(通常 IO 的进程);
R 正在运行,在可中断队列中;
S 处于休眠状态,静止状态;
T 停止或被追踪,暂停执行;
W 进入内存交换(从内核2.6开始无效);
X 死掉的进程;
Z 僵尸进程不存在但暂时无法消除;
W: 没有足够的记忆体分页可分配
WCHAN 正在等待的进程资源;
<: 高优先级进程
N: 低优先级进程
L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O),即,有些页被锁进内存
s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);

  • 位于后台的进程组

进程相关操作
top命令
用途:查看动态的进程排名信息(默认三秒会刷新)
P:按%CPU排序
M:按%MEM排序
空格:马上刷新
top -d 1 指定间隔一秒刷新Linux中的进程管理
top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48
01:06:48 当前时间
up 1:22 系统运行时间,格式为时:分
1 user 当前登录用户数
load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。 Linux中的进程管理
在top界面按下1可以看到CPU的信息

w和uptime 命令也能看到这些信息10:32:35 up 28 min, 2 users, load average: 0.00, 0.01, 0.05

Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3% us(user用户态), 1.0% sy(system内核态), 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si, 0.0%st
total 进程总数
running 正在运行的进程数
sleeping 睡眠的进程数
stopped 停止的进程数
zombie 僵尸进程数
Cpu(s):
0.3%us 用户空间占用CPU百分比
1.0% sy 内核空间占用CPU百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
98.7% id 空闲CPU百分比(idle)
0.0% wa 等待输入输出的CPU时间百分比
0.0%hi:硬件CPU中断占用百分比
0.0%si:软中断占用百分比
0.0%st:虚拟机占用百分比

Mem: 191272k total, 173656k used, 17616k free, 22052k buffers
Swap: 192772k total, 0k used, 192772k free, 123988k cached
Mem:
191272k total 物理内存总量
173656k used 使用的物理内存总量
17616k free 空闲内存总量
22052k buffers 用作内核缓存的内存量
Swap:
192772k total 交换区总量
0k used 使用的交换区总量
192772k free 空闲交换区总量
123988k cached 缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。

PID 进程id
USER 进程所有者的用户名
PR(I) 优先级
NI 负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存总量,单位kb
RES 进程使用的、未被换出的物理内存大小,单位kb
SHR 共享内存大小,单位kb
S 进程状态
%CPU 使用的CPU百分比
%MEM 使用的物理内存百分比
TIME+ 使用的CPU时间总计,单位1/100秒
COMMAND 命令名
pstree命令
用途:以树型结构显示各进程间的关系
常用命令选项:
-p:列出进程的PID号Linux中的进程管理
pgrep命令
用途:根据特定条件查询进程PID信息
常用命令选项:
-l:列出进程的名称
-u:根据进程所属的用户名进行查找
-t:根据进程所在的终端进行查找
Linux中的进程管理
进程优先级设置

1.Linux内核的基本任务是调度进程

2.每个进程受两个参数影响其调度

3.优先级(priority):内核控制动态变化
值越小越早被cpu执行
用户无法直接调整数值大小

4.niceness:表示进程可被执行的优先级的修正数值 ,可手工修改
与priority有关
优先级有正负之分(-20 -19)
加入nice值后 PRI(新) = PRI(老) + nice
root可以设置nice值范围(-20 - 19)
普通用户可以设置nice值范围(0- 19)

5.用nice命令新的nice(新开启的进程)
以新的nice来启动命令
nice -10 vi & 设置nice值为10
nice --10 vi & 设置nice值为-10

6.用renice命令设置新nice(已经存在的进程)
renice 10 15132 设置nice值为10
renice -10 15132 设置nice值为-10

7.用top命令修改进程的优先级
先输入r,然后输入pid,最后输入优先级

作业控制
1.手工启动
前台启动:用户输入命令,直接执行程序
后台启动:在命令行尾加入“&”符号Linux中的进程管理2.jobs命令查看作业
+:最新放到后台的进程

  • :仅次于最新放到后台的进程Linux中的进程管理3.fg命令
    将处于后台的进程恢复到前台运行,需指定作业号
    不指定作业号,将恢复有“+”标记的进程Linux中的进程管理4.Ctrl + Z组合键
    将当前进程挂起,即调入后台并停止执行

5.bg命令 +作业编号
将后台停止的进程,在后台重新运行

Kill命令
1.软中断信号,简称信号。是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。信号机制除了基本通知功能外,还可以传递附加信息。
kill -l列出Linux系统支持的信号种类

2.发送信号的原因
硬件异常
软件状态
终端中断

3.kill命令用来发送信号
kill -信号代码 PID

4.进程收到信号后采取的行动
终止
忽略信号
挂起

5.用户常用的信号Linux中的进程管理
很多进程会屏蔽信号,但信号值9不会被屏蔽

6.kill命令取消后台作业
kill -9 PID
kill -9 %作业号(后台前台作业Linux中的进程管理Killall命令
1.kill、killall命令
kill用于终止指定PID号的进程
killall用于终止指定名称的所有进程Linux中的进程管理pkill命令
1.pkill命令
用途:根据特定条件终止相应的进程
常用命令选项:
-u:根据进程所属的用户名终止相应进程
-t:根据进程所在的终端终止相应进程Linux中的进程管理系统性能监控 —— 查看内存使用情况
1.free命令
显示系统的物理内存和交换空间的使用情况(以KB的单位 )
-m:以MB的形式显示内存信息(但会不准确)
-h:更容易懂的形式显示内存信息Linux中的进程管理Linux中的进程管理补充:cache:缓存从硬盘读取出来的数据
buffer:缓存需要写入硬盘的数据

2.top命令
Linux中的进程管理3.内存监控
/proc/meminfo文件
Linux中的进程管理
4./proc/sys/vm/drop_caches (since Linux 2.6.16)
Writing to this file causes the kernel to drop clean caches,
dentries and inodes from memory, causing that memory to become free.
To free pagecache, use echo 1 > /proc/sys/vm/drop_caches;

           to free dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches;
          to   free   pagecache,   dentries  and  inodes,  use  echo  3  >
          /proc/sys/vm/drop_caches.      //释放缓存buffers 和cached
          Because this is a non-destructive operation  and  dirty  objects
          are not freeable, the user should run sync(8) first.

/proc是一个特殊文件系统,我们可以通过对它的读写操作,来作为与kernel实体间进行通信的一种手段.也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整.那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存

系统性能监控 —— 查看CPU使用情况
1.CPU性能
uptime:运行时间,登录用户数,CPU平均负载(超过核数即负载)
Linux中的进程管理
2.top:Linux中的进程管理
系统性能监控 —— 磁盘I/O性能监控
1.iostat命令
用于查看系统磁盘I/O统计信息
由软件包sysstat-7.0.0-3.el5.i386.rpm提供
sysstat还提供了 mpstat 命令,用于显示进程负载信息
mpstat -P 1 查看第二个核的负载信息
iostat -x 1每一秒更新一次
Linux中的进程管理
Linux中的进程管理
网络资源
1.使用ifconfig关注流量
ifconfig eth0 查看eth0的流量Linux中的进程管理RX接收 TX发送
2.使用ethtool查看网口传输速率和是全双工还是半双工通信方式Linux中的进程管理
/proc/cpuinfo文件

/proc/cpuinfo文件查看CPU信息的
关注物理ID(physical id)即有几个物理CPULinux中的进程管理
//sort表示排序 //uniq表示去除 //wc -l 表示统计行号
查看一个CPU是几核的?关注cpu coresLinux中的进程管理
一个CPU是双核的
CPU型号model nameLinux中的进程管理
vmstat命令
用途:从整体的角度看计算机的资源情况
vmstat 1 刷新间隔一秒查看
Vmstat 1 5 刷新间隔一秒查看共刷新5秒Linux中的进程管理
r :运行中的或者就绪的队列 b:等待或者休眠的队列
Si:交换进来的 so:交换出去的 //交换空间
Bi:进内存 bo:出内存 //IO设备
本章总结
理解进程的概念
掌握基本的进程查看命令
掌握进程优先级的配置
掌握管理作业的相关命令Linux中的进程管理ps aux 也可以查看内存的使用情况

Iotop 动态查看IO设备的使用情况