美文网首页
如何得到一个已运行 service 的 log 输出?

如何得到一个已运行 service 的 log 输出?

作者: 爱吃糖饼 | 来源:发表于2017-04-10 15:38 被阅读0次

    Q: 一个已经在运行的 service,并没有在文件中保存自己的log,如何得到它的输出?
    A: 借助 gdb,可以将该进程的 fd 任意修改。

    1. gdb -> attach $pid -> call open("'/dev/pts/20'", 66, 0666) // 20 是dst,新的位置
    2. /proc/$pid/fd/ 下,可以看到一个新的 fd 指向 20,比如是 6
    3. call dup2(6, 1); call dup2(6, 2) // dup to : 把 fd6 复制到 fd1, 2 (标准输出 & error)
    4. call close(6)
    5. deatch; quit;

    这样做以后,你就会在 pts/20 中看到这个进程的输出了。

    (再严谨一点的话,可以在 第 2 步后,把旧的 dup 出来,然后在第 4 步的时候 close 掉。)

    相关文章

      网友评论

          本文标题:如何得到一个已运行 service 的 log 输出?

          本文链接:https://www.haomeiwen.com/subject/hnwsattx.html