Как активировать sh DTrace Provider?
Я узнал о патчах (и updates) для двоичного файла x86 sh в 2007 году для поддержки поставщика sh DTrace.
Однако я не могу найти никаких проб на OS X. Я проверяю:
$ sudo dtrace -l | grep command-entry
Смотрите: /bin/sh DTrace Provider на сайте Oracle (в той же статье на блог)
Может быть, потому что мой sh
совпадает с GNU bash?
$ /bin/sh --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)
Где эти зонды были реализованы, как я могу их найти или как я могу их активировать?
Были ли реализованы только на Solaris?
Ответы
Ответ 1
Патча, на который вы ссылаетесь, была специфичной для оболочки bourne на Solaris, и насколько я знаю, что она никогда не была перенесена на другие оболочки.
В истории фиксации подсветки (née OpenSolaris) мы видим, что /bin/sh
было изменено как символическая ссылка на ksh93
в commit ead1f93, 2 марта 2010 года. Учитывая, что сообщение в блоге Alan датируется 2007 годом, это не было включено в Solaris 10, по крайней мере, не изначально, поскольку Solaris 10 была выпущена в 2005 году. Возможно, это одно из обновлений 2007 года но я вроде как сомневаюсь в этом. Из существующего кода я даже не могу найти, что предоставил /bin/sh
перед переключением на ksh, что может означать, что это был один из закрытых битов.
В любом случае, он никогда не был частью релиза освещения, и я не вижу ссылок на dtrace-зонды для command-entry
в истории событий освещения. Если Алан или кто-то другой, близкий к этому вопросу, не выскажусь, он, вероятно, потеряет время.
Итак, насколько я могу судить, эти патчи никогда не включались в выпущенный продукт от Sun или иначе. Это почти наверняка придется перепроектировать с нуля на любую существующую оболочку с открытым исходным кодом.
Ответ 2
Я никогда не добавлял его в оболочку bourne в публичной Solaris (хотя я получил одобрение PSARC для него), так как во время тестирования я обнаружил некоторые основные хиты производительности в том, что вилки оболочки bourne. Чтобы решить эту проблему, мне пришлось бы перенести ее на использование posix_spawn(). Учитывая, что мы отошли от использования этой оболочки в Solaris 11, это был объем работы, который был бы довольно бесплодным. Я не отказался от других снарядов, но это не один из моих ближайших приоритетов.
Перемещение зондов в другую оболочку должно быть довольно безболезненным, за исключением принятия решения о том, что нужно возвращать как предыдущее значение в "variable-assign", когда у нас есть составные переменные.