Linux进程管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux进程管理相关的知识,希望对你有一定的参考价值。
进程管理的概念
1.程序是静态的,本身作为一个长期软件资源保存着,而进程是动态的,,有一定的生命周期,是动态产生和消亡的,进程每次执行一个时间片的长度在内核中,当时间片结束后进程就要让出内核给下一个等待运行的进程;进程会将其信息保存在内存结构体中,这样当进程再一次执行时,就可以通过内存结构体所保存的信息达到上一次执行完毕时的状态;
2.程序和进程没有一一对应关系,进程在运行的状态下回去使用程序;
3.进程是具有父子关系的;子进程由父进程创建,通过fork()系统调用,将父进程的数据,堆栈段以及进程环境放到子进程当中;当子进程完成其工作时,由其父进程将子进程进行回收处理;将父进程中的数据放入子进程的复制是写时复制,当调用子进程时才会启用;
在CentOS环境下,内核在正常启用后会执行一个init()的进程来初始化系统;
CentOS5及以前的版本:SysV Init,Classic Init
执行init()进程由init去创建子进程,以执行脚本的方式去创建子进程,CentOS5的执行方式是串行的,就是一个一个的去执行这些脚本,所以运行速度会很慢;
CentOS6:upstart
执行init()进程由init去创建子进程,不同于CentOS5的是,其执行方式是并行的,可以同时创建多个进程,若其具有多个CPU的话,其效果会更加明显,运行速度较快;
CentOS7:systemd
可以以其自身独立的进行整个操作系统的的启动工作,也就是说,只需要启动一个systemd进程,就可以将其他服务进程启动起来,这些服务进程是我们目前需要的进程,当我们需要更多时,才会去启用他们,所以CentOS7的运行速度会较之前的更快;
前台进程:在前台输入命令,创建对应的子进程,在命令运行的时间内,前台无法运行其他进程;
后台进程:在前台输入命令,创建对应的子进程,命令运行转入后台执行,不占用前台;
守护进程:在系统引导的过程中被启用,与任何终端无关;
用户进程:用户登录系统后才启用,通过终端启动的进程;
进程优先级:进程的执行是根据其优先级来判断哪个先执行,那个后执行;进程的优先级别从0到139
0到99为系统优先级,数值越高优先级越高,100到139为静态优先级,数值越低优先级越高;
nice值:-20至19
0表示优先级别当中的120,-20表示100,19表示139;只有管理员能使用负整数提高进程的优先级别,用户只能使用正整数降低进程的优先级别;
nice -n 优先级 进程名
运行进程并且指定优先级别;
renice -n 优先级 进程名
对于已经运行的进程,修改其优先级别;
进程相关命令
pstree:显示进程树
ps:显示进程相关信息,如有效用户,PID,占用CPU和内存的百分比等;
ps有两种形式的选项
BSD风格:
a:与终端相关的进程;
x:与终端无关的进程;
u:显示发起进程的用户账户名称;
例
USER:进程的所有者;
PID:进程标识符;
%CPU:进程占用CPU的百分比;
%MEM:进程占用内存的百分比;
VSZ:虚拟内存集;
RSZ:常驻内存集;
STAT:进程状态
R:正在运行;
S:可中断的睡眠状态;
D:不可中断的睡眠状态;
T:被跟踪/已停止;
Z:僵死态;
+:前台进程;
<:高优先级进程;
N:低优先级进程;
TIME:进程累积的CPU占用时间;
UNIX风格:
-e:所有进程;
-F:以完整格式显示进程信息;
-H:以层级结构显示父子关系;
例
PPID:父进程PID;
SZ:虚拟内存集;
RSS:常驻内存集;
PSR:表示此进程在哪个CPU核心上运行;
C:表示进程占用的CPU时间的百分比;
pgrep:搜索相关进程;
-u uid:根据用户uid搜索以该用户为有效用户的进程;
-U uid:根据用户uid搜素以该用户为真实用户的进程;
-l pattern:搜索进程名,根据部分进程名相关信息;
例
pidof:显示进程名称对应的进程ID;
top:显示进程的相关信息,较全面;
第一行:
当前系统时间
系统运行时长
当前系统用户登录数
在1分钟,5分钟,15分钟时进程平均等待数
第二行
进程总数
进程运行数
进程睡眠数
进程等待数
进程僵死数
第三行
占用CPU的百分比
us:用户进程占用CPU的百分比;
sy:内核级进程占用CPU的百分比;
ni:使用nice值调整了进程优先级后额外占用的CPU百分比;
id:CPU空闲时间百分比;
wa:等待IO完成占用CPU的百分比;
hi:硬件中断占用CPU的百分比;
si:软件终端占用CPU的百分比;
st:被虚拟化程序等偷走的CPU时间的百分比;
第四行
内存的相关信息
第五行
以KB为单位显示swap空间的使用情况:
第六行
进程相关信息
top命令是前台进程,具有交互命令
1:显示不同CPU核心的使用情况;
P:对CPU占用百分比进行排序显示;
M:对内存占用百分比进行排序显示;
T:根据累计占用CPU时间进行排序;
q:退出top命令;
vmstat:实际内存统计;
procs
r:正在运行的进程数;
b:阻塞的进程数;
memory
swpd:内存被使用的数量;
free:空闲的内存数量;
buff:数据缓冲区中的内存数;
cache:数据缓存区中的内存数;
buff和cache中的内存数是可以取用的;
swap
si:进入交换空间的进程数;
so:出去交换空间的进程数;
io
bi:块数据进入内存的数量;
bo:内存数据进入块数据的数量;
System
in:硬件中断与软件中断数量;
cs:上下文切换;
CPU
us:用户进程占用CPU的百分比;
sy:内核级进程占用CPU的百分比;
id:空闲CPU的百分比;
wa:等待IO完成的CPU的百分比;
st:被虚拟化程序等偷走的CPU时间的百分比;
进程管理命令:
kill:关闭进程
kill [signal] pid
signal
1) SIGHUP:无需关闭对应进程而让其重新读取其自身的配置文件;
2) SIGINT:终止正在运行的前台进程;
9) SIGKILL:没有任何预兆的终止正在运行的进程,残暴;
15) SIGTERM:默认信号,终止正在运行的进程;
18) SIGCONT:让转入后台的进程继续运行;
19) SIGSTOP:让进程转入后台并停止运行;
killall:关闭所有同名的进程;
killall 进程名
jobs:查看后台进程;
后台进程除了一开始便在后台运行的进程之外,还可以将前台进程转入后台运行;
①Ctrl+Z:在前台进程运行之后按键,使之转入后台;
②命令 &:运行命令时加个“&”将其直接转入后台运行;这样的进程也是与终端相关的进程;如果终端关闭,则此类进程也会终止;
③nohup 命令 &:使其启动并转入后台,这样的进程是与终端无关的进程;
bg:后台作业在后台运行;
bg id
fg:将后台作业放入前台运行;
fg id
以上是关于Linux进程管理的主要内容,如果未能解决你的问题,请参考以下文章