【发布时间】:2018-01-27 10:12:27
【问题描述】:
假设如下:
- 我在 docker 容器中有一个程序
myprogram -
我正在使用
运行 docker 容器docker run --privileged=true my-label/my-container -
在容器内 - 程序正在运行:
strace -f -e trace=desc ./myprogram
我看到的是strace(尽管有-f)并没有跟随所有的子进程。
我看到strace的以下输出
[pid 10] 07:36:46.668931 write(2, "..\n"..., 454 <unfinished ...>
<stdout of ..>
<stdout other output - but I don't see the write commands - so probably from a child process>
[pid 10] 07:36:46.669684 write(2, "My final output\n", 24 <unfinished ...>
<stdout of My final output>
我想看的是其他write 命令。
现在我应该看到其他 write 命令 - 因为我正在使用 -f。
我认为正在发生的事情是,在 docker 内部运行会使进程处理和安全性有所不同。
我的问题是:strace -f 在 docker 容器中运行时是否会有所不同?
请注意,此应用程序在 2 秒内启动和停止 - 因此跟踪工具必须遵循应用程序生命周期 - 就像 strace 一样。连接到服务器后台进程将不起作用。
【问题讨论】: