最近想要改变博客风格或者方式,很纠结,不知道怎么想,唉,多看看其他人的再说吧。好了,话不多说,直接进入主题
进程简介:
我们来一层层分析:之前看到一个感觉比较恰当的比喻,说程序是菜谱,进程是执行程序的过程,就像按照食谱,真正去做菜的过程。计算机根据菜谱做出可口的饭菜。而linux内核的一个重要功能就是为进程提供方便,比如说为进程分配内存空间,管理进程的相关信息等等,就好像是为我们准备好了一个精美的厨房。
所谓的程序(program),就是一系列指令的所构成的集合。所谓指令(instruction)就是比如计算两个数的和,在内存中寻找地址等这些最基础的计算机动作。
通过程序,我们可以让计算机完成复杂的操作。程序大多数时候被存储为可执行的文件。这样一个可执行文件就是一个菜谱。
进程(process)是运行中的程序的一个副本,是被载入内存的一个指令集合。
进程的特点:
(1)拥有独立唯一的进程地址(Process ID ,PID ):用来标记各个进程
(2)存在生命周期,由创建而产生,由调度而运行,由结束而消亡,是一个动态推进、不断变化的过程。
(3)独立性:进程是操作系统资源分配、保护和调度的基本单位,每个进程都有其自己的运行数据集,以各自独立的、不可预知的进度异步运行。进程的运行环境不是封闭的,进程间也可以通过操作系统进行数据共享、通信。
(4)并发性:在同一段时间内.若干个进程可以共享一个CPU。进程的并发性能够改进系统的资源利用率,提高计算机的效率。进程在单CPU系统中并发执行,在多CPU系统中并行执行。进程的并发执行意味着进程的执行可以被打断,可能会带来一些意想不到的结果。
进程知识:
(1)进程格式: task struct :Linux 内核存储进程信息的数据结构格式(略过,有兴趣的可以从内核中了解)
(2)进程之间的联系:task list :多个任务的的 task struct 组成的链表
(3)进程都由其父进程创建,(机制 :CoW (Copy on Write 写时复制)可以点击此链接了解http://www.cnblogs.com/biyeymyhjob/archive/2012/07/20/2601655.html
那么父父进程又是什么呢,我们可以这样理解,存在一个上帝进程,是最终极的进程,
在CentOS6:上帝进程也就是第一个进程(PID=1)为:init。CentOS7中上帝进程(PID=1)为:systemd
(4)进程类型:可以分为两种
守护进程:在系统引导过程中启动的进程,和终端无关的进程(可以理解为Windows系统中的后台进程)
前台进程:通过终端启动的进程(可以理解为Windows系统中的各种前台应用进程)
(5)进程状态:
(6)进程优先级:
系统优先级:数字越小,优先级越高
CentOS4/5中(0-139)
各有140个运行队列和过期(等待)队列
CentOS6/7中(0-98)
各有99个运行队列和过期(等待)队列
实时(realtime)优先级:99-0 值最大优先级最高
nice优先级值:-20到19,对应系统优先级100-139;nice优先级可以根据具体情况进行动态调整。
进程管理工具:
简单介绍pstree命令,ps命令,nice/renice命令,pgrep命令,kill命令。
pstree命令:
pstree : – display a tree of processes (显示进程树)
常用选项:
-p : 显示进程PID
补充:进程树中的大括号内容是表示依附于进程的线程(thread)。进程中又分为线程,一个进程至少一个线程,如果是复杂多任务的话可以分多线程,节省内存空间,提高效率。
ps命令:
ps : – report a snapshot of the current processes (报告当前进程的快照即当前进程状态)
支持三种选项:
UNIX 选项 如-A,-e
BSD 选项 如a
GNU 选项如—help
常用选项:
ps :默认显示当前终端的前台进程
仅介绍BSD选项:
a :显示所有终端的前台进程
x :显示终端所有进程(包括守护进程和前台进程)
u :显示进程执行者信息(注意:不是显示进程的发起者信息)
f :层次显示进程(父子进程)
o :自定义显示进程的指定属性(常用属性:pid,cmd,%cpu,state(状态),tty,euser(进程生效者),ruser(进程发起者),rss(系统分配的虚拟内存),vsz(实际分配的物理内存),ni(nice优先级),pri(系统优先级),rtprio(realtime优先级),psr(CPU编号))
k :对指定进程的属性进行排序
常用搭配:ps aux
STAT :表示进程状态
nice命令:所有用户都可以以指定的优先级运行命令,这会影响相应进程的调度
选项n:指定优先级(范围-20到19)
示例:nice -n -10 ping 172.17.0.1 ##以nice优先级为10执行ping命令
renice命令:(只有root用户可以)调整进程优先级
常用选项:
-P :指定需要调整优先级进程的PID(默认)
-n :指定优先级(范围-20到19)
-u :指定用户名称,修改所有隶属于该用户的程序的优先权。
-g :指定群组名称,修改所有隶属于该群组的程序的优先权
示例:pgrep命令:搜索进程,支持模式匹配
pgrep [options] pattern
示例:pgrep -a “^ping” ##搜索命令以ping开头的进程
常用选项:
-u :搜索显示指定执行者的进程
-U :搜索显示真正发起运行命令者
-t :搜索显示指定终端相关的进程
-P PID:搜索显示指定进程的子进程
-v :显示与搜索条件不符合的程序
-l :显示搜索到的进程名
-a :显示完整格式的进程名
示例:pgrep -au magedu
pgrep -au 1000 (切记:u后面直接跟用户名或uid 不可再跟选项,o选项也是ruci)
补充:pidof命令:(查找正在运行的进程的PID)
示例:pidof bash
pidof httpd
kill命令:向进程发送控制信号,以实现对进程管理,每个信号对应一个数字
信号名称以SIG 开头(可省略),不区分大小写
查看当前系统可用信号可用kill -l或者trap –l命令
常用信号:
1) SIGHUP :无须关闭进程而让其重读配置文件
2) SIGINT :中止正在运行的进程;相当于Ctrl+c
3) SIGQUIT :相当于ctrl+\
9) SIGKILL :强制杀死正在运行的进程
15) SIGTERM :终止正在运行的进程
18) SIGCONT :继续运行
19) SIGSTOP :后台休眠
指定信号的方法:
(1) 信号的数字标识:1, 2, 9
(2) 信号完整名称:SIGHUP可简写名称为:HUP
kill命令用法:
按PID :kill [-SIGNAL] pid …
示例:kill PID ##“杀死”指定PID的进程
kill -n [SIGNAL] PID ##向指定PID的进程发送某一信号
按名称:killall [-SIGNAL] comm…
示例:killall ping ##“杀死”命令ping的进程
kill vim ##“杀死”命令vim的进程
按模式:pkill [options] pattern (pgrep 与 kill的结合,选项与pgrep相似)
示例:pkill -t pts/2 ##“杀死”终端为pts/2的所有进程
pkill “^ping” ##“杀死”命令以ping开头的进程
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/86695