Работа со сценариями запуска системы

После выхода из однопользовательского режима (или — при стандартной загрузке — по завершении работы интерпретатора команд, запущенного с правами суперпользователя) демон init выполняет сценарии запуска системы. Они являются сценариями интерпретатора sh (на самом деле bash), а их местонахождение, содержимое и организация зависят от изготовителя системы. Читать дальше

Загрузка UNIX/Linux в однопользовательском режиме

То, как начинается процесс загрузки, зависит от конкретной системы. Системы с не Intel-процессорами используют специально разработанные программы загрузки, в то время как на персональных компьютерах, в основном, загрузчики стандартизированы (благодаря GRUB). Читать дальше

Загрузка системы на персональном компьютере

До этого момента описывалась общая схема начальной загрузки. Теперь некоторые наиболее важные (и сложные) ее этапы необходимо рассмотреть подробнее, проанализировав особенности функционирования Intel-систем.

Загрузка системы на персональном компьютере — это многоступенчатый процесс. Когда включается компьютер, начинает выполняться код, записанный на постоянном запоминающем устройстве. Точное его местонахождение и структура зависят от типа оборудования. В компьютерах, созданных специально для UNIX или другой коммерческой операционной системы, код "прошивается" разработчиком, который заранее задает алгоритм подключения устройств, базовой инициализации сети и распознавания локальных файловых систем. Это очень удобно для системного администратора. Ему достаточно ввести лишь имя нового файла ядра, а код постоянного запоминающего устройства автоматически обнаружит и прочитает этот файл. Читать дальше

Начальная загрузка 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. Читать дальше