Самый универсальный язык сценариев для Linux?

Ваш вопрос состоит из тонн дополнительных вопросов, которые, вероятно, нужно спросить индивидуально. Однако для Вашего конкретного вопроса того, как знать, работает ли mysql:

Я предложил бы htop (sudo apt-get install htop) контролировать задачи использования/уничтожать процессов/RAM, в универсальном случае. Как вершина, но намного лучше.

Для конкретного случая наблюдения, если Ваш сервер работает, посмотрите на sudo /etc/init.d/service_name command, где сервис является mysql/apache2/nginx/postgresql/ssh/ufw. (введите ls /etc/init.d видеть больше полного списка), и команда является одним из, начинать/останавливаться/перезапускать/состояние. Некоторые другие сервисы должны контролироваться через sudo service service_name command. Так в этом случае sudo service mysql status должен сказать Вам, если mysql работает.

Для устанавливания/настраивания базы данных прочитайте различные учебные руководства онлайн, купите книгу. Лично, если бы Вам не нужна очень усовершенствованная база данных, я предложил бы более простой дб как sqlite. Намного более просто настроить и использовать затем абсолютный комплект базы данных как postgresql/mysql/oracle. Помните, что правильно настроенные базы данных не тривиальны, чтобы установить и администрировать; вот почему администратор DB часто является работой на полную ставку. См.: http://www.sqlite.org/whentouse.html, чтобы решить, не ли sqlite достаточно мощен.

24
26.09.2012, 02:58
8 ответов

Существует две среды программирования, которые доступны в каждой подобной Unix операционной системе, которые полны по Тьюрингу и которые могут назвать другие программы: awk, и sh, семейство оболочек Границы/POSIX. AWK ориентирован к обработке текста (это дополняет более специализированные утилиты), в то время как sh ориентирован к тому, чтобы быть языком связующего звена для соединения программ. Sh является универсальным языком сценариев на Linux и через мир Unix.

Стандарт POSIX определяет обязательные функции самого sh и связанных утилит. Большинство подобных Unix систем выполняет POSIX 1003.1-2004 (иначе Единственный Unix v3, иначе выпуск 6 Спецификации Основы Open Group); последней версией того стандарта является POSIX 1003.1-2008 (иначе Единственный Unix v4, иначе Выпуск 7 Спецификации Основы Open Group).

Каждый Linux и Unix или подобная Unix система имеют оболочку стиля Границы в пути /bin/sh, и любая нестаринная система имеет совместимую POSIX оболочку (запрещающий случайную ошибку). Каждая современная подобная Unix система (включая Linux) поддерживает хижины, таким образом, это автоматически запускает скрипты в /bin/sh если первая строка #!/bin/sh. Существуют системы POSIX где sh расположен в другом месте (обычно слои эмуляции на Ose, о которых Вы не думали бы как являющийся действительно подобным Unix).

Встроенные системы Linux могут иметь упрощенную систему BusyBox, которая не реализует все опции POSIX. BusyBox имеет большое число вариантов времени компиляции разместить системы маленького места, таким образом, трудно знать, что ожидать заранее, необходимо адаптировать сценарии в соответствии с конкретным устройством. BusyBox является наиболее распространенной реализацией маленького места sh и различных утилит; другой, с которым Вы могли бы встретиться, является чрезвычайно уменьшенной средой оболочки в Android (позже, версии являются менее анемичными).

Невстроенные системы Linux почти всегда имеют или тире или удар как /bin/sh. Тире является маленькой и быстрой оболочкой, которая реализует немного больше, чем функции POSIX. Bash является большей оболочкой с большим количеством функций.

Невстроенным системам Linux почти всегда устанавливали Bash как /bin/bash. Следовательно, для мобильности в невстроенных системах Linux, можно предположить, что удар доступен. Среди полезных дополнительных функций удара массивы, способность справиться с точечными файлами удобно, pipestatus переменная для получения статуса возврата всех команд в конвейере, дополнительных операторах сравнения в течение времен файла, и (в последних версиях) соответствие регулярного выражения.

Одна из характеристик программирования оболочки - то, что Вы не просто используете sh программа, Вы также используете много утилит. Большинством утилит управления и обработки текста файла на Linux является GNU coreutils (во встроенных системах, они обычно от BusyBox).

При необходимости в мобильности вне Linux лучший выбор состоит в том, чтобы придерживаться POSIX. Другие варианты Unix не могут иметь установленного удара (удар является частью стандартной установки на OSX, но дополнительного пакета на *BSD и большинство коммерческих нельдов). Почти все варианты Unix кроме Linux и OSX (т.е. *BSD и коммерческие нельды) имеют некоторую версию оболочки Korn, по крайней мере, pdksh. Многие удобные расширения удара от ksh, таким образом, может быть полезно записать сценарии, которые могут работать под обоими, но обнаруживающий то, где удар или ksh расположены в неизвестной системе, может быть чем-то вроде боли.

Оболочка не может сделать всего. При необходимости в более сложном языке двумя более общими вариантами является Perl и Python (что-либо еще далеко позади как язык сценариев Unix). Perl является традиционным языком сценариев, и немногие не встроили системное отсутствие Linux он, но Python делает успехи (повышенный частично, будучи рекомендуемым языком сценариев для Ubuntu). В мире не-Linux Perl является частью основной установки на OSX и OpenBSD; это является дополнительным, но очень обычно устанавливаемое на FreeBSD, и дополнительным, но часто устанавливаемое на NetBSD.

38
27.01.2020, 19:40
  • 1
    , "повышенный частично..." Это и быть все-но-необходимым в Fedora и системах RHEL. –  Ignacio Vazquez-Abrams 26.09.2012, 04:27
  • 2
    Главным образом согласитесь со всем этим. Просто некоторые различные акценты: * некоторые дистрибутивы являются находящимися в BusyBox, но не обязательно встроенные (я использую один, альпийский). (Предоставленный, действительно говорится в ответе "почти всегда".) * BSDs являются большим классом подобных Unix систем, где Вы не можете принять удар по умолчанию. * тире может сделать почти все, что удар может, он просто иногда требует большего ухода. * При необходимости в более сложном языке да, Perl и Python являются наиболее распространенным выбором, но awk еще более повсеместен и достаточен для многих целей. Это также обычно недооценивается. Но это - более легкий вес, чем Perl и Python. –  dubiousjim 26.09.2012, 10:33
  • 3
    справедливое предупреждение, хотя - FreeBSD отбросил Perl от их установки по умолчанию некоторое время назад. Кроме этого, я не знаю ни о каком другом дистрибутиве, у кого нет Perl в их основной установке. –  TC1 26.09.2012, 11:56
  • 4
    @TC1 Perl был всегда дополнительным на NetBSD. Это находится в основной системе на OpenBSD. –  Gilles 'SO- stop being evil' 26.09.2012, 13:04
  • 5
    @dubiousjim Только Linux (невстроенный, или достаточно хорошее приближение на практике) и OSX имеет, избивают их стандартную установку; *BSD имеют pdksh или mksh, и коммерческие нельды имеют ATT ksh. –  Gilles 'SO- stop being evil' 26.09.2012, 13:06

В порядке доступности:

  1. sh, но придерживаются указанных POSIX средств.
  2. удар, но не забывают явно указывать его в хижине, или Вы могли бы получить тире вместо этого.
  3. Python. Почти все используют его.
  4. Perl. Но Вы добираетесь для записи этого.

После этого никто действительно не заботится, так как нет очень, Вы не можете сделать только с ими.

11
27.01.2020, 19:40
  • 1
    я поместил Perl перед Python, он установлен по умолчанию в большинстве систем Linux. –  terdon♦ 26.09.2012, 02:23
  • 2
    Perl является № 3. И Вы добираетесь для записи этого, премия! :) –  Warren Young 26.09.2012, 04:42
  • 3
    , который я согласовываю с @ignacio жемчугом, является № 4, и Python является № 3. Причина очевидна. Я думаю, что Python является эволюцией жемчуга. –  bagavadhar 26.09.2012, 10:03
  • 4
    @ashwin: нет, Python не является эволюцией, или даже как, жемчуг. жемчуг является языком системными администраторами для системных администраторов. Python является языком программистами для программистов. То различие крайне важно. У них обоих есть свое использование и в то время как может быть много перекрытия в примерах использования, поскольку некоторый жемчуг задач является лучшим выбором, и для других Python ясно выше. –  cas 26.09.2012, 12:56
  • 5
    Ruby и PHP были вдохновлены Perl. Python является результатом эксперимента физики, где они создали anti-Perls в суперколлайдере. (У меня ничего нет против Python. Plusses и минусы, плюсы и минусы.) –  Warren Young 27.09.2012, 00:00

Обычно, сказал бы я sh.... но так как Вы указали Linux, скажу я bash - это, как гарантируют, будет в каждой системе Linux вокруг (хорошо, исключая неясные педантично крошечные это fetishize минимализм :).

Если Вы не должны заботиться о мобильности не-Linux (и если Вы не должны работать на крошечных дистрибутивах или во встроенных устройствах Linux как маршрутизаторы пластмассового поля), то можно также использовать значительные улучшения, которые она предлагает по плоскости sh. Иначе используйте sh.

После bashsh), следующий самый "универсальный" язык сценариев для Linux был бы некоторым диалектом awk - обычно также mawk или gawk. Если Вы придерживаетесь плоскости awk и избегаете gawkisms, Ваш сценарий должен хорошо работать почти в любой системе Linux (это может отсутствовать на крошечных дистрибутивах или встроенных устройствах). Большинство систем Linux будет иметь обоих mawk и gawk доступный, но на некоторых дистрибутивах (debian, например) mawk установлен по умолчанию, и необходимо установить gawk самостоятельно, если Вы хотите это.

Затем был бы perl. AFAIK, основной язык жемчуга установлен по умолчанию на всех общих дистрибутивах Linux, так, чтобы сделал это хорошим выбором. Еще более к счастью, существует очень мало несовместимости версии с выпусками perl5 (хотя жемчуг 5.12 или это, возможно, было 5.14, наконец нашел время для удаления некоторых неясных функций, которые удерживались от использования в течение приблизительно 15 лет... вполне достаточное предупреждение не использовать их), поэтому, если Ваш стиль кодирования не является действительно странным, и Вам нравится игнорировать более чем ценность десятилетия, "не делают этого" предупреждения, Ваши сценарии жемчуга будут работать очень хорошо почти куда угодно. Язык устойчив и мощен и может сделать все это awk и sed может сделать и т.д. С небольшим усилием это может сделать вещи это sh традиционно хорошо для также (например, выполнение внешних команд и использование/передача по каналу вывода). Стандартные библиотеки жемчуга являются довольно всесторонними, также - покрывающий больше, чем просто основы.

Единственная выгода с жемчугом - то, что существует также огромная библиотека модулей CPAN, чтобы сделать примерно что-либо, о чем можно думать (и партии больше, которые никогда не могут происходить с Вами) - и не все они будет доступно в каждой системе с жемчугом. Они обычно имеют очень высокое качество, таким образом, легко выработать привычку просто использования их - но если Вы действительно используете их, необходимо будет удостовериться, что они установлены. Много модулей CPAN предварительно упаковываются для Linux, и остаток легко установлен с cpan инструментом (или dh-make-perl на debian/ubuntu/etc для превращения модуля CPAN в .deb пакет)

Я хотел бы смочь сказать python затем, но я действительно не могу. Существует много для симпатии приблизительно Python, но он не включен по умолчанию во многих системах Linux и, откровенно говоря, это - совместимость версий (и для самого Python и для его предположительно "стандартного", освобождает), полный хаос. Некоторые дистрибутивы прилагают превосходное усилие при разбирании в путанице, и некоторые не делают. Ни одному не помогает то, что Python является в основном языком, записанным для программистов программистами (в противоположность системным администраторам), и они, кажется, не думают, что система, на которой будет установлен их код, вообще важна...., их код является действительно супер особенным, таким образом, они не должны интересоваться скучным материалом как интеграция в существующие системы.

(Не неправильно понимайте от моего сарказма здесь - мне действительно нравится Python как язык, я просто ненавижу то, что управлением версией и зависимостью является ЛАВАШ. Это похоже на возвращение 20 + годы к эре ручного поиска для неясных битов кода и исправляет, чтобы скомпилировать что-то, и работа Вашего собственного *отклоняют),

4
27.01.2020, 19:40
  • 1
    , я знаю это, является старым сообщением, но лучшим способом обойти, это должно указать который версия в хижине (например. /usr/bin/python2, /usr/bin/python3). –  Isiah Meadows 20.06.2014, 01:50

Я предложил бы, следуют за ksh93 или даже ароматом POSIX, и можно всегда использовать bash/zsh для выполнения.

И находящийся в Debian дистрибутив использует mawk не, таращат глаза как значение по умолчанию awk. Так да избегают дополнений простофили, так как mawk является путем быстрее.

1
27.01.2020, 19:40

Не колотят. Запишите в sh близко к POSIX как тире или пепел. Это будет самым универсальным. Я не думаю, что существует что-либо еще, что это - даже близкий конкурент. (И это кажется мне фактическим вопросом, не "мнением", поскольку один из комментаторов жалуется.)

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

0
27.01.2020, 19:40
  • 1
    является универсально простофилей; я не могу думать ни о каком дистрибутиве, который имеет другой вариант по умолчанию. –  Ignacio Vazquez-Abrams 26.09.2012, 02:04
  • 2
    Который не поддерживают варианты Linux bash? –  Jonathan Leffler 26.09.2012, 02:24
  • 3
    Конечно, bash может устанавливаться и работаться (почти) любое поле Linux, но многие debian пользователи установят только dash и предпочтите не устанавливать bash. –  William Pursell 26.09.2012, 03:50
  • 4
    @WilliamPursell пакет удара отмечен Важный на Debian (т.е. необходимо пройти обручи для удаления с вполне достаточными предупреждениями, что это польет из шланга систему). Bash примерно универсален в невстроенных системах Linux. –  Gilles 'SO- stop being evil' 26.09.2012, 04:05
  • 5
    @JonathanLeffler: Встроенные с другой стороны могут только иметь Busybox. –  Mechanical snail 26.09.2012, 04:53

Я сказал бы, что доступность займет место где-нибудь в этом порядке:

  1. sh
  2. awk
  3. Perl (я должен все же видеть *, отклоняют без него, включая BSDs),

Хотя Python походит на хороший язык, я не использовал ОС, которая шла с ним в основной установке, хотя, по-видимому, Ubuntu делает, возможно?

0
27.01.2020, 19:40

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

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

Я могу думать о нескольких сценариях и упомянуть некоторые инструменты, полезные для них.

Файлы FTP туда и сюда; обработайте их; отправьте уведомления по электронной почте; и так далее

В этом случае было бы лучше придерживаться оболочки (например, Bash) и использовать различные утилиты (например, ftp, cron и mail). Это - типичный вариант использования во многих крупных компаниях.

Быстрая обработка текста

Еще раз, оболочка. Утилиты как grep, awk, sed, paste и другие очень удобны в этом случае.

Сборка

В домене C/C++ универсальный инструмент для этого make. Мир Java предпочитает МУРАВЬЯ Apache.

Развертывание и дистанционное управление

Или оболочка или Python. Например, scp и rsync, соответственно, было бы довольно полезно в копировании файла (файлов) или синхронизации файлов.

Python, с другой стороны, назвали очень полезный модуль fabric. Это было бы полезно для более сложных операций для, например, файлы копии, остановить некоторый процесс, составить сервер и аналогично. Кроме того, Python также обеспечивает модуль, pip, который может решить указанные зависимости путем загрузки и установки соответствующих пакетов.

(Обратите внимание, что предложения выше не фокусируются на функциях оболочки очень, а скорее на различных доступных утилитах.)

0
27.01.2020, 19:40

Perl не находится в FreeBSD, NetBSD или основе DragonflyBSD, извините. OpenBSD имеет Perl в основной установке. OS X является в наше время сертифицированным UNIX и может думаться как своего рода вариант BSD на некотором уровне, и он имеет Perl, Python и Ruby в основе.

Много собственных UNIXen не имеют Perl в своей основе, например, Солярис, AFAIK никакой HP-UX или IBM AIX также...

-1
27.01.2020, 19:40
  • 1
    Ваш оператор о Солярисе, недостающий Perl является неправильным. Perl является обязательным базовым компонентом Соляриса по крайней мере с 2005 (Солярис 10). –  jlliagre 31.08.2013, 22:48

Теги

Похожие вопросы