什么是进程?
在了解进程之前我们先了解程序:
程序:programe,通常为二进制程序,放置在存储介质中,以物理文件的形式存在
进程:程序被触发后,执行者的权限与属性、程序的程序代码与所需数据等都会被加载到内存当中,操作系统给与这个内存内的一个单元一个标识符(PID),即进程号。所以说,进程就是一个正在运行的程序。对于系统而言,用PID来表示一个进程,而我们对于进程的管理也通过PID来进行。
进程的类型:对于系统而言,每个进程都有生命周期,有的进程伴随开机,一直运行,有的进程运行过后,立刻结束,所以又分为:
守护进程:与终端无关,在系统引导中启动的进程
前台进程:批处理进程,用户通过终端启动的进程
注意:也可把在前台启动的进程送往后台,以守护模式运行;
父进程与子进程:当我们执行一个程序(程序1)以后,分配到一个PID,再用这个程序去调用另外一个程序(程序2),又产生另外一个PID,这个PID就是子进程,程序1就是父进程,可以通过PPID进行判断。用ps -l查看进程的相关信息:
进程的运行状态(stat):对于linux中的程序而言,有以下几种运行态
运行态:running
就绪态:ready
休眠态:1.可中断休眠:interruptable
2.不可中断:uninterruptable
停止态:暂停于内存中,但不会被调度,除非手动启动
僵死态:zombie
进程的优先级(prority):在系统中,程序运行都要占用cpu,虽然现在的cpu运算速率非常高,但是各程序之间也有优先级之分,级别高的,在同等条件下,优先执行,比如系统进程。所以linux系统划分了139个优先级:
0-139:1-99:实时优先级,由系统创建,不可调整
100-139:静态优先级,数值越小,优先级越高,我们又用nice值表示这39个优先级
nice值:-20-19,对应100-139
可以通过调整nice值,调整进程优先级
以下介绍一些linux进程管理与查看工具:pstree,ps,htop,glances,vmstat,dstat,kill,nice
1.pstree:进程树查看工具,查看各个进程之间的联系
pstree:查看进程树
pstree -Ap:同时查看每个进程的PID
pstree -Au:同时列出每个进程的所属帐号名称
2.ps:强大的进程查看工具,将当前的进程运行状态显示出来,
注意:ps显示的进程是静态的
选项:
a:显示所有与终端相关的进程
x:所有与终端无关的进程
u:以用户为中心组织状态信息显示
常用:ps aux
显示的信息的含义:
VSZ:该进程用到的虚拟内存量(KB)
RSS:该进程用到的固定内存量(KB)
STAT:
R:running,运行中
S:interruptable sleeping,可唤醒休眠态
D:uninterruptable sleeping,不可唤醒休眠态
T:Stopped:停止态
Z:zombie;僵死态
+:前台进程
l:多线程进程
N:低优先级进程
<:高优先级进程
s:session leader
TYY:登录者的终端机位置,若使用远程登录则为动态终端接口(pts/#)
START:该进程被触发启动的时间
TIME:使用掉的CPU时间,注意:是此进程实际花费CPU运行的时间,而不是系统时间
command:该进程的实际命令
-e:显示所有的进程
-f:显示完整格式的进程信息
常用组合:ps -ef,与ps aux显示的信息类似
-F:显示完整格式的进程信息
C:CPU使用率
PSR:运行于哪颗CPU之上
-H:以层级结构显示进程的相关信息
常用组合:ps -eFH
通过ps命令可以查看到很多的程序信息,当然还可以自定义信息的显示。
常用组合:-eo,-axo
ps -o field1, field2,...:自定义要显示的字段列表,以逗号分隔;
常用的field:pid, ni, pri, psr, pcpu, stat, comm, tty, ppid, rtprio
内容过多,也可以使用grep进行筛选。
3.htop命令:强大的动态进程查看,进程管理工具,可以动态查看进程的运行状态,查看几乎ps命令里面的所有内容,而且还可以进行管理,比如实时调整进程的优先级,实时追踪进程的系统调用,标记进程,实时追踪等等。不过这个程序一般系统没有自带,系统自带的一般是top命令,htop是top的升级版本,更加强大,我们可以进行用yum进行安装。
-d #:指定延迟时间间隔
-d username:只显示指定用户的进程
-s colume:以指定字段进行排序
子命令:
l:显示选定的进程打开的文件列表;
s:跟踪选定的进程的系统调用;
t:以层级关系显示各进程状态;
a:将选定的进程绑定至某指定的CPU核心,使用空格键进行加减操作
[space]:空格键,标记进程
4.vmstat:显示系统资源变化 ,可以检测CPU/内存/磁盘输入输出状态
常用选项:
-f:开机到目前为止系统复制(fork)的进程数
-s:将一些事件(开机至目前为止)导致的内存变化情况列表说明
-d:列出磁盘的读写总量统计表
-p [分区名]:显示磁盘资源相关,例:vmstat -p /dev/sda2
显示的信息的含义:
procs:
r:等待运行的进程的个数,cpu上等待运行的任务的队列长度
b:处于不可终端睡眠状态的进程个数,被阻塞的任务队列的长度
这两个越多,代表系统越忙碌
memory:
swpd:虚拟内存被使用的容量
free:空闲的内存总量
buffer:用于缓冲存储器的内存
cache:用于高速缓存的内存
swap:
si:数据进入swap中的数据速率(kb/s)
so: 数据离开swap的速率(kb/s)
如果si/so的数值太大,表示内存内的数据经常要在磁盘与内存之间传输,系统性能会很差
io:
bi:从块设备读入数据到系统的速度(kb/s)
bo: 保存数据至块设备的速率(kb/s)
数值越大,代表;系统I/O越忙碌
system:
in: interrupts,中断速率,表示每秒钟被中断的次数
cs:context switch,每秒钟进行的事件切换次数
数值越大,代表系统与接口设备之间的通讯非常频繁,这些接口设备包括磁盘、网卡、时钟等
cpu:
us: user space,非内核层的CPU使用状态
sy:system,内核层所使用的CPU状态
id:idle,闲置的状态
wa:wait ,等待I/O所耗费的CPU状态
st: stolen,被虚拟机所盗用的CPU使用状态
vmstat -s:将一些事件(开机至目前为止)导致的内存变化情况列表说明
vmstat -d:列出磁盘的读写总量统计表
5.glances:强大的系统运行状态监视工具,不仅可以监控当前主机的运行状态,还可以远程监控其它主机的运行状态
注意:这个程序大部分系统没有自带也要自己安装
内建命令:
a 自动排序
c 根据CPU使用率排序
m 根据内存占用比排序
p 根据进程名字排序
d 显示/隐藏硬盘I/O状态
f 显示/隐藏文件系统状态
n 显示/隐藏network状态
1 全局CPU或者每个CPU的状态
q Quit (Esc and Ctrl-C also work)
glances -f /tmp -o HTML,把监听到的信息导出成html的文件保存下来
6.dstat命令:“一招鲜,吃遍天”,显示实时的系统资源占用状况
常用选项:
-c:--cpu,显示cpu相关信息,还可以分别查看每个cpu的信息
-c #,#,.....,total
-d:--disk,显示磁盘的相关信息
-D sda,sdb,。。。,total
-g:显示page相关的速率数据
-m:memory的相关统计数据
-n:interface(接口,连接)的相关统计数据
-p:显示process(进程)的相关数据
-r:显示io请求的相关统计数据
-s:显示swapped的相关统计数据
--top-cpu;显示最占用CPU的进程
--top-io:最占用io的进程
--top-mem:最占用内存的进程
7.kill:- terminate a process,用于向进程发送信号,以实现对进程的管理;
显示当前进程可用信号:kill -l
向进程发信号:kill [-s singal|-SINHAL] pid...
常用信号:
1.SIGHUP,无需关闭进程而让其重读配置文件
2.SIGINT,终止正在运行的进程,相当于Ctrl+c
9.SIGKILL,杀死运行中的进程
15.SIGTERM,终止运行中的进程
19.SIGSTOP,相当于Ctrl+z,来暂停一个进程
每个信号的标识方法有三种:
1.信号的数字标识
2.信号的完整名称
3.信号的简写名称
例:kill -9 8086
kill -s 9 8086
kill -SIGKILL 8086
killall:终止相关的所有命令,防止再生成
killall -singal pid
killall -9 httpd
8.nice命令:以指定的nice值启动并运行相应命令
# nice [OPTION] [COMMAND [ARGU]...]
选项: -n #
注意:仅管理员可调低nice值;
renice命令:已经存在的进程nice值调整
renice [number] PID
renice -5 19981
本文出自 “飞越之路” 博客,请务必保留此出处http://zpf461435.blog.51cto.com/11283159/1757235
原文:http://zpf461435.blog.51cto.com/11283159/1757235