Почему не был должен я “ставить будущее компании” на сценариях оболочки? [закрытый]

Tyr this: (Статистика индекса / статистика использования)

SELECT
    t.tablename,
    indexname,
    c.reltuples AS num_rows,
    pg_size_pretty(pg_relation_size(quote_ident(t.tablename)::text)) AS table_size,
    pg_size_pretty(pg_relation_size(quote_ident(indexrelname)::text)) AS index_size,
    CASE WHEN indisunique THEN 'Y'
       ELSE 'N'
    END AS UNIQUE,
    idx_scan AS number_of_scans,
    idx_tup_read AS tuples_read,
    idx_tup_fetch AS tuples_fetched
FROM pg_tables t
LEFT OUTER JOIN pg_class c ON t.tablename=c.relname
LEFT OUTER JOIN
    ( SELECT c.relname AS ctablename, ipg.relname AS indexname, x.indnatts AS number_of_columns, idx_scan, idx_tup_read, idx_tup_fetch, indexrelname, indisunique FROM pg_index x
           JOIN pg_class c ON c.oid = x.indrelid
           JOIN pg_class ipg ON ipg.oid = x.indexrelid
           JOIN pg_stat_all_indexes psai ON x.indexrelid = psai.indexrelid )
    AS foo
    ON t.tablename = foo.ctablename
WHERE t.schemaname='public'
ORDER BY 1,2;
5
задан Jon Ericson 20 August 2008 в 20:07
поделиться

8 ответов

Используя сценарии оболочки прекрасен, когда Вы используете их преимущества. Моя компания имеет некоторые программные коммутаторы класса 5 и код обработки вызовов, и интерфейс конфигурирования записан в Java. Все остальное записано в KSH - дампы DB для резервных копий, сокращения, вращения файла журнала и всего автоматизированного создания отчетов. Я утверждал бы, что все те функции поддержки, хотя не непосредственно связанный с путем вызова, в жестком реальном времени. Особенно взаимодействие DB. Если бы что-то пошло не так, как надо с кодом взаимодействия DB и вывело таблицы маршрутизации вызова, то он мог бы разорить нас.

Но ничто никогда не идет не так, как надо, потому что сценарии оболочки являются идеальным языком для материала как это. Они являются маленькими, они хорошо поняты, управление файлами является их силой, и они стабильны. Это не похоже на KSH09, будет полным, переписывают, потому что кто-то думает, что это должно скомпилировать в код байта, таким образом, это - стабильный интерфейс. Откровенно говоря, интерфейс конфигурирования, записанный в Java, идет, wonky справедливо часто и сценарии оболочки никогда не портили это, я могу помнить.

14
ответ дан 18 December 2019 в 05:37
поделиться

Очевидно, это - немного соломенный человек для меня для наезда. Я действительно интересуюсь тем, почему люди полагают, что сценариев оболочки нужно избежать в "важнейших приложениях", но я не могу думать о неопровержимом доводе.

Например, я видел (и записал), некоторые ksh сценарии, которые взаимодействуют с базой данных Oracle с помощью SQL*Plus. К сожалению, система не могла масштабироваться правильно, потому что запросы не использовали, связывают переменные. Ударить один по сценариям оболочки, правильно? Неправильно. Проблема не была со сценариями оболочки, а с SQL*Plus. на самом деле проблема производительности ушла, когда я заменил SQL*Plus сценарием Perl, который соединился с базой данных и использовал, связывают переменные.

Я могу легко предположить помещать сценарии оболочки в относящееся к космическому кораблю программное обеспечение полета, была бы плохая идея. Но Java или C++ могут быть одинаково плохим выбором. Лучшим выбором был бы любой язык (блок?) обычно используется с этой целью.

Факт при использовании какой-либо разновидности Unix Вы используете сценарии оболочки в важнейших ситуациях, принимающих Вас, продумывают начальную загрузку, в жестком реальном времени. Когда сценарий должен сделать что-то, в чем оболочка не особенно хороша, Вы помещаете ту часть в подпрограмму. Вы не выводите оптовую торговлю сценарием.

5
ответ дан 18 December 2019 в 05:37
поделиться

Я отчасти думаю, что статья указывает на действительно хороший список причин если не для использования сценариев оболочки - с единственным маркером в жестком реальном времени, Вы указываете на то, чтобы быть большим количеством заключения на основе всех других маркеров.

После этих слов я думаю причина, Вы не хотите создавать важное приложение на сценарии оболочки, то, потому что, даже если ни один из других пунктов маркированного списка не применяется сегодня, любое приложение, которое будет сохраняемым в течение времени, разовьется на грани бита бывшего по крайней мере одной из тех потенциальных ловушек в какой-то момент..... и нет ничего, что Вы собираетесь быть действительно способными делать с этим без него являющийся полным, переделывают для предложения фиксации.... жалея, что Вы не использовали что-то больше промышленной силы с начала.

6
ответ дан 18 December 2019 в 05:37
поделиться

Сценарии - ничто более или менее, чем компьютерные программы. Некоторые утверждали бы, что сценарии менее сложны. Эти те же люди будут обычно признавать, что можно написать сложный код в языках сценариев, но что эти сценарии больше являются действительно не сценариями, но законченными программами, по определению.

Без разницы.

Корректный ответ, по-моему, "он зависит". Который, между прочим, является тем же ответом на обратный вопрос того, необходимо ли надеяться на скомпилированные исполняемые файлы для важных приложений.

Хороший код хорош, и плохой код плох - записан ли он как сценарий Bash, Windows CMD file, в Python, Ruby, Perl, Основном, Forth, Ada, Паскаль, язык Common LISP, Кобол, или скомпилирован C.

Что не означает, что выбор языка не имеет значения. Существуют очень серьезные основания, иногда, для выбора конкретного языка или для компиляции по сравнению с интерпретацией (производительность, масштабируемость, возможность, безопасность, и т.д.). Но при прочих равных условиях я доверял бы сценарию оболочки, записанному великим программистом по эквивалентной программе C++, записанной doofus любой день недели.

5
ответ дан 18 December 2019 в 05:37
поделиться

Это - вероятно, сценарии оболочки, что справка берет компанию в будущее. Я знаю только с точки зрения программирования, что потратил бы впустую много времени, делая повторяющиеся задачи, которые я делегировал к сценариям оболочки. Например, я знаю большинство команд подверсии для командной строки, но если я могу смешать все те команды в один сценарий, я могу стрелять по желанию, я экономлю время и умственную энергию.

Как несколько других людей сказали, что язык является фактором. Для моих коротких шагов don't-want-to-remember и программ связующего звена я абсолютно доверительный мои сценарии оболочки и полагаются на них. Это не означает, что я собираюсь создать веб-сайт, который выполняет удар на бэкенде, но я буду, конечно, использовать bash/ksh/python/whatever, чтобы помочь мне генерировать скелетный проект и справиться с моей упаковкой и развертыванием.

2
ответ дан 18 December 2019 в 05:37
поделиться

Я держал бы пари, что автор показывает, что они чувствуют себя неловко из-за определенных аспектов qualtiy wrt сценарии оболочки. Кто сценарии Bash модульных тестов, например.

Также сценарии скорее в большой степени вместе с базовой операционной системой, которая могла быть чем-то вроде отрицательного момента.

0
ответ дан 18 December 2019 в 05:37
поделиться

Когда я считал кавычку thise, я фокусируюсь на части "приложений", а не части "в жестком реальном времени".

Я считал его, что удар не для записи приложений, которые это для того, чтобы, ну, в общем, написать сценарий. Настолько уверенный, Ваше приложение могло бы иметь некоторые сценарии обслуживания, но не идет, пишущий critical-business-logic.sh потому что другой язык, вероятно, лучше для материала как этот.

2
ответ дан 18 December 2019 в 05:37
поделиться

Сценарии являются несоответствующими для реализации определенных важнейших функций, так как у них должны быть и +r и +x полномочия функционировать. Исполняемые файлы должны только иметь +x.

То, что сценарий имеет +r, означает, что пользователи смогли делать копию сценария, редактировать/ниспровергать его и выполнять их отредактированную версию Сумасшедшего Яйца.

-2
ответ дан 18 December 2019 в 05:37
поделиться