Linux: Полное руководство
Шрифт:
Перезагрузитесь в однопользовательском режиме (о режимах и вариантах загрузки сказано в п.9.1.1). Введите команду mount, чтобы узнать, какой раздел содержит корневую файловую систему:
Корневая файловая система расположена на разделе
Все, что осталось сделать, — это перемонтировать корневую файловую систему в режиме «только чтение» и создать образ:
Подробно описывать утилиту dd не стану — это очень хорошо сделано в справочной системе. Скажу только, что кроме dd существует еще и утилита dd_rescue, которая при клонировании пропускает плохие секторы и делает максимально возможную копию файловой системы. Для меня, да и для вас использование этой утилиты неактуально — ведь винчестеры меняют минимум один раз в год, поэтому не думаю, что у вас будет «битый» винчестер.
Теперь рассмотрим, как можно восстановить систему. Для восстановления системы вам понадобится загрузочный компакт-диск Linux, Подойдет первый диск любого дистрибутива, даже несовместимого с вашим. Если вы используете не LiveCD, а простой загрузочный диск, для перехода на текстовую консоль нажмите Ctrl+Alt+F2. Подмонтируем наш внешний винчестер:
Теперь на новом винчестере нужно создать разделы. Это можно сделать с помощью утилиты fdisk или с помощью программы установки — как вам удобнее. Если же вы восстанавливаете систему после сбоя, ничего создавать не нужно — все уже создано. Не забудьте только создать раздел подкачки (тип раздела
Теперь развернем образ (обратите внимание на параметры if и of программы dd — на этот раз их аргументы поменялись местами):
Сейчас нам нужно изменить корневую файловую систему, чтобы попасть «внутрь» развернутого образа:
Теперь корнем стал каталог
А если GRUB:
Теперь перезагрузите компьютер (reboot) — ваша система успешно восстановлена после клонирования.
Глава 8
Язык командного интерпретатора
Для автоматизации часто выполняемых работ по обслуживанию системы вам понадобится объединять команды в сценарии. С простейшими сценариями, обеспечивающими последовательное выполнение перечисленных команд, вы уже познакомились в гл. 3. Уточню только, как система обрабатывает сценарии. Она ищет в первой строке файла сценария выражение
и передает
Чтобы непосредственно запустить файл сценария на выполнение, вы должны иметь полномочия на исполнение этого файла. Если он доступен вам только для чтения, выполнить его можно командой
Эта глава посвящена языку программирования, встроенному в оболочку bash.
Базовыми операциями этого языка служат все установленные в системе программы, утилиты и сценарии. Оболочка находит их, запускает, обеспечивает передачу им — аргументов, а результатов их работы — другим программам и пользователю, выполняет подстановку переменных и раскрытие шаблонов. Кроме того, оболочка содержит операторы цикла и условные операторы, в результате чего получается мощный язык программирования.
8.1. Параметры
Вместо переменных, как и обычных языках программирования, в bash используется понятие параметра. Именем параметра может быть: слово, состоящее из латинских букв, цифр и знаков подчеркивания, начинающееся с буквы; число; один из специальных символов; *, #, ?, $, !, 0, _.
Тип всех параметров — строковый. Если параметру присвоено значение (хотя бы пустая строка), то говорят, что он задан или установлен. Чтобы сослаться на значение параметра, нужно поставить символ $ перед его именем:
Параметры делятся на:
♦ переменные оболочки — о них рассказано в п. 3.4.3;
♦ позиционные параметры — их имена представляют собой натуральное число, а значениями служат аргументы с соответствующими номерами, начиная с 1, переданные сценарию или самой оболочке при их запуске;
♦ специальные параметры — их именами служат перечисленные специальные символы, а назначение сведено в таблицу 8.1. Эти параметры — шаблоны, подстановку которых производит оболочка.
Специальные переменные Таблица 8.1
Название | Подстановка |
---|---|
$0 | Имя выполняемого сценария (или, в интерактивном режиме, — самой оболочки) |
$# | Количество позиционных параметров, переданных сценарию |
$_ | Последний аргумент предыдущей из выполнявшихся команд |
$? | Код завершения последней выполненной команды (напоминаю, что значение 0 говорит об успешном завершении, другое — об ошибочном) |
$$ | Номер текущего процесса (PID) |
$! | Номер (PID) последнего асинхронного процесса (команды, выполненной в фоновом режиме) |
$* | Все позиционные параметры, слитые в одну строку: «$*» эквивалентно «$1x$2x…,$n», где x — первый символ значения переменной IFS (internal field separator), по умолчанию — пробел |
$@ | Все позиционные параметры, подлежащие дальнейшему разбору: «$@» эквивалентно «$1» «$2» ... «$n» |