Linux系统学习---进程管理(六)

目录

  • 进程管理
    • 进程概念
    • ps命令 查看进程
    • 动态进程查看top
    • kill命令
    • killall 命令
    • 查看进程树pstree

进程管理

Linux是支持多进程运行的分时操作系统

分时操作系统 :将时间划分为很小的区间,分给各个进程使用
实时操作系统:根据任务的优先级来决定程序的运行

进程概念

进程:正在运行的程序及其占用的资源,就是已经跑起来的程序

  • a进程创建了b进程,则a进程称为b的父进程,b为a的子进程,若一个进程的父进程已经被杀死,他将被init进程“领养”。每一个进程都必须有父进程
  • 进程的运行方式,有前台运行和后台运行
  • 进程是程序的副本,系统要运行程序时,将硬盘中的程序复制到内存中,再去运行
  • 每一个进程都有一个进程号

进程前后台调用命令

  • Ctrl+z 把占用shell的进程打入后台挂起
  • bg 将后台挂起的进程在后台运行起来
  • fg 将进程调回前台运行
  • & 运行进程在后台
  • jobs 查看当前shell中在后台的所有工作

进程的状态

  • R 可执行态
    正在被cpu处理的或等待被cpu处理的
  • S 可唤醒休眠
    cpu在使用时,每个程序对cpu的占用时间是有严格限制的,当使用超时时,会进入休眠状态,等待下一个cpu时间片轮到
  • D 不可唤醒休眠
    当一个程序在系统工作中,还有没有被加载完的资源时,不能让其被cpu处理。
  • T 暂停状态
    人为控制的状态。
  • Z 僵死态
    程序已经结束时,但仍旧占用系统资源时(进程出现bug)

ps命令 查看进程

注意:默认只能查看当前会话的进程(同一个终端窗口),要是打开了两个终端,在另一个终端不能查看当前终端的进程
若需查看,需要加上相应的选项

选项

  • A :所有的进程均显示出来,与 -e 具有同样的效用;
  • a : 显示现行终端机下的所有进程,包括其他用户的进程;
  • u :以用户为主的进程状态 ;
  • x :通常与 a 这个参数一起使用,可列出较完整信息。
    输出格式规划:
  • l :较长、较详细的将该 PID 的的信息列出;
  • j :工作的格式 (jobs format)
  • f :做一个更为完整的输出。

实例

使用ping创建一个后台进程,使用ps查看进程列表
Linux系统学习---进程管理(六)_第1张图片

查看所有运行的进程

ps aux

Linux系统学习---进程管理(六)_第2张图片
中括号括起来的,是Linux内核创建的进程,不能杀死,也没有权限杀
1号init进程是,系统启动时创建的,最开始的进程

列出进程的完整信息
在这里插入图片描述

各字段意义:

  • F 代表这个程序的旗标 (flag), 4 代表使用者为 超级用户;

  • S 代表这个程序的状态 (STAT);

  • UID 代表执行者的用户名

  • PID 进程的ID号

  • PPID 父进程的ID;

  • SID 会话ID

  • C CPU使用的资源百分比

  • PRI 指进程的执行优先权(Priority的简写),其值越小越早被执行;

  • NI 这个进程的nice值,其表示进程可被执行的优先级的修正数值。

  • ADDR 这个是内核函数,指出该程序在内存的那个部分。如果是个执行的程序一般就 是『 - 』

  • SZ 使用掉的内存大小;

  • WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作;

  • TTY 该进程是在那个终端机上面运作,

    • 与终端机无关,则显示 ?
    • tty1-tty6 是本机上面的登入者程序
    • pts/0 等等的,表示为由网络连接进主机的程序。
  • TIME 使用掉的 CPU 时间。

  • CMD 所下达的指令名称

  • %CPU 进程的cpu占用率

  • %MEM 进程的内存占用率

  • VSZ :该进程使用掉的虚拟内存量 (Kbytes)

  • RSS :该进程占用的固定的内存量 (Kbytes)

  • s(STAT) 进程状态,包括下面的状态:

    • D 不可中断 Uninterruptible sleep (usually IO)
    • R 正在运行,或在队列中的进程
    • S 处于休眠状态
    • T 停止或被追踪
    • Z 僵尸进程
    • W 进入内存交换(从内核2.6开始无效)
    • X 死掉的进程
    • < 高优先级
    • N 低优先级
    • L 有些页被锁进内存
    • s 包含子进程
    • + 位于后台的进程组;
    • l 多线程,克隆线程

动态进程查看top

用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。

使用实例
Linux系统学习---进程管理(六)_第3张图片
前面五行是统计信息区 ,用于系统整体的统计信息

第一行是任务队列信息,同 uptime 命令的执行结果
意义如下

  • 14:21:22 是系统当前时间
  • up 2 days 是系统运行时间,已经运行2天
  • 2 users 是有两个登录用户
  • load average: 0.00, 0.03, 0.06 系统负载即任务队列的平均长度。
    三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

第二、三行为进程和CPU的信息

  • total 进程总数

  • running 正在运行的进程数

  • sleeping 睡眠的进程数

  • stopped 停止的进程数

  • zombie 僵尸进程数

Cpu(s): 行的意义

us 用户占用CPU百分比

sy 内核占用CPU百分比

ni 用户进程空间内改变过优先级的进程占用CPU百分比

id 空闲CPU百分比

wa 等待输入输出的CPU时间百分比

hi 硬中断(Hardware IRQ)占用CPU的百分比

si 软中断(Software Interrupts)占用CPU的百分比

st (Steal time) 是当 hypervisor 服务另一个虚拟处理器的时候,虚拟 CPU 等待实际 CPU 的时间的百分比。

最后两行为内存信息。内容如下:

Mem: 行

  • total 物理内存总量

  • used 使用的物理内存总量

  • free 空闲内存总量

  • buffers 用作内核缓存的内存量

Swap: 行

  • total 交换区总量

  • used 使用的交换区总量

  • free 空闲交换区总量

  • cached 缓冲的交换区总量。

接下来的就是进程信息区,字段意义和ps类似,会实时更新


kill命令

给一个进程号,发送一个信号
这个信号默认是终止信号(15)

格式: kill 【选项】 【进程号】

选项

-l 不发送信号,列出全部的信号名称及编号
-a 当处理当前进程时,不限制命令名和进程号的对应关系
-p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s 指定发送信号
-u 指定用户

可发送的信号
Linux系统学习---进程管理(六)_第4张图片
HUP 1 终端断线
INT 2 中断(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 终止
KILL 9 强制终止
CONT 18 继续(与STOP相反, fg/bg命令)
STOP 19 暂停(同 Ctrl + Z)

若默认发送的15号信号不能杀死进程,可使用9号强制杀死

实例

终止进程
Linux系统学习---进程管理(六)_第5张图片

在不知道进程号的情况下,删除gfx用户的ping进程

kill ·ps aux | grep gfx | grep ping | grep -v grep | awk '{print $2}'·

#说明
#使用了命令置换符,后面一串命令的返回结果作为kill的参数
#ps aux查看了所有进程,如果使用grep搜索出了对应的进程,并-v 排除grep进程本身
#再使用了,awk切割grep返回的结果

killall 命令

使用进程名来终止进程,支持通配符

killall命令和kill命令一样可以发送信号


查看进程树pstree

基本语法:

pstree [选项] ,可以更加直观的来看进程信息

常用选项:

-p :显示进程的PID

-u :显示进程的所属用户

Linux系统学习---进程管理(六)_第6张图片

你可能感兴趣的:(linux,linux,运维,服务器)