V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
helloworld12
V2EX  ›  问与答

› Linux 下如何查看系统各个进程挂掉的历史信息?

  •  
  •   helloworld12 · 2018-01-19 23:34:10 +08:00 · 3283 次点击
    这是一个创建于 2282 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我想知道为什么我的某个进程挂掉,是自己主动结束,还是资源耗尽被系统杀死之类的,或者是别人发送了 kill 指令

    有个相同的帖子

    有没有知道的?

    5 条回复    2018-01-20 12:17:01 +08:00
    helloworld12
        1
    helloworld12  
    OP
       2018-01-19 23:45:21 +08:00
    嗯, 看到一个关键词 coredump
    找找看 学习下
    sfqtsh
        2
    sfqtsh  
       2018-01-19 23:45:22 +08:00 via Android
    用 systemtap。
    sfqtsh
        3
    sfqtsh  
       2018-01-19 23:50:17 +08:00 via Android   ❤️ 2
    给你个 systemtap 的脚本,监控某进程接受到的所有信号:

    probe begin
    {
    printf("%-8s %-16s %-8s %-16s %6s %-16s\n",
    "SENDPID", "SENDNAME", "RECEPID", "RECENAME", "SIGNUM", "SIGNAME")
    }

    probe signal.send
    {
    if (uid() == 1234)
    printf("%-8d %-16s %-8d %-16s %-6d %-16s\n",
    pid(), execname(), sig_pid, pid_name, sig, sig_name)
    }
    helloworld12
        4
    helloworld12  
    OP
       2018-01-20 02:09:10 +08:00
    @sfqtsh 谢谢啦
    sfqtsh
        5
    sfqtsh  
       2018-01-20 12:17:01 +08:00 via Android
    @helloworld12 上面那个是根据用户 id 过滤的,可以将之改为 sig_pid。。。或者根据进程名称过滤:
    if(isinstr(pid_name, "abcd"))
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2960 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 03:14 · PVG 11:14 · LAX 20:14 · JFK 23:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.