Linux云计算学习笔记08 (CentOS 进程管理)

一.进程的定义

程序:
文件,一般是二进制,静态 /usr/sbin/httpd,/usr/sbin/sshd

程序是二进制文件(面试题之一)

进程:
是程序运行的过程, 动态,有生命周期的,
可以产生和消亡的(进程是已启动的可执行程序的运行实例,实例即运行可执行程序)。

线程:
线程是进程之内独立执行的一个单元。对于操作系统而言,其调度单元是线程;
一个进程至少包括一个线程,通常将该线程称为主线程;
一个进程从主线程的执行开始,进而创建一个或多个附加线程,就是所谓基于多线程的多任务.

二.进程的生命周期

父进程:
程序运行时产生的第一个进程,任何进程都可以作为父进程创建子进程。

子进程:
由父进程使用fork()函数完全复制自己的地址空间创建出来的新的进程就是子进程,
子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,
以及程序代码,随后,子进程可能exec自己的程序代码。

poccess id:   pid    进程号!
为父进程跟踪和安全性以及管理人员的控制和管理所需,
父进程会给子进程分配一个唯一的进程id,这个id就是pid

三.进程的状态

在多任务处理操作系统中,每个CPU(或每个核心)在一个时间点上只能处理一个进程。在进程运行时,它对CPU 时间和资源分配的要求会不断变化(进程不会持续的占用cpu,而是根据自己的需求来决定是否需要使用cpu时间),所以进程在运行的时候会有不同的状态,它随着环境要求而改变,具体的状态可以参考下图来看:

一个进程被父进程fork()衍生出来之后,会统一由内核进程调度程序来根据当前这个进程对于cpu的时间和资源的需求来进行调度,如果进程需要使用cpu,那么调度程序会根据当前进程的优先级来进行调度,从而通知进程什么时间会被cpu进行处理。此时进程会处于R状态

R-(running运行状态)

R状态包括两种情况:

  1.第一种情况是正在排队等待cpu的处理处于Runnable状态

  2.第二种情况是正在被cpu处理处于running状态;

进程在运行的时候可能由用户发出一个stop的状态,从而暂停到后台,这个时候进程就处于T状态;

T-(stop停止状态)

当然进程也可能不需要cpu处理或者是运算或者他本身是一个父进程,有子进程正在工作,这个的时候就会处于sleeping状态;

S-(sleeping睡眠状态)

当进程结束工作之后,会释放掉自己的各种资源,然后进入到Z状态,

Z-(zombie僵尸状态)

当父进程回收之后就会处于彻底终结的X状态

X-(彻底终结)

具体如图所示:

Linux云计算学习笔记08 (CentOS 进程管理)_第1张图片

状态总结:

R状态:包含runnable和running,表示进程正在等待运行或者是正在cpu上运行

Sleeping: 包含S、D、K三种状态

S:可中断睡眠,进程在等待事件触发/接收到指定的信号(硬件请求/系统之间的访问)才会运行起来。

D:不可中断睡眠,不会接收或者是相应外界传来的信号,通常情况下正在进行I/O操作

K:和D的状态相同,但是可以被中断

Stopped:T状态,表示进程被停止,通常是由用户或者是其他进程发送的信号。

Zombie:包含X、Z两种状态

Z:除了pid之外,其他的资源都已经释放掉,给父进程发送退出信号之后进入到Z状态

X: 彻底退出状态


僵尸进程危害:
大量的僵尸进程会导致我们系统中没有可用的pid,导致系统出现问题。


僵尸进程如何产生?

1. 子进程结束运行后,父进程还在运行,这个时候所有的子进程就会进入僵尸状态,
少量的僵尸进程对系统危害不大,但是大量的僵尸进程会拖垮服务器。


四.查看进程状态

命令1:

ps aux

命令2:

ps -elf

以ps aux为例 

# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY   STAT START   TIME COMMAND
root        1  0.0  0.0    2164   648 ?     Ss   08:47     0:00  /usr/lib/systemd/systemd

USER: 	运行进程的用户
PID: 	进程ID
%CPU:   CPU占用率
%MEM:  内存占用率
VSZ:	占用虚拟内存,包括程序、代码、共享库等所有的
RSS:  	占用实际内存 驻留内存
TTY: 	进程运行的终端,?表示不依赖于任何的终端
STAT:	进程状态		
      R 	运行
      S 	可中断睡眠 Sleep
      D	不可中断睡眠
      T 	停止的进程 
      Z 	僵尸进程
      X    死掉的进程
      
	  Ss  	s进程的领导者,父进程
	  S<     <优先级较高的进程
	  SN      N优先级较低的进程
	  R+	+表示是前台的进程组
	  Sl	      以线程的方式运行	
START:	进程的启动时间
TIME:	进程占用CPU的总时间,单位是minute
COMMAND: 进程文件,进程名
PPID   父进程进程号

查看指定进程的pid

ps aux |grep 服务名

查看进程树

需要先下载一个软件包:yum install -y psmisc

举例:pstree apache (启动进程的用户名)

五.进程优先级

进程优先级使用nice值来表示

进程优先级: 0--------139 数值越小,优先级越高

高优先级进程: 获取cpu更多的执行时间 cpu优先执行

nice值: -20-----19

nice值设定:

rnice  值  pid


[root@localhost ~]#  renice 0 9349
9349 (进程 ID) 旧优先级为 6,新优先级为 0

六.动态查看进程

使用命令:top

第一部分:系统整体统计信息
top - 14:22:36 up  4:45,  3 users,  load average: 0.00, 0.00, 0.00
Tasks: 206 total,   2 running, 204 sleeping,   0 stopped,   0 zombie
Cpu(s):  1.6%us,  0.7%sy,  0.0%ni, 96.8%id,  0.9%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4019424k total,  1327584k used,  2691840k free,   131012k buffers
Swap:  2047992k total,        0k used,  2047992k free,   650880k cached

load average: 0.23, 0.06, 0.02	  1分钟,5分钟,15分钟之内系统的平均负载
us:用户占用的cpu的百分比  
sy:内核占用的cpu的百分比  
ni 改变过优先级的进程占用的cpu的百分比      
id:cpu的空闲时间    
wa:cpu的IO等待的时间      
hi:硬中断占用的cpu的百分比        
si:软中断  
st:cpu被偷走的时间



第二部分:进程信息
命令
h或?获得帮助
M	按内存的使用排序
P	按CPU使用排序
N	以PID的大小排序
R	对排序进行反转
f	自定义显示字段,调整字段顺序(选中正行上下箭头调整)
1	显示所有CPU的负载
W 保存top环境设置


PID — 进程id

USER — 进程所有者

PR — 进程优先级

NI — nice值。负值表示高优先级,正值表示低优先级

VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR — 共享内存大小,单位kb

S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

%CPU — 上次更新到现在的CPU时间占用百分比

%MEM — 进程使用的物理内存百分比

TIME+ — 进程使用的CPU时间总计,单位1/100秒

COMMAND — 进程名称(命令名/命令行)

七.其他查看服务器性能的命令

df -Th:查看磁盘信息

free -m:查看内存信息

lscpu:查看CPU信息

八.作业控制

作业控制是一个命令行功能,可以允许一个shell 能够同时运行多个进程,还可以实现进程管理,例如可以选择性暂停、恢复某些进程,让shell可以在子进程运行期间返回接受其他命令
进程前台、后台
前台:前台进程会占用当前终端,当前终端为该进程的控制终端,进程会接收键盘产生的输入信号
后台:后台进程没有控制终端,不需要终端的交互,不接收终端输入的信号

fg

调用& 前台 (单独使用fg命令,调用作业中有+作业)

bg

有前台执行的命令ctrl+z 挂起(stop),由bg调到后台运行状态

kill

杀死进程

pkill

批量杀死进程

你可能感兴趣的:(linux,学习,笔记,centos,运维,云计算,服务器)