进程管理

简述进程的相关理论与工具使用

进程管理

(一)进程的介绍

程序工作的过程就是进程。我们通过一个图解释程序运行的过程:

图片1

解释:假如有一台电脑,在硬盘中有一个程序,当程序运行时,程序中的数据就会从硬盘读取到内存中,并在内存中开辟一个空间给程序运行。假如用户再开一个终端运行程序,内存

就会分配第二块空间给程序运行,进程是程序的实体。进程的特点:

  • 当我们运行程序时,系统会给程序分配一个进程编号,即进程ID。如果运行ps aux会看到很多的进程在运行。在windows系统中,输入快捷键win+r就会看到任务管理器中显示的windows正在运行的各个进程,它们有进程编号PID。
  • 进程有生命周期,当程序结束运行时,内存中的进程也会消失。
  • 进程有父进程与子进程之分,当父进程结束或被杀死时,子进程也不能继续运行。运行pstree可以查看所有的父进程及其子进程。Centos7以前的版本,系统的第一个进程是init进程,但centos7以及centos7后的版本是systemd。

图片2图片12

 

  • 当子进程不运行时,子进程与父进程在同一个内存空间,当子进程发生更改时,内存就会给它分配一个独立的空间供其使用。
  • 进程的优先级。Linux进程通常优先级分为:

系统优先级:早期centos系统优先级的范围为0-139,centos6以下为0-98。系统优先级的数字越小,优先级越高,就先运行,但并不是谁的优先级高,谁运行的就快。

实时优先级:与系统优先级相反,范围为99-0,值越大优先级越高。它是固定不变的

nice值:-20到19,对就系统优先级100-139或99,是动态的,可变的

图片3

UID:代表执行者的身份

PID:代表这个进程的代号

PPID:代表这个进程是由哪个进程发展衍生而来的,亦即父进程的代号

PRI:代表这个进程的nice值

NI:代表这个进程的nice值

所谓nice值,即表示进程可被执行的优先级的修正数值。PRI值越小越先执行,加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice。这样,当nice值为负值时,该进程的优先级值将变小,其越快被执行。

关于优先级的图解:

图片4

Windows也有优先级,如图可知,共有六种。

图片5

 

补充:谁有权力运行程序,不是程序决定的,而是由程序的权限决定的,程序的UID、GID和SELinux语境决定对文件系统的存取和访问权限。

进程相关概念:

进程内存:

Page Frame:页框,用存储页面数据,存储Page 4k

LRU: Least Recently Used 近期最小使用算法,释放内存物理地址空间和线性地址空间

图片6

原理解释:因为假设物理块有3个,所以最多只能存3个数据,超过就会将数据存到磁盘中。从第2轮开始,3调入之后3在上,4调入之后,4又重新跑到上面,以此规律类推。

MMU:Memory Management Unit负责转换线性和物理地址

TLB:Translation Lookaside Buffer翻译后备缓冲器,用于保存虚拟地址和物理地址映射关系的缓存。

进程状态:

Linux内核:抢占式多任务

进程类型:

守护进程:daemon,在系统引导过程中启动的进程,和终端无关进程,在计算机加载的时候,自动进入到后台运行。

前台进程:跟终端相关,通过终端启动的进程,关掉终端,进程也会关闭。

注意:两者可相互转化

进程状态:

运行态:running

就绪态:ready

睡眠态:

可中断:interruptable

不可中断:uninterruptable

停止态:stopped,暂停于内存,但不会被调度,除非手动启动

僵死态:zombie,结束进程,父进程结束前,子进程不关闭,表示其本进程或父进程非正常关闭,这样的进程占用内存资源,且无法在复活。

 

当遇到多个任务要运行时,如果一个父进程不能用,就会出线多个线性进程来运行多个任务,进程是线程的容器。每个线程都是独立的进程。

 

在/proc目录下,每个数字代表一个进程

图片7

查看进程:ps

支持三种选项:

UNIX选项 如-A -e

BSD选项 如a

GNU选项 如–help

选项:默认显示当前终端中的进程:

a 选项包括所有终端中的进程

x 选项包括不链接终端的进程

u 选项显示进程所有者的信息

f 选项显示进程的父进程

k|–sort 属性 对属性排序

o 属性…选项显示定制的信息

进程管理常用的命令:

pgrep 是通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行。在服务器的配置和管理中,这个工具常被应用。

常用参数:

-l  列出程序名和进程ID

-o  进程起始的ID

-n  进程终止的ID

例:

1)默认只显示ID

[root@localhost misc]# pgrep ssh

976

11241

2)同时显示PID和ProcessName

[root@localhost misc]# pgrep -l ssh

976 sshd

11241 sshd

3)按优先级的关系,显示最小的进程

[root@localhost misc]# pgrep -l -o ssh

976 sshd

4)按优先级的关系,显示最大的进程

[root@localhost misc]# pgrep -l -n ssh

11241 sshd

ps 可以对系统进程监测控制。Ps是显示瞬间行程的状态,并不动态连续;如果想对进程运行时间监控,应该用top工具。

命令参数:

-A 显示所有进程(等价于-e)(utility)
-a 显示一个终端的所有进程,除了会话引线
-N 忽略选择。
-d 显示所有进程,但省略所有的会话引线(utility)
-x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用。(utility)
-p pid 进程使用cpu的时间
-u uid or username 选择有效的用户id或者是用户名
-g gid or groupname 显示组的所有进程。
U username 显示该用户下的所有进程,且显示各个命令的详细路径。如:ps U zhang;(utility)
-f 全部列出,通常和其他选项联用。如:ps -fa or ps -fx and so on.
-l 长格式(有F,wchan,C 等字段)
-j 作业格式
-o 用户自定义格式。
v 以虚拟存储器格式显示
s 以信号格式显示
-m 显示所有的线程
-H 显示进程的层次(和其它的命令合用,如:ps -Ha)(utility)
e 命令之后显示环境(如:ps -d e; ps -a e)(utility)
h 不显示第一行

例:

图片8

标头解释:

USER    用户名

PID     进程ID(Process ID)

%CPU   进程的cpu占用率

%MEM  进程的内存占用率

VSZ     进程所使用的虚拟内存的大小(Virtual Size)

RSS     进程使用的驻留集大小或者是实际内存的大小,Kbytes字节

TTY     与进程关联的终端(tty)

STAT    进程的状态:进程状态使用字符表示的(STAT的状态码)

R   运行 Runnable(on run queue)正在运行或在运行队列中等待

S   睡眠 Sleeping  休眠中,受阻,在等待某个条件的形成或接受到信号

I    空闲 Idle

Z   僵死  Zombie(a defunct process) 进程已经终止,但进程描述符存在,直到父进程调用wait4()系统调用后释放。

D   不可中断  收到信号不唤醒和不可运行,进程必须等待直到有中断发生。

T    终止  Terminate

P    等待交换页

W   无驻留页

X    死掉的进程

<    高优先级进程

N    低优先级进程

L     内存锁页  Lock

s     进程的领导者(在它之下有子进程)

START     进程启动时间和日期

TIME      进程使用的总cpu时间

COMMAND 正在执行的命令行命令

pstree命令以树状图显示进程间的关系。

tty/who/w:

图片9

tty: 用来查询目前使用的终端机的文件名称

who: 用来显示系统中有哪些使用者,及其终端

w: 用来显示目前登入系统的用户信息

kill/pkill

kill用于终止指定的进程的运行,也可以用kill向进程发送特定的信号。

参数:

-l 信号,如果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称

-a 当处理当前进程时,不限制命令名和进程号的对应关系

-p 指定kill命令只打印相关进程的进程号,而不发送任何信号

-s 指定发送信号

-u 指定用户

实例:

1)列出所有信号名称

[root@localhost misc]# kill -l

1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP

6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1

11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM

16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP

21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ

26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR

31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3

38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8

43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13

48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12

53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7

58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2

63) SIGRTMAX-1  64) SIGRTMAX

2)先用ps查找进程,然后用kill杀掉

[root@localhost misc]# ps -ef

[root@localhost misc]# kill 19220

  • 彻底杀死进程

[root@localhost misc]# kil -9 19220

前后台的切换:

图片10

pidof 用于查找一个运行的程序的PID

[root@localhost misc]# pidof ping

19375

Jobs显示后台任务信息

[root@localhost misc]# ping 172.17.0.1

[root@localhost misc]# jobs

[1]+  Running                 ping 172.17.0.1 &

nohup使程序在后台运行。

[root@localhos   t misc]# nohup ping 172.17.0.1

renice: 进程优先级调整:

静态优先级:100-139

进程默认启动时的nice值为0,优先级为120

只有根用户才能降低nice值(提高优先性)

图片11

nice: 内核根据进程的nice值决定进程需要多少处理器时间,nice值的取值范围是:-20到20。一个具有-20的nice值的进程有很高的优先级,一个nice值的为20的进程的优先级则很低。

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/86655

(0)
上一篇 2017-09-09 15:34
下一篇 2017-09-09 16:06

相关推荐

  • 优秀程序员的十个习惯

    在这个世界上,有数百万的人热衷于软件开发,他们有很多名字,如:软件工程师(Software Engineer),程序员(Programmer),编码人(Coder),开发人员(Developer)。经过一段时间后,这些人也许能够成为一个优秀的编码人员,他们会非常熟悉如何用计算机语言来完成自己的工作。但是,如果你要成为一个优秀的程序员,你还可以需要有几件事你需…

    Linux干货 2015-04-01
  • 推荐-Nginx Proxy模块的应用之负载均衡

    Ngnix Proxy模块的应用之负载均衡 Ngnix Proxy模块的应用之负载均衡 Proxy 模块介绍 实验环境 配置Proxy Proxy 模块介绍   在我之前的文章提到过,Nginx可以提供反向代理加速、基于应用层的负载均衡并能对后端服务器做健康状态检测。下面我们就动手操作一下,看如何实现上述功能。 实验环境 主机名称 主要功能 外网地址 内网地…

    Linux干货 2016-03-27
  • Linux文件系统-基础学习-文件管理-20160727

    Linux文件系统–基础学习–文件管理 Linux下的文件类型 –:普通文件 :这些文件一般是用一些相关的应用程序创建。它的第一个字符是 – d: 目录文件 :目录在Linux是一个比较特殊的文件。它的第一个字符是 d b: 块设备 :这个种类的文件,是用mknode来创建,用rm来删除,它的第一个字符是b c…

    Linux干货 2016-08-04
  • N25 The first week –Yorick

    1.计算机的组成及功能 ENIARC:冯诺依曼体系 1.1.运算器(所属CPU)     进行计算 1.2.控制器(所属CPU)     控制部件之间的协调,包括寻址操作     辅助性存储(加速与提升CPU性能)     寄存器(锁存数据)     缓存(缓…

    Linux干货 2016-12-04
  • 谁写了Linux

    2009年8月,Linux软件基金会发布了一份叫《Who Writes Linux and Who Supports It》(PDF)的报告。这份报告主要对Linux 2.6.x的开发进行了全方位的统计。看了以后才知道,原来Linux的开发的生产率竟是这样的惊人,而且相当的的令人振奋,所以,在第一时间转过来给大家看看。让人不得不惊叹,这不可思议的具有非凡活力…

    Linux干货 2015-04-03
  • rpm包管理

    linux程序包管理 RPM ================================================================== #ldd 查看二进制程序调用的动态链接库 #ldconfig  -p  显示本机已缓存的所有可用库文件     dll: Dynamic…

    Linux干货 2016-08-18