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)
MozartMozart
上一篇 2017-09-09 18:22
下一篇 2017-09-09 19:28

相关推荐

  • 第九周作业

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; 2、写一个脚本     (1) 获取当前主机的主机名,保存于hostname变量中;     (2) 判断此变量的值是否为loc…

    2017-04-20
  • samba应用

    samba详解 前言 前面学过了NFS,是一个网络文件系统,可以让远程连接像访问本地文件一样,在同一个网络上的多个用户间共享目录和文件系统。只不过NFS只是针对于两个linux主机,我们现在需要linux主机和windows主机都能共享,这个时候就用到了samba。 1、步骤,允许个别用户访问 1、安装下面三个包: samba samba-common sa…

    Linux干货 2016-12-21
  • Linux删除特殊字符文件

    由于很多原因可能会导致一些文件的文件名是乱码,当我们删除的时候就会发现这个文件名既不能自动补全,也不能直接删除。

    2017-11-11
  • 设计模式(七)组合模式Composite(结构型)

    1. 概述 在数据结构里面,树结构是很重要,我们可以把树的结构应用到设计模式里面。 例子1:就是多级树形菜单。 例子2:文件和文件夹目录 2.问题 我们可以使用简单的对象组合成复杂的对象,而这个复杂对象有可以组合成更大的对象。我们可以把简单这些对象定义成类,然后定义一些容器类来存储这些简单对象。客户端代码必须区别对象简单对象和容器对象,而实际上大多数情况下用…

    Linux干货 2015-07-01
  • Linux第二周总结

    1、Linux上的文件管理命令都有哪些,其常用的使用方法及其相关示例演示。 Cp、mv、rm cp命令: copy 单源复制:cp [OPTION]… [-T] SOURCE DEST 如果DEST不存在:则事先创建此文件,并复制源文件的数据流至DEST中; 如果DEST存在: 如果DESST是非目录文件;则覆盖目标文件; 如果DEST是目录文件…

    2017-07-09
  • Linux systemd管理

                                                      &nbsp…

    系统运维 2016-09-28