Начальная загрузка UNIX/LINUX

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

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

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

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

Читать дальше

Опыт создания сценариев UNIX

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

Читать дальше

Python: пример контроля входных данных и циклы.

Приведенный ниже сценарий — это Python-версия уже знакомой нам программы проверки допустимости входных данных. В этом сценарии демонстрируется использование подпрограмм и аргументов командной строки, а также некоторых других "питонизмов" (от англ. Python — питон).

Читать дальше

Создание сценариев на языке PYTHON

По мере усложнения и увеличения в объеме программных проектов становятся очевидными преимущества объектно-ориентированного проектирования и реализации. Языку Perl явно не хватало объектно-ориентированного "буксира" в течение почти пяти лет, и хотя разработчики изо всех сил "налегали на весла", чтобы как-то удержаться на плаву, Регl-версия объектно-ориентированного программирования все еще оставляет желать лучшего.

Читать дальше

Perl: прием входных данных и проверка их достоверности, модули расширения.

В приведенном ниже сценарии объединены многие уже рассмотренные нами конструкции Perl, включая использование подпрограммы, нескольких постфиксных операторов if и цикла for. Сама программа — это просто "обертка", в которую "завернута" основная функция getstring, обеспечивающая проверку достоверности входных данных. Эта функция приглашает пользователя ввести строку, удаляет замыкающий символ новой строки и проверяет, не является ли введенная строка нулевой. После приема нулевой строки пользователю предлагается повторить ввод, но после трех неудачных попыток сценарий "умоет руки".

Читать дальше

Perl: регулярные выражения, ввод и вывод данных, поток управления.

Регулярные выражения в Perl используются путем "привязки" строк к операциям над регулярными выражениями, а именно с помощью оператора связывания =~. Например, при выполнении кода

if  ($text =~ m/ab+c/)   {

проверяется, совпадает ли строка, хранимая в переменной $text, с регулярным выражением ab+c. Для выполнения действий по умолчанию над строкой, в которой хранится результат предыдущей операции, т.е. $_, можно просто опустить имя переменной и оператор связывания. На самом деле можно опустить и оператор т, поскольку эта операция по умолчанию приводит к совпадению.

Читать дальше

Perl: Вызовы функций, преобразования типов в выражениях, хеши, ссылки.

Оба варианта — print и printf — принимают произвольное количество аргументов, которые разделяются запятыми. Но вот вы видите join (...). Не напоминает ли вам это вызов функции? Чем же "этот join" отличается от print и printf?

По сути, ничем, print, printf и join — это обычные функции. Perl позволяет опускать круглые скобки в вызовах функций, если эта "экономия" не послужит причиной неоднозначности, поэтому обе формы приемлемы. В приведенной выше print-строке форма записи со скобками (join (...)) используется для явного отделения аргументов, передаваемых функции join, от аргументов, передаваемых функции print. Читать дальше

Perl, Переменные и массивы, строковые литералы.

Язык Perl, созданный Ларри Уоллом (Larry Wall), был первым из самых популярных языков написания сценариев. Он предлагает чрезвычайно больше возможностей, чем bash, а написанные на нем программы (если они написаны хорошо) довольно просты для понимания. Поскольку в языке Perl не предусмотрена обязательность соблюдения разработчиками стилистических правил создания кода, читабельность Perl-кода зависит от их дисциплинированности. Не без основания Perl называют языком "только для записи".

Здесь описывается версия Perl 5, которая была стандартом в течение последнего десятилетия. Версия Perl 6 все еще находится в стадии разработки. Подробнее можно узнать на сайте peri6.org. Языки Perl и Python больше подходят для работы в области системного администрирования, чем такие традиционные языки программирования, как С, C++, C# и Java. Их отличает большая эффективность: при лаконичности кода и менее мучительном процессе отладки, а также без компиляционной "волокиты" они могут продемонстрировать большие возможности.

Читать дальше

Регулярные выражения Unix/Linux

Регулярные выражения поддерживаются большинством современных языков, хотя одни языки "принимают их ближе к сердцу", чем другие. Они также используются в таких UNIX-командах, как grep и vi. Регулярные выражения настолько распространены, что их название в оригинальной литературе часто сокращали до слова "regex" (regular expressions). О том, как использовать их немалые возможности, написаны уже целые книги, и неудивительно, что они стали объектом исследования многочисленных докторских диссертаций.

Читать дальше

Написание bash-сценариев

Командный арсенал оболочки bash позволяет успешно писать простые сценарии (без этого средства автоматизации системным администраторам пришлось бы вручную вводить команды в командную строку). Ваше мастерство в использовании командных строк вы должны воплотить в искусстве создания bash-сценариев (и наоборот), что поможет вам извлечь максимальную пользу из времени, потраченного на изучение обо­лочки bash. Но когда окажется, что ваш bash-сценарий превысил в объеме сотню строк или вам потребовались средства, которыми bash не обладает, это будет означать, что настало время переходить к языку Perl или Python.

Читать дальше