进程管理

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

进程管理

(一)进程的介绍

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

图片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)
xxcjxxcj
上一篇 2017-09-09
下一篇 2017-09-09

相关推荐

  • 第一次写的linux脚本

    刚开始学的时候,都是一些基本的命令,总是无法把它们联系到一块去,现在刚开始接触脚本,顿时感觉压力好大,基础命令如果记不牢,很有可能就挂了,下面我把近几天学习的一些脚本命令及练习拿来分享一下,供大家参考,同时加深我的记忆。 首先是写脚本的格式,我这里用vim编辑器来写的脚本,因为它的色彩非常明艳,易于区分。基本格式如下: #!/bin/bash 第一行一般为调…

    Linux干货 2017-08-05
  • 自制Linux

    1. 分区出来两个区 fdisk /dev/sdb     2. 创建文件系统   [root@localhost ~]# mkfs.ext4 /dev/sdb1  [root@localhost ~]# mkfs.ext4 /dev/sdb2 3.…

    Linux干货 2016-09-16
  • Linux Network Manager

    Linux Network Manager Network简述 Switch,Router简述 Linux Network 配置方法 ifcfg家族命令 ip家族命令 rhel7 nmcli命令 配置文件 Network简述 Network是什么? 网络是将分布在地理位置不同的计算机通过物理线路的连接,在网络软件的管理下,实现数据通信的过程。&nb…

    Linux干货 2016-04-05
  • 证书及加解密原理图解

    证书管理 现在上网大多数网站都是使用https的协议,https是一个安全的访问方式,数据在传输过程中是加密的,这时候在服务器端就需要使用证书。 科普加解密流程 服务器端客户端 服务器在和客户端通信前必须先建立SSL会话,下图解析SSL会话过程

    Linux干货 2016-09-25
  • 接51CTO:13 用户组和权限管理3

    用户组和权限管理3 一、杂项知识整理 1、硬链接:写源文件可以是相对地址,相对于链接文件。例如 [root@localhost testdir]# ln ../etc/fstab aaa ln: 无法创建硬链接"aaa" => "../etc/fstab…

    Linux干货 2016-08-04
  • Codis集群3.03安装配置基础

    Codis基础 01.codis是一个分布式的Redis解决方案,对于上层的应用来说,连接Codis Proxy和连接原生的Redis Server没有明显的区别。 codis底层会处理请求的转发,不停机的数据迁移等工作,所有后边的一切事情,对于前面客户端来说是透明的,可以简单的认为后边连接是一个内存无限大的Redis服务。 codis架构图如下: 02.c…

    Linux干货 2016-09-26