一、进程相关概念
(1)进程概念
运行中的程序的一个副本,是被载入内存的一个指令集合进程ID(Process ID,PID)号码被用来标记各个进程UID、GID、和SELinux语境决定对文件系统的存取和访问权限,通常从执行进程的用户来继承存在生命周期。
(2)进程的功用
进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等
(3)进程优先级
系统优先级:数字越小,优先级越高
0-139(CentOS4,5),各有140个运行队列和过期队列
0-98,99(CentOS6)
实时优先级: 99-0:值最大优先级最高
nice值:-20到19,对应系统优先级100-139或99 值越大优先级越低进程默认启动时的nice值为0,优先级为120
只有根用户才能降低nice值(提高优先性)
(4)进程内存
Page Frame: 页框,用存储页面数据,存储Page 4k
LRU:Least Recently Used 近期最少使用算法,释放内存
物理地址空间和线性地址空间
MMU:Memory Management Unit负责转换线性和物理地址
TLB:Translation Lookaside Buffer 翻译后备缓冲器,用于保存虚拟地址和物理地址映射关系的缓存
(5)进程类型
守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程
前台进程:跟终端相关,通过终端启动的进程
注意:两者可相互转化
(6)进程运行状态
运行态:running
就绪态:ready
睡眠态:
可中断:interruptable
不可中断:uninterruptable
停止态:stopped,暂停于内存,但不会被调度,除非手动启动
僵死态:zombie,结束进程,父进程结束前,子进程不关闭
(7)进程创建
在CentOS6中,第一个进程为init ,在CentOS7中第一个进程为systemed。进程都是由父进程创建的。模式为CoW、fork()、clone()
(8)进程分类
CPU-Bound:CPU密集型,非交互
IO-Bound:IO密集型,交互
(9)其他
一个进程可能包含一个多多个线程,内存共享
task struct:Linux内核存储进程信息的数据结构格式
task list:多个任务的的task struct组成的链表
二、管理进程命令
1、pstree命令
pstree - display a tree of processes
-p Show PIDs.
Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中。
2、ps命令
ps:report a snapshot of the current processes
ps命令支持三种格式
(a)UNIX
(b)BSD
(c)GUN
这里主要介绍BSD模式的命令选项
a 选项包括所有终端中的进程
x 选项包括不链接终端的进程
u 选项显示进程所有者的信息
f 选项显示进程的父进程
k|–sort 属性 对属性排序
o 属性… 选项显示定制的信息pid、comm、%cpu、%mem、state、tty、euser(真正生效者)、ruser(真正发起者)
不加选项默认为当前终端的进程。
示例:
(1)显示所有进程及进程所有者信息
[root@centos7/proc]#ps aux
ps aux命令表头的介绍
USER 进程所有者
PID 进程ID号
%MEM 使用的内存
VSZ Virtual memory size,虚拟内存集,线性内存,(承诺给的内存)
RSS ReSident Size,常驻内存集,(真正使用的内存)
TTY 终端
STAT 进程所处状态
R:running
S:interruptable sleeping
D:uninterruptable sleeping
T:stopped
Z: zombie
+: 前台进程
l: 多线程进程
L:内存分页并带锁
N:低优先级进程
<: 高优先级进程
s: session leader,会话(子进程)发起者
TIME 运行时间
COMMAND 进程执行的命令
示例:
[root@centos7/proc]#ps axo pid,%mem,tty
-e: 显示所有进程
-f: 显示完整格式程序信息
-F: 显示更完整格式的进程信息
-H: 以进程层级格式显示进程相关信息
-C:显示多个进程的情况
3、nice
nice [OPTION] [COMMAND [ARG]...]
示例:
[root@centos7/proc]#nice -n 2 vim /etc/fstab
4、renice命令
renice - alter priority of running processes
示例:
[root@centos7~]#renice -n 5 25362
注意:只要root用户可以提高优先级,普通用户只能调低优先级。
5、pgrep
pgrep, pkill - look up or signal processes based on name and other attributes
-u uid: effective user,生效者
-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程
-l: 显示进程名
-a: 显示完整格式的进程名
-P pid: 显示指定进程的子进程
示例:
[root@centos7/proc]#pgrep -u joah
6、pidof命令
pidof -- find the process ID of a running program.
示例:
[root@centos7/proc]#pidof vim
25501 25362 17442 16809 16783 7844 7508 4048
7、uptime命令
系统平均负载:指在特定时间间隔内运行队列中的平均进程数。
通常每个CPU内核的当前活动进程数不大于3,那么系统的性能良好。如果每个CPU内核的任务数大于5,那么此主机的性能有严重问题。
8、top命令
P:以占据的CPU百分比,%CPU
M:占据内存百分比,%MEM
T:累积占据CPU时长,TIME+
首部信息显示:
uptime信息:l命令
tasks及cpu信息:t命令
cpu分别显示:1 (数字)
memory信息:m命令退出命令:q
修改刷新时间间隔:s
终止指定进程:k
保存文件:W
选项:
-d #: 指定刷新时间间隔,默认为3秒
-b: 全部显示所有进程
-n #: 刷新多少次后退出
9、vmstat命令
procs:
r:可运行(正运行或等待运行)进程的个数,和核心数有关
b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度)
memory:
swpd: 交换内存的使用总量
free:空闲物理内存总量
buffer:用于buffer的内存总量
cache:用于cache的内存总量
swap:
si:从磁盘交换进内存的数据速率(kb/s)
io:
bi:从块设备读入数据到系统的速率(kb/s)
bo: 保存数据至块设备的速率
system:
in: interrupts 中断速率,包括时钟
cs: context switch 进程切换速率
cpu:
us:Time spent running non-kernel code
sy: Time spent running kernel code
id: Time spent idle. Linux 2.5.41前,包括IO-wait time.
wa: Time spent waiting for IO. 2.5.41前,包括in idle.
st: Time stolen from a virtual machine. 2.6.11前, unknown.
[root@centos7/proc]#vmstat -s
#显示内存的统计数据。
9、pmap命令
pmap - report memory map of a process
-x: 显示详细格式的信息
[root@centos7/proc]#pmap -x 1