[oeasy]python0033_任务管理_jobs_切换任务_进程树结构_fg
查看进程
回忆上次内容
上次先进程查询
ps -elf
查看所有进程信息ps -lf
查看本终端相关进程信息杀死进程
kill -9 PID
给进程发送死亡信号运行多个
python3 show_time.py
的话各个进程独立
python3 show_time.py
大概 8+M各占内存
这些进程之间是什么关系呢?🤔

具体查询
zsh进程相关的 3 个进程
查询进程的ps进程
输出时间的python程序
zsh(shell本身)进程
zsh(当前的 shell 环境)
/usr/bin/python3 /home/shiyanlou/sleep.py
ps -lf

这进程之间有父子关系
父子关系
pid
是指进程的id
process id
ppid
是指 父进程 idparent process id
ppid
是pid
的爸爸

ps
和python3
都是zsh
的子进程python3 这个进程占内存是 SZ
总共 10+M
4860 个 Page
每个 page 大概 4K

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
词源字典
一堆(lump)
一口(mouthful)
凯尔特语(gob)、(gop)
原意就是口(the mouth)
中古英语就变成(jobbe)
再演变而成一件工作

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 命令查看这棵树

可以看到清晰地父子兄弟关系
总结
进程前后台切换
fg %1
可以把指定的进程切回前台ctrl+z把当前进程切换到后台并暂停
jobs
查看所有作业用
fg
可以把进程再切回前台用
bg
可以让进程在后台运行进程查询
ps -elf
查看所有进程信息ps -lf
查看本终端相关进程信息kill -9 PID
给进程发送死亡信号pstree -h
可以查看进程树运行多个
python3 sleep.py
的话各个进程独立
python3 sleep.py
大概 7M各占内存
这个切进程很好用
不过运行进程的时候总是满屏刷时间
可以固定在屏幕的某个位置刷新时间吗?🤔
我们下次再说!*
蓝桥->https://www.lanqiao.cn/courses/3584
github->https://github.com/overmind1980/oeasy-python-tutorial
gitee->https://gitee.com/overmind1980/oeasypython
视频->https://www.bilibili.com/video/BV1CU4y1Z7gQ 作者:oeasy