V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
zhuweiping
V2EX  ›  Python

怎么在 Python 进程收到 SIGTERM 信号时记录下发出信号的进程的 pid?

  •  
  •   zhuweiping · Jul 18, 2019 · 2707 views
    This topic created in 2479 days ago, the information mentioned may be changed or developed.

    最近测试环境遇到个问题,用 Python 服务老是被 SIGTERM 信号终止了,已经基本排查了是服务自己把自己干掉了,所以想用 python signal 模块捕一下 SIGTERM 信号,但是还有找到能记录下 SIGTERM 信号来自哪个进程的方法,大家有没有做过类似的功能呀,求教。或者能另辟蹊径分析到 SIGTERM 来源的方法也欢迎赐教。 感谢。

    11 replies    2019-07-30 13:01:27 +08:00
    rrfeng
        1
    rrfeng  
       Jul 18, 2019 via Android
    不能。不可能的。
    neoblackcap
        2
    neoblackcap  
       Jul 18, 2019
    我记得 signal 模块也是很简单地封装一下系统信号处理的回调而已。
    你这样的情况啊,用 bpftrace 试试看看?
    corvofeng
        3
    corvofeng  
       Jul 18, 2019 via Android
    你有看内核日志吗, 说不定被内核杀的
    iPhoneXI
        4
    iPhoneXI  
       Jul 18, 2019 via Android
    遇到过类似问题,某 C 扩展出现了 SIGSEGV,日志里就能发现了
    iPhoneXI
        5
    iPhoneXI  
       Jul 18, 2019 via Android
    看错了,SIGTERM 应该还不一样,忽略上一条
    zhuweiping
        6
    zhuweiping  
    OP
       Jul 18, 2019 via Android
    @rrfeng 好的,感谢
    zhuweiping
        7
    zhuweiping  
    OP
       Jul 18, 2019 via Android
    @neoblackcap 是的,signal 封得比较简易,我试一下你说的 bprtrace,感谢指教!
    zhuweiping
        8
    zhuweiping  
    OP
       Jul 18, 2019 via Android
    @corvofeng 看过,没有线索😬
    zhuweiping
        9
    zhuweiping  
    OP
       Jul 18, 2019 via Android
    @iPhoneXI 好的,感谢交流
    LUXURISE
        10
    LUXURISE  
       Jul 27, 2019
    如果是用的 python3.3 及以上版本的话,可以使用 signal.sigwaitinfo
    返回结果中包含 siginfo_t 这个数据结构,其中有 si_pid,si_uid 字段,分别为信号发出的 pid 和 用户 id
    我简单测试了一下,可以拿到 pid
    zhuweiping
        11
    zhuweiping  
    OP
       Jul 30, 2019 via Android
    @LUXURISE 感谢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2688 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 14:33 · PVG 22:33 · LAX 07:33 · JFK 10:33
    ♥ Do have faith in what you're doing.