【问题标题】:strace init process (PID 1) in linuxlinux中的strace init进程(PID 1)
【发布时间】:2016-01-26 17:26:50
【问题描述】:

strace manpage 说:

在 Linux 上,虽然会令人兴奋,但跟踪 init 进程是 禁止。

我检查了同样的,它不允许:

$  strace -p 1
attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted

为什么不可能?甚至 ptrace 联机帮助页对跟踪 init 进程也有相同的说明。这些工具不是安全的,还是只是 init 进程被认为太特殊以至于没有其他进程(strace/ptrace)可以发出信号。

【问题讨论】:

  • 该链接不涉及初始化进程。我知道如果该进程正在使用 gdb/valgrind 运行,则无法对其进行跟踪。但这是另一种情况。
  • 只是一个半知半解的猜测,但很有可能init 进程由于它的生成方式(例如它没有有一个父进程,并且由于类似原因,进程元数据的其他位可能很奇怪),这意味着strace 必须对事物进行一系列特殊处理才能与init 一起工作,并且迄今为止,没有人看到跟踪init 来实现代码的足够价值。
  • @twalberg:我无意strace init,只是好奇为什么它不能被追踪。我检查了strace 的工作。为了跟踪一个进程,它成为该进程的父进程,并且可以向它发送信号。可能不允许以这种方式弄乱init

标签: linux kernel strace


【解决方案1】:

sudo strace -p 1 为我工作(您需要 strace 的 root 权限)
work 允许调试init。在 2.4.37 中,您不能将 attach 转换为 init,但在某些内核中,此条件已被删除 - 我发现 3.8 kernel

编辑:在我的 Kubuntu 15.10 上,strace 人中没有 On Linux, exciting as it would be, tracing the init process is forbidden.。更新人?

【讨论】:

  • 一点说明:strace 一般不需要root权限,但是需要root权限来跟踪其他用户的进程。
猜你喜欢
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多