Реальное использование SHELL SCRIPTS? - PullRequest
2 голосов
/ 22 ноября 2010

Я изучаю сценарии оболочки UNIX / LINUX и пытаюсь придумать, как его использовать?

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

Спасибо:)

Ответы [ 7 ]

4 голосов
/ 22 ноября 2010

Зачем использовать сценарии оболочки

По сути, существует множество задач, связанных с резервным копированием, обслуживанием и т. Д., Которые необходимо автоматизировать, и сценарии оболочки делают это.

3 голосов
/ 22 ноября 2010

Вы можете делать в все в оболочке, но легко писать некрасивые и медленные сценарии.

Первая область знаний оболочек - запускать и комбинировать другие программы. Это исключительно хорошо подходит для:

  • манипуляции с файлами : список, перемещение, копирование, сжатие, архив
  • манипулирование строками текста : фильтр (grep), изменение (sed), удаление строк (sed), объединение файлов (paste), сортировка (sort), унифицировать (sort -u)

Все эти операции НЕ являются операциями оболочки, но оболочка - это клей, который соединяет их все вместе.

  • файловые операции обычно сочетаются с инструкциями управления потоком (while, if, for)
  • операции на линии объединяются с трубами | и именованными трубами mkfifo
2 голосов
/ 22 ноября 2010

Вещи, которые вы можете сделать менее чем в 20 строках с помощью команд оболочки.

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

Языки сценариев, такие как Python, Perl и Ruby, становятся более привлекательными по мере усложнения кода.

1 голос
/ 08 июля 2011

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

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

Другой, который я написал, перебирает все базы данных mysql на сервере и выводит mysqldump для каждой в свой соответствующий файл .sql с соответствующим именем.

Другой перебирает список homedir и меняет владельца всех файлов в соответствующем public_html каталоге, чтобы соответствовать пользователю, которому должен принадлежать им, чтобы соответствовать ограничениям suPHP.

Другой анализирует текущую конфигурацию оборудования, загружает, устанавливает и настраивает соответствующее программное обеспечение для мониторинга работоспособности подключенного в данный момент RAID-контроллера.

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

Я также построил в bash декодер base-64, чтобы посмотреть, смогу ли я. Это работает, но это очень медленно. Я использую сценарии оболочки для простых задач, которые в первую очередь включают выполнение других программ. Я часто использую Perl, когда требуется значительный объем обработки строк, и я использую Python для более сложных задач сценариев. Чем больше языков вы знаете, тем лучше вы будете выбирать правильный для работы.

1 голос
/ 22 ноября 2010

для нашей компании мы используем сценарии оболочки для следующего:

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

1 голос
/ 22 ноября 2010

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

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

Лучший вопрос = что нельзя запрограммировать в Shell?

1 голос
/ 22 ноября 2010

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

Все это очень сложно настроить.

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

Переключение между ними - еще большая проблема.

Введите сценарий оболочки, который гарантирует, что я настроен только для одной версии за раз. Та да!


Кстати: сценарий, который я использую для этого, широко использует принятый ответ на Как мне манипулировать элементами $ PATH в сценариях оболочки? , так что вы знаете, что переполнение стека работает для меня в реальном мире , Более того, я заразил нескольких других людей этой технологией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...