查看进程

回忆上次内容

  • 上次先进程查询

    • ps -elf 查看所有进程信息
    • ps -lf 查看本终端相关进程信息
  • 杀死进程

    • kill -9 PID 给进程发送死亡信号
  • 运行多个 python3 show_time.py 的话

    • 各个进程独立
    • python3 show_time.py 大概 8+M
    • 各占内存
  • 这些进程之间是什么关系呢?

编辑

具体查询

  • zsh进程相关的 3 个进程

    • zsh(当前的 shell 环境)

      • zsh(shell本身)进程
    • /usr/bin/python3 /home/shiyanlou/sleep.py

      • 输出时间的python程序
    • ps -lf

      • 查询进程的ps进程

编辑

  • 这进程之间有父子关系

父子关系

  • pid 是指进程的 id

    • process id
  • ppid 是指 进程 id

    • parent process id
  • ppidpid 的爸爸

编辑

  • pspython3 都是 zsh 的子进程
  • python3 这个进程占内存是 SZ

    • 4860 个 Page
    • 每个 page 大概 4K

      • 总共 10+M

编辑

  • python3 这个文件不是本身才 4.3M 么

    • 都装进内存也就是 4.3M
    • 都装进内存页没有 10+M 呀?

10+M 的原因

  • 除了基础的部分(内建模块函数)之外

    • print()
    • ord()、chr()
    • int()、hex()、bin()
  • 还有新加载的部分

    • sleep.py
    • 还有 import 进来的 time 这个 module

实际分配

ps -o pid,ppid,sz,vsz,rss,cmd
  • SZ 是欲分配的内存用页(4K)来当单位
  • VSZ 是欲分配的内存用 K 来当单位

编辑

  • RSS 非交换区的内存用 K 来当单位
  • 也就是说实际这个东西也就 8+M

编辑

后台多任务查询jobs

  • 还可以用jobs查看当前的任务

编辑

  • jobs 可以看到后台的任务

    • 我们可以切换任务到前台吗

将任务切换到前台

编辑

  • fg 可以

    • 将最后一个任务(3#job)
    • 切换到前台
  • 可以切2#job吗?

指定任务进行切换

  • 我们可以用 fg 加参数的方式

    • 把指定编号的进程恢复到前台
    • 注意前面的 1193、1527、1542 分别是他们的 pid

编辑

  • 这就是前后台切换

    • 用 ctrl + z 把当前进程切换到后台
    • 用jobs查询当前shell的后台任务
    • 用ps可以查看进程
    • 用kill可以结束进程
    • 用 ctrl + c 结束当前前台的进程
  • jobs这个词怎么来的呢?

jobs

  • 词源字典

    • 凯尔特语(gob)、(gop)
    • 原意就是口(the mouth)
    • 中古英语就变成(jobbe)

      • 一堆(lump)
      • 一口(mouthful)
    • 再演变而成一件工作

编辑

  • work

    • 是长时期稳定的工作
    • 全日制的工作
  • jobs

    • 是临时突发的工作
    • 零工
    • 偷窃也叫jobs
  • 如果两个jobs的话

    • 占用内存会变小吗?

两个进程

  • 我们开两个 show_time.py
  • PID 分别是 422、514

编辑

  • 然后观察到

    • 每个 python进程 实际分配差不多都是 9M(RSS)
    • 相互之间是独立的兄弟进程
    • 但是从逻辑上都属于zsh的子进程

      • 先运行的进程在非交换区的内存占用略高
  • 如果开多个xfce 进程情况又是如何呢?
  • 再打开几个xfce终端

进程层次关系

  • ps -elf

    • 拉到最后
    • 找zsh和上级的xfce4

编辑

  • 祖父是xfce4-terminal

    • 大伯是zsh(252)

      • 家里三个兄弟
    • 二伯是zsh(405)

      • 家里也是三兄弟
  • 就像一棵树

    • 可以用树的形式观察吗?

pstree

  • pstree -h 命令查看这棵树

编辑

  • 可以看到清晰地父子兄弟关系

总结

[oeasy]python0033_任务管理_jobs_切换任务_进程树结构_fg的更多相关文章

  1. Python进阶(5)_进程与线程之协程、I/O模型

    三.协程 3.1协程概念 协程:又称微线程,纤程.英文名Coroutine.一句话说明什么是线程:协程是一种用户态的轻量级线程. 协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存 ...

  2. Python进阶(2)_进程与线程的概念

    1 进程与线程相关概念 1.1 进程 进程定义: 进程就是一个程序在一个数据集上的一次动态执行过程.进程一般由程序.数据集.进程控制块三部分组成,是最小的资源管理单元 程序:用来描述进程要完成哪些功能 ...

  3. 操作系统(2)_进程管理_李善平ppt

    所有程序都有CPU和io这两部分,即使没有用户输入也有输出. CPU最好特别忙,io空闲无所谓. 程序/数据/状态 三个维度来看进程. 等待的资源可能是io资源或者通信资源(别的进程的答复). 一个进 ...

  4. Python笔记_第四篇_高阶编程_进程、线程、协程_4.协程

    1.协程的概念: 子程序或者子函数,在所有语言中都是层级调用,比如A调用B,再B执行的过程中又可以调用C,C执行完毕返回,B执行返回,最后是A执行完毕返回.是通过栈来实现的,一个线程就是执行一个自称, ...

  5. Python笔记_第四篇_高阶编程_进程、线程、协程_3.进程vs线程

    1.多任务的实现原理: 通常我们会设计Mater-Workder模式,Master负责分配任务,Worker负责执行任务,因此多任务环境下,通常是一个Master,多个Worker 2.多进程: 主进 ...

  6. Python笔记_第四篇_高阶编程_进程、线程、协程_1.进程

    1. 多任务原理: 现代操作系统,像win,max os x,linux,unix等都支持多任务. * 什么叫做多任务? 操作系统可以同时运行多个任务. * 单核CPU实现多任务原理? 操作系统轮流让 ...

  7. zabbix_监控_进程

        一.根据进程名称监控 1.创建Item(只能通过进程名.用户过滤进程)  http://www.2cto.com/os/201405/302249.html http://www.ithao1 ...

  8. C# Process类_进程_应用程序域与上下文之间的关系

    进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源.进程之间是相对独立的,一个进程无法直接访问另一个进程的数据(除非分布式),一个进程运行的失败也不会影响其他 ...

  9. C# Process类_进程管理器Demo

    Process用于管理计算机的进程,下面给出一个C#进程管理器的DEMO. namespace ProcessManager { public partial class Form1 : Form { ...

  10. python并发_进程_multiprocessing

    多进程基础, 主要是用了 multiprocessing模块 : 在一个python进程中开启子进程,start方法和并发效果. import time from multiprocessing im ...

随机推荐

  1. Java计算百分比保留整数

    1.Java计算百分比保留整数的方法步骤 在Java中计算百分比并保留整数,通常涉及以下步骤: (1)计算原始数值与基准数值的百分比(通常使用 (原始数值 / 基准数值) * 100 的公式). (2 ...

  2. C# 方块热力图

      这张图右侧,0 3 6...... 30表示每个数字出现的次数,左侧就是每个数字出现次数的方块颜色图. 具体的思路是,找两个颜色 渐变的画出右侧的色条. 计算所有数字的最大最小次数,然后用他们色条 ...

  3. 【u8】二开生成的专用采购发票结算后显示结算标志但是没有生成结算单的问题

    在表体 purbillvouchs 里有个字段 upsotype 上游单据类型 不能是空,如果是代管生成的发票要填写'vmiused', 如果是普通生成的发票要填写rd,还要写上 入库单号也就是普通挂 ...

  4. 开发中你不得不知的一个Git小技巧

    一. 背景 在工作中大家应会碰到需要频繁在两个分支中切换工作的情况,我们通常做法是利用git stash命令暂存当前工作区中的变更,然后git checkout到目标分支中工作,工作完成后回到刚刚分支 ...

  5. Android 12(S) MultiMedia Learning(三)MediaPlayer Native

    上一篇MediaPlayer中看到实现一个最简单的播放器只需要5个接口,接下来会看看这些接口实现内容 /************************************************ ...

  6. 自动化测试在 Kubernetes Operator 开发中的应用:以 OpenTelemetry 为例

    背景 最近在给 opentelemetry-operator提交一个标签选择器的功能时,因为当时修改的函数是私有的,无法添加单测函数,所以社区建议我补充一个 e2e test. 因为在当前的版本下,只 ...

  7. kettle从入门到精通 第三十七课 kettle 全量同步(数据量小)

    1.下图是一些常见的数据同步业务场景: 实时数据:对实时性要求很高,延迟在毫秒范围内.常见的有kafka/rabbitmq等消息中间件,mysql binlog日志,oracle归档日志等. 离线数据 ...

  8. 记一次 .NET某游戏币自助机后端 内存暴涨分析

    一:背景 1. 讲故事 前些天有位朋友找到我,说他们的程序内存会偶发性暴涨,自己分析了下是非托管内存问题,让我帮忙看下怎么回事?哈哈,看到这个dump我还是非常有兴趣的,居然还有这种游戏币自助机类型的 ...

  9. H5弹窗底层滑动

    H5弹窗底层滑动 背景 产品提出H5 弹出窗滑动时,底层页面也会跟随滑动,需要调整禁止底层滑动,增加用户体验. 问题产生原因 ios 滑动时有回弹效果 顶层元素滑动默认行为 解决办法 阻止元素的默认( ...

  10. anaconda里虚拟环境安装jupyter notebook

    安装jupyter notebook 打开anaconda prompt,进入虚拟环境 conda activate Pytorch_learning 下载安装jupyter notebook con ...