青蛙学Linux—进程管理

进程,Process,是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。

进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。

进程是线程的容器,进程中包含一组线程,线程运行在进程中。

1、Linux中进程的分类

1.系统进程:可以执行内存资源分配和进程切换等管理工作的进程,由操作系统启动并管理,这类进程的运行不受用户的干预,即使是root用户也无法干预系统进程的运行。

2.用户进程:通过执行用户程序、应用程序或内核之外的系统程序而产生的进程,这类进程可以在用户的控制下运行或关闭,用户进程可分为以下三种

  • 交互进程:由一个shell终端启动的进程,在执行过程中需要与用户进行交互
  • 批处理进程:该进程是一些进程的集合,负责按顺序启动其他进程
  • 守护进程:该进程是一种一直运行的进程,用于执行特定的任务。

在Linux中,进程ID(PID)是区分不同进程的唯一标识,它的大小是有限制的,最大ID为32768。用UID和GID分别表示启动这个进程的用户和用户组;PPID表示进程的父进程。

2、查看进程

2.1、ps

显示进程在瞬间的运行状态。命令语法如下:

ps [选项]

常用选项:

  • -a:显示所有用户的进程,包含每个程序的完整路径
  • -x:显示所有系统进程,包括那些没有终端的程序
  • -u:显示使用者的名称和起始时间
  • -f:详细显示程序执行的路径
  • -e:将除内核以外所有进程的信息显示在标准输出

常用命令组合有ps -ef和ps -aux,这里来看下两个组合的详解:

ps –ef

1

各列详解:

  • UID:启动进程的用户ID
  • PID:进程ID
  • PPID:进程的父进程ID
  • C:进程的CPU占用率
  • STIME:进程启动的时间
  • TTY:启动进程的终端
  • TIME:进程使用CPU时间
  • CMD:带启动参数的进程路径及名称
ps –aux

2

各列详解:

  • USER:启动进程的用户
  • PID:进程ID
  • %CPU:进程CPU使用率
  • %MEM:进程内存使用率
  • VSZ:进程完全驻留内存需要的大小
  • RSS:进程实际使用内存大小
  • TTY:启动进程的终端
  • STAT:进程的状态。可能的值有以下几种,D - 不可中断;R - 正在运行或在队列中;S - 休眠;T - 停止或被追踪;I - 空闲;Z - 僵尸;P - 等待交换页;X - 死掉;< – 高优先级;N - 低优先级;s - 包含子进程;+ - 位于后台的进程组
  • START:进程启动的时间
  • TIME:进程使用CPU时间
  • COMMAND:进程名称及完整路径

额外的:显示中使用[]括起来的进程为系统进程。

2.2、top

用于实时查看进程的系统占用状态,同时可以显示当前系统负载和CPU内存等状况。命令语法如下:

top

top命令的回显可以分为以下两部分:

3

第一部分主要是系统当前的负载、各种状态的进程数量、CPU和内存负载,每行具体内容如下:

  • top:运行top命令时的时间  系统启动时间  当前登录系统的用户数量  系统一分钟、五分钟和十五分钟负载
  • Tasks:各种状态的进程数量,分别为total - 进程总数;running - 正在运行;sleeping - 睡眠;stopped - 停止;zombie - 僵尸
  • %CPU(s):CPU占用时间,分别为us - 用户占用;sy - 内核占用;ni - 用户进程提升优先级后占用;id - 空闲;wa - 等待磁盘写入;hi - 处理硬中断时间;si - 处理软中断时间;st - 虚拟机占用。如果是多核CPU,可以按1展开查看每个CPU核心的信息
  • KiB Mem:物理内存使用
  • KiB Swap:交换分区使用。内存的使用在下一篇查看系统负载中详细描述(free命令)。

第二部分显示的是系统中进程的实时信息,各列含义如下:

  • PID:进程ID
  • USER:启动进程的用户
  • PR:进程优先级
  • NI:nice值
  • VIRT:进程完全驻留内存需要的大小
  • RES:进程实际使用内存大小
  • SHR:共享内存使用大小
  • S:进程状态
  • %CPU:CPU使用
  • %MEM:内存使用
  • TIME+:累计CPU使用时间
  • COMMAND:执行的命令

额外的:在top界面下按f键可以修改显示的列。

2.3、lsof

用于列出进程打开的文件。若系统中没有安装,使用yum install lsof安装即可。命令语法如下:

lsof [选项] [参数]

常用选项:

  • -p:显示进程打开的所有文件,参数为PID
  • -c:显示进程打开的所有文件,参数为进程名
  • -i:通过监听指定的协议、端口号,显示符合条件的进程,参数为[tcp|udp]:port
  • -u:列出指定UID的进程详情,参数为UID
  • -g:列出指定GID的进程详情,参数为GID
lsof -c显示详解:

1

列详解

  • COMMAND:进程名
  • PID:进程ID
  • USER:启动进程的用户
  • FD:文件描述符
  • TYPE:文件类型
  • DEVICE:指定磁盘的名称
  • SIZE/OFF:文件大小
  • NODE:文件inode号
  • NAME:文件路径及文件名

2.4、pgrep

通过程序名查询PID。命令语法如下:

pgrep [选项] 程序名

常用选项:

  • -o:仅显示找到的最小(起始)PID
  • -n:仅显示找到的最大(结束)PID
  • -l:显示进程名称
  • -f:使用完全的进程名匹配

3、杀死进程

3.1、kill

根据指定的PID杀死进程。命令语法如下:

kill [信号类型] PID

信号类型决定了kill如何结束一个进程,通过kill –l可以查看所有的信号类型。常用的信号类型有:

  • SIGKILL,9,强制结束进程
  • SIGTERM,15,正常结束进程,kill的缺省选项
  • SIGINT,2,结束进程,但并不是强制性的,通过Ctrl+c发出的就是一个kill -2信号

额外的:我们通常使用以下的kill选项来检测一个进程是否存在

kill -0 PID
# 当进程存在时,命令正常执行,返回值为0;进程不存在时,命令执行失败,返回值非0

3.2、killall

根据指定的进程名杀死一个或一组进程。命令语法如下:

killall [信号类型] 进程名

转载于:https://www.cnblogs.com/yu2006070-01/p/9995978.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值