关于python:oeasypython0031挂起进程恢复进程进程切换

6次阅读

共计 1750 个字符,预计需要花费 5 分钟才能阅读完成。

查看过程

回顾上次内容

  • 上次批改了 $PATH 门路

    • 把以后用户 shiyanlou 的宿主文件夹 ~

      • 增加到 $PATH
    • 这样 sleep.py 就能够被找到
    • 于是就能够被执行了
  • 还能够把配置 $PATH 的脚本

    • 放到 zsh的配置文件(~/.zshrc) 中
    • 配置 ~/.zshrc 就能够

      • 设置 zsh 环境下默认的 $PATH
  • 在以后门路运行 sleep.py

    • python 程序第 1 行

      • 申明打开方式为 python3
    • /usr/bin/python3

      • 从硬盘调用到内存

        • 成为一个过程

          • 一直输入工夫
        • ctrl+c完结过程
  • 我想看到 python3 这个过程

    • 可能吗?🤔

进行搜寻

  • 如果我想查看过程

    • 也须要运行相应的过程查看命令ps
    • 然而如果 sleep.py 继续输入工夫
    • 我是没有方法运行 ps 命令的
  • 我须要把 sleep.py 转到后盾运行

    • 而后查问过程信息

切到后盾

  • 切换的办法比较简单

    • ctrl + z

      • 以后过程 前台
      • 切换到 后盾 并暂停
    • 简略来说就是不给他用 cpu 了
    • suspended(挂起了)
  • 能够把后盾过程切换回前台吗?

前后台切换

  • 所谓把 过程 切换到 后盾

    • 就是进行一直把工夫输入到规范输入流

      • sleep.py 这个过程从前台切换到后盾并暂停
    • 而且把控制权交回给 shell

      • 能够持续输出命令了
  • 那是否反过来?

    • 把过程从 后盾(background)
    • 切换到 前台 (foreground) 呢?
  • fg

    • 怎么了解 fg 呢?

fg

  • foreground 的意思就是

    • 离观察者更近的前景
  • fore 的意思是后面的

    • before 在后面的
    • first 最后面的第一个
    • former 已经的
    • forth 向前
    • forward 向后退
    • far 后退的太多了就远了
    • further 比远还要进一步的
    • 象声词
    • 词根来自 *per

*per

  • 象声词

    • 来自于投掷
  • pro- 词根

    • prohibit = pro + forbid 当时禁止
    • provide = pro + view 当时看过
    • promise = pro + mission 事先承诺使命
    • promote 促成
    • profit 利润
    • project 投影
    • process 步骤、停顿
  • 在计算机中

    • process 也指过程
    • 内存外面的一段空间

foreground

  • foreground(前台)

    • fg 命令把 后盾 过程放回 前台
    • 把挂起的过程从新又放到前台
    • cpu 又能够给这个过程用了
  • 然而这个我怎么晓得他到后盾是否暂停了呢?

挂起

  • 将 show_time.py 挂起后

    • 从新编辑 show_time.py
    • 每行输入一个数字
    • 数字自增
#!/usr/bin/python
i = 0
import time
while True:
    i = i + 1
    print(i, "===", time.asctime())
    time.sleep(1)
  • 保留并退出
  • 复原方才放到后盾并暂停的 show_time.py
  • 没有在后面加上标号数字
  • 这是为什么呢?🤔
  • 明明曾经保留批改了呀?🤔

过程

  • 因为咱们启动 python3 show_time.py 的时候

    • 是在批改之前
    • 从硬盘读取 show_time.py

      • 放入内存的时候
    • 还没有被批改成

      • 要输入数字编号
    • 这个过程在内存中

      • 始终还是原来调用时的样子
      • 也就是批改前的样子
  • 咱们在硬盘上文件的批改

    • 对曾经运行了的过程不起作用
  • 那怎么办?

重启过程

  • 先将过程放回前台

    • ctrl + c
    • 完结这个过程
  • 最初从新运行

    • python3 show_time.py
  • 这样硬盘中批改了的 python 文件

    • 就会被作为新过程从新载入内存
    • 新批改就失效了
  • 这个ctrl + z
  • 真的会暂停过程吗?

暂停

  • 运行程序后

    • 挂起过程
    • 期待一段时间
    • 复原过程
  • 还是从 5 开始

    • 没有在前面偷偷跑
  • 如果我就想让这个过程

    • 在后盾偷偷跑呢?

bg

  • ctrl + z 挂起过程

    • 而后运行 bg
  • 程序持续跑起来
  • 而且一直输入到规范输入流
  • 甚至连ctrl + c 都无奈完结过程了
  • 这可怎么办呢?

总结

  • 过程前后台切换

    • ctrl + z 把以后过程切换到后盾并暂停
    • fg 能够把过程再切回前台
    • bg 能够让过程在后盾继续运行
  • 然而问题就是基本停不下来!
  • process 真的就

    • 一直 pro – pro – pro
    • 或者说 foreword – foreword – foreword 跑起来了
  • 我想让他后盾轻轻跑,能够吗?🤔
  • 咱们下次再说!👋
  • 蓝桥 ->https://www.lanqiao.cn/course…
  • github->https://github.com/overmind19…
  • gitee->https://gitee.com/overmind198…
  • 视频 ->https://www.bilibili.com/vide… 作者:oeasy
正文完
 0