linux 进程解析

博文介绍了进程信息以及部分进程管理命令

最近想要改变博客风格或者方式,很纠结,不知道怎么想,唉,多看看其他人的再说吧。好了,话不多说,直接进入主题
进程简介:
我们来一层层分析:之前看到一个感觉比较恰当的比喻,说程序是菜谱,进程是执行程序的过程,就像按照食谱,真正去做菜的过程。计算机根据菜谱做出可口的饭菜。而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)进程状态:
tai
(6)进程优先级:
系统优先级:数字越小,优先级越高
CentOS4/5中(0-139)
各有140个运行队列和过期(等待)队列
CentOS6/7中(0-98)
各有99个运行队列和过期(等待)队列
实时(realtime)优先级:99-0 值最大优先级最高
nice优先级值:-20到19,对应系统优先级100-139;nice优先级可以根据具体情况进行动态调整。
youxian
进程管理工具
简单介绍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编号))

zhix
k :对指定进程的属性进行排序

常用搭配:ps aux

head
STAT :表示进程状态
statte
nice命令:所有用户都可以以指定的优先级运行命令,这会影响相应进程的调度
选项n:指定优先级(范围-20到19)
示例:nice -n -10 ping 172.17.0.1 ##以nice优先级为10执行ping命令
renice命令:只有root用户可以)调整进程优先级
常用选项:
-P :指定需要调整优先级进程的PID(默认)
-n :指定优先级(范围-20到19)
-u :指定用户名称,修改所有隶属于该用户的程序的优先权。
-g :指定群组名称,修改所有隶属于该群组的程序的优先权
示例:renicepgrep命令:搜索进程,支持模式匹配
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

(2)
上一篇 2017-09-09 18:22
下一篇 2017-09-09 19:28

相关推荐

  • 11文件查找find和locate

    有些时候我们是想要在系统中查找某个具体的文件,却不知道路径在哪里,只是知道其中的某些特性,比如大小或者名字什么的。这时候就要用到查找工具啦。 在文件系统上查找符合条件的文件命令有两个,locate和find,其中locate是非实时查找即数据库查找。而find是实时查找 locate: 用法:locate [OPTION]… [PATTERN]&…

    Linux干货 2016-11-27
  • lnmp部署实验

    Lnmp部署 实验环境: 1、Centos 7主机一台,客户机一台。 2、在centos 7主机上部署:    Nginx  php-fpm  php-mysql  mariadb-server 实验步骤: 1、启动nginx服务,确保80端口打开,启动mariadb-server,确保3306端口…

    Linux干货 2016-10-30
  • 实验:路由、bonding、team

    实验:路由实验 路由表构成目标网络:网络ID 子网掩码接口:到达目标网络,从哪个接口出来,此接口网关:gateway,下一个邻近路由器的邻近接口的IP地址,如果目标网络和本路由器直接,网关的地址为接口的IP centos6 关闭NetworkManager服务chkconfig NetworkManagerservice NetworkManager sto…

    Linux干货 2017-05-06
  • JoSQL内存数据库远程代码执行漏洞(含EXP)

    JoSQL全称SQL for Java Objects,提供了应用SQL语句的Java对象的集合的能力开发,JoSQL提供了搜索,排序,group等对Java对象的集合进行类似SQL的查询应该应用的功能。 例如,查找所有在2004年内修改过的html文件: SELECT * FROM   java.io.File WH…

    Linux干货 2015-03-06
  • shell脚本循环及函数

    16.循环执行                 将代码段重复运行多次           &nbsp…

    Linux干货 2016-08-24
  • sed和awk的用例及pam安全措施-第十五周

    总结sed和awk的详细用法; sed用法 sed(Stream EDitor)是一款流编辑器,用来对文本进行过滤与替换操作。其原理是:通过文件或管道读取文件内容,但是sed默认并不直接修改源文件,而是一次仅读取文件的一行至模式空间(pattern space)根据sed指令进行编辑并输出结果后清除模式空间,即所有的操作都是在模式空间中进行的。 语法格式 s…

    2017-06-05