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