V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  mythmgn  ›  全部回复第 2 页 / 共 3 页
回复总数  44
1  2  3  
2019-05-29 10:36:24 +08:00
回复了 mythmgn 创建的主题 Python [库推荐] 自荐 Python 开源的基础库 CUP 给大家
最近在基于 CUP 写踩坑之旅, 欢迎大家查看: 附一个昨凌晨写的


# Python 踩坑之旅进程篇其三 pgid 是个什么鬼

## 1.1 踩坑案例

pid, ppid 是大家比较常见的术语, 代表进程号,父进程号. 但 pgid 是个什么鬼?

了解 pgid 之前, 我们先复习下:

- [进程篇其一]( https://mp.weixin.qq.com/s?__biz=MzUxMjIzODQ3Mg==&mid=2247483675&idx=1&sn=4338aef5e4268d01d9197cdbb515b301&chksm=f96637fcce11beea8bbbb617359152311e968b0023f844d90164943235db412286572dc5973e&token=863711821&lang=zh_CN#rd)
- 里面场景是: 一个进程通过`os.system`或者`Popen`家族启动子进程
- 后通过杀死父进程的方式无法杀死它的连带子进程
- 我们通过其他方式进行了解决

这个场景还有个后续就是:

- 如果这个子进程还有孙子怎么办?
- 它还有孙子的孙子怎么办?

这个就是今天我们遇到的坑, 怎么处理孙子进程. 大家注意, 不仅是 Python 会遇到这个问题, 其他语言包括 Shell 都一样会遇到这种"孙子"进程怎么进程异常处理的问题.

## 1.2 填坑解法

本期的坑位解法其实有两种, 第一种比较暴力, 简称穷尽搜索孙子法.

a. 穷尽搜索孙子法, 代码示例

关键点:

- 使用 cup.res.linux 中的 Process 类, 获得该进程所有的子孙进程
- 使用 kill 方法全部杀死

```python
from cup.res import linux
pstatus = linux.Process(pid)
for child in pstatus.children(recursive=True):
os.kill(child, signal.SIGKILL)
```

b. 获得该进程的 PGID, 进行 kill 操作

b1. 先讲个 shell 操作的做法, 使用 ps 获取进程的**pgid**, 注意**不是**pid

```bash
# 以 mysqld 为例, 注意 pgid 项
ps -e -o uid,pid,gid,pgid,cmd|grep mysql
```

结果:

- 注意其中第三列, 该进程和子进程都使用了同样的 pgid **9779**

9790 0 9779 /bin/sh /usr/bin/mysqld_safe --datadir=/home/maguannan/mysql/mysql/....

10171 501 9779 /home/maguannan/bin/mysqld --basedir=/home/maguannan/mysql/....

- 通过`kill -9 -9779`的方式可以杀死该 pgid 底下的所有**子孙**进程

b2. 在讲 Python 里的处理方式

```python
import os
import signal
from cup.res import linux
pstatus = linux.Process(pid)
os.killpg(pstatus.getpgid(), signal.SIGKILL)
```
addr info 挂了, 可能是连接 socket 出了问题. 搞个重试什么的吧
2019-03-19 11:02:50 +08:00
回复了 crazyjin 创建的主题 Python Django vs Flask vs Tornado
我是先看的 django 然后看的 flask. 后来就再也不想用 django 了
2019-03-14 11:01:44 +08:00
回复了 mythmgn 创建的主题 Python [库推荐] 百度开源的 Python 基础库 Cup 2.0.3 发布, 推荐给大家
@NoAnyLove RW lock 是有 bug 吗? 欢迎在 github 提 patch :).

近期, 重点在 py2 -> py3 兼容性. 估计要多走些路了.
2019-03-08 16:23:26 +08:00
回复了 mythmgn 创建的主题 Python [库推荐] 百度开源的 Python 基础库 Cup 2.0.3 发布, 推荐给大家
@WongYukloong 应该是近期两会 github 不稳定, 官网是在 github 上的.
2019-03-06 17:30:53 +08:00
回复了 mamahaha 创建的主题 程序员 可以通过哪些方式证明一段代码的版权是你的
开源到合适的平台比如 github + license 啊.
MAC BOOK 合盖 开盖子, 开箱即用. 1 个月不带关机, 没啥问题. 除了 outlook 不好用(可以用网页版), 其他都挺好的. 也不用担心病毒\乱七八糟的东西.


--------------
https://github.com/baidu/CUP 百度开源 Python 基础库 CUP,欢迎大家了解、使用、一起建设
2019-03-06 11:00:28 +08:00
回复了 mythmgn 创建的主题 Python [库推荐] 百度开源的 Python 基础库 Cup 2.0.3 发布, 推荐给大家
@tisswb 是不是开会开的. github 被偶尔墙了? 问了很多人, 访问官网都没问题. 和地区 /dns 有关系么?
2019-03-05 17:19:26 +08:00
回复了 WinG 创建的主题 Python Python 怎么同时打开几次同一个.py 文件
1. 简单写着玩就用 threading 就可以

2. 如果想正经写, 可以考虑线程池.

cup 的线程池满足你要求:

https://github.com/baidu/CUP/blob/master/cup/services/threadpool.py

3. 或者用异步 shell
cup.shell.oper 中的 ShellExec

看你的选择吧
屌丝聚居地回龙观买的 天天堵车堵死 配套学校不太好 医院最近几年到是起来了.
2019-03-05 10:55:51 +08:00
回复了 ob 创建的主题 奇思妙想 帮腾讯想到一个创收的点子。
网盘做大了以后, 成本之高, 投入产出比严重不符. 得变现逻辑合理才行


----------
https://github.com/baidu/CUP 百度开源 Python 基础库 CUP,欢迎大家查看、使用、一起建设
2019-03-05 10:48:27 +08:00
回复了 zhongchengyong 创建的主题 程序员 人为什么会没有了锐气和活力?
自己的感觉是:

1. 如果混吃等死, 多少岁都没锐气.

2. 如果一直努力, 但是只顾埋头干活, 忘记抬头看路. 费了 200 的劲, 只有 20 的收成. 这个时候会觉得疲惫没有锐气.


埋头努力+抬头看路结合, 定期循环 review roadmap, 工作了快 10 年, 依然觉得活力满满
2019-03-05 10:43:40 +08:00
回复了 goodspb 创建的主题 程序员 大家觉得工作的地方和住的地方路程多长幸福感会最高?
每天经过大家调侃的 制约互联网发展的 "后厂村路". 开车不堵 20 分钟到, 堵车 40-60min. 经常堵车到怀疑人生, 很烦躁.

去年末自从买了自行车, 一切都那么顺畅起来. 9 公里, 32 分钟. 一点不费劲, 还顺带瘦了 7-10 斤
2019-03-05 10:40:17 +08:00
回复了 Deteriorator 创建的主题 Python Python 中怎么使用 Linux 杀死进程的命令?
@Deteriorator

1. 最好养成习惯把 grep 进程 filter 掉

ps -ef|grep xxx|grep -v grep

2. 如果是个 baselib, 最好还把一些 vim emacs vi tail more less 常见的编辑器也 grep -v filter 掉


防止误杀.
肯定要做序列化和反序列化. 如果数据量大, 考虑下有数据压缩的结构什么的. 比如 google 的 protobuf
2019-03-05 10:28:59 +08:00
回复了 mythmgn 创建的主题 Python [库推荐] 百度开源的 Python 基础库 Cup 2.0.3 发布, 推荐给大家
哈哈, 新东西确实需要 py3. 大家稍等, py3 确实需要进行兼容性建设. 也欢迎有时间和精力的一起来搞 py3 的兼容
2019-03-04 17:48:37 +08:00
回复了 mythmgn 创建的主题 Python [库推荐] 百度开源的 Python 基础库 Cup 2.0.3 发布, 推荐给大家
@jingxyy 预计在 19 年 H1 末支持, 由于之前 py2 是内部主流, py3 没那么强烈. 近期诉求越来越多, 已在计划中了
2019-03-04 17:39:00 +08:00
回复了 mythmgn 创建的主题 Python [库推荐] 百度开源的 Python 基础库 Cup 2.0.3 发布, 推荐给大家
@lihongjie0209 看基础功能下面的, 通用服务 /快速构建 Python Service/网络异步库
2019-03-04 17:36:44 +08:00
回复了 mythmgn 创建的主题 Python [库推荐] 百度开源的 Python 基础库 Cup 2.0.3 发布, 推荐给大家
@ninestep 使用的 github 服务, 没挂呀.
2019-03-04 17:36:14 +08:00
回复了 mythmgn 创建的主题 Python [库推荐] 百度开源的 Python 基础库 Cup 2.0.3 发布, 推荐给大家
@lihongjie0209 运维不是主要场景, 辅助构建 python service 是主要目的. 看下 services 相关场景
1  2  3  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3377 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 23ms · UTC 04:45 · PVG 12:45 · LAX 20:45 · JFK 23:45
Developed with CodeLauncher
♥ Do have faith in what you're doing.