【问题标题】:How to activate sh DTrace Provider?如何激活 sh DTrace Provider?
【发布时间】:2016-07-29 13:03:45
【问题描述】:

我发现 patches(和 updates)在 2007 年用于支持 sh DTrace 提供程序的 x86 sh 二进制文件。

但是我在 OS X 上找不到任何探测器。我正在检查:

$ sudo dtrace -l | grep command-entry

请参阅:/bin/sh DTrace Provider 在 Oracle 网站(blog 上的同一篇文章)

可能是因为我的sh 和 GNU bash 一样?

$ /bin/sh --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)

这些探测器是在哪里实施的,如何找到它们或如何激活它们?

是否只在 Solaris 上实现?

【问题讨论】:

    标签: macos shell sh dtrace probe


    【解决方案1】:

    我从未将它添加到公共 Solaris 中的 bourne shell(尽管我获得了 PSARC 的批准),因为在测试时我发现 bourne shell fork 的方式有一些主要的性能影响。为了解决这个问题,我必须将其迁移到使用 posix_spawn()。鉴于我们在 Solaris 11 中不再使用这个 shell,这是一项毫无结果的工作。我没有放弃去其他贝壳,但这不是我的当务之急。

    当我们有复合变量时,除了决定在“variable-assign”中作为先验值返回什么之外,将探针移动到另一个 shell 应该很轻松。

    【讨论】:

      【解决方案2】:

      您提到的补丁是特定于 Solaris 上的 bourne shell 的,据我所知,它从未被移植到其他 shell。

      在 illumos(née OpenSolaris)提交历史记录中,我们可以看到 /bin/sh 在 2010 年 3 月 2 日提交 ead1f93 中更改为指向 ksh93 的符号链接。考虑到 Alan 的博客文章的日期为 2007 年,这不包括在 Solaris 10 中,至少自 2005 年发布 Solaris 10 以来最初没有。它可能在 2007 年之后的更新之一中,但我有点怀疑。从现有代码中,我什至找不到在切换到 ksh 之前提供的/bin/sh,这可能意味着它是封闭位之一。

      无论哪种方式,它都不是任何 illumos 版本的一部分,而且我在 illumos 提交历史中没有看到任何对 command-entry 的 dtrace 探针的引用。除非艾伦或其他与此事关系密切的人能说出来,否则它可能已经被时间浪费了。

      总之,据我所知,这些补丁从未包含在 Sun 或其他公司发布的任何产品中。几乎可以肯定,它必须在任何现有的开源 shell 上从头开始重新实现。

      【讨论】:

        猜你喜欢
        • 2016-09-29
        • 2017-09-25
        • 2021-11-28
        • 2011-01-13
        • 2019-07-13
        • 2012-01-27
        • 1970-01-01
        • 2019-11-02
        • 2023-03-08
        相关资源
        最近更新 更多