Введение


Как читать эту книгу

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

Книга «FreeBSD. Подробное руководство» немного другая. Она предназначена для однократного прочтения от начала и до конца. При желании главы можно пропускать, однако каждая глава построена на материале предыдущей. Кроме того, книга не очень большая, поэтому усвоить ее содержимое довольно легко. Прочитав ее один раз, вы сможете использовать ее в качестве справочника.

Если вы часто покупаете компьютерные книги, можете сами добавить обычные рекомендации типа «для наилучшего усваивания читайте за раз одну главу» и т. д. Я не собираюсь нянчиться с вами, — если вы приобрели эту книгу, то, возможно, у вас найдется пара извилин или кто-то, кто вам поможет. (Если последнее, то, надеюсь, ваш начальник достаточно умен, чтобы отобрать у вас эту книгу прежде, чем вы узнаете достаточно и станете опасны.)

Что вы должны знать?

Эта книга адресована начинающим администраторам UNIX. Два десятилетия назад средний администратор UNIX обладал опытом разработки программного кода ядра и имел ученую степень по вычислительной технике. Даже десять лет тому назад он уже был квалифицированным пользователем UNIX, обладающим навыками программирования и дипломом бакалавра. Сегодня UNIX-подобные операционные системы доступны любому желающему, а компьютеры стали дешевле продуктов питания и даже 12-летние дети могут запускать UNIX, читать исходный код и получать знания, наводя ужас на нас, старых администраторов. Поэтому я не жду от вас, что вы обладаете серьезными знаниями об операционной системе UNIX.

Чтобы использовать весь потенциал этой книги, вы должны быть знакомы с базовыми командами UNIX. Это команды для перехода в другой каталог, вывода списка файлов в нем, а также входа в систему с именем пользователя и паролем. Тем, кто не знаком с базовыми командами и с командной оболочкой UNIX, я рекомендую начать с книги Эви Немет (Evi Nemeth) с соавторами «UNIX System Administration Handbook» (Prentice Hall PTR, 2006). Чтобы облегчить жизнь начинающим системным администраторам, я включил в текст книги точные команды для получения конкретных результатов. Если вы лучше усваиваете материал на примерах, то в этой книге вы найдете все, что вам нужно.

Кроме того, надо немного разбираться в аппаратных средствах компьютера — не очень глубоко, уверяю вас, но в некоторой степени. Например, полезно знать, чем отличаются кабели IDE, SCSI или SATA. Конечно, надо знать именно свои аппаратные средства, однако если вы заинтересовались этой книгой, то думаю, что достаточными знаниями вы обладаете.

Начинающим системным администраторам

Если вы еще не знакомы с UNIX, лучший способ знакомства заключается в том, чтобы «жить жизнью вашей собственной собаки». Нет, я вовсе не предлагаю, чтобы вы обедали вместе с Рексом. Но если бы вы управляли компанией по производству корма для собак, вы наверняка захотели бы выпускать такой корм, который ваша собака ела бы с удовольствием. Если ваша собака воротит нос от вашего последнего рецепта, значит, вы что-то не так делаете. Суть в том, что если вы производите продукт, вы сами должны использовать его. То же относится и к UNIX-подобным операционным системам, включая FreeBSD.

FreeBSD как настольная среда

Если вы всерьез намерены изучить FreeBSD, я предлагаю удалить имеющуюся операционную систему с вашего основного компьютера и установить на него FreeBSD. Теперь я знаю, что собачья еда не так плоха на вкус. Однако изучение операционной системы сродни изучению иностранного языка. Самым быстрым методом обучения является метод полного погружения. Именно этот подход я избрал и сегодня я могу заставить UNIX-систему делать все, что угодно. Фактически эта книга была полностью написана на моем ноутбуке, работающем под управлением FreeBSD, с помощью текстового редактора с открытым кодом XEmacs и бизнес-пакета OpenOffice. Кроме того, во FreeBSD я смотрю видеофильмы, записываю и прослушиваю музыку в формате МРЗ, проверяю баланс моего счета в банке, обрабатываю электронную почту и путешествую по Интернету. Когда я пишу эти строки, по экрану, прямо поверх окон, бегает с дюжину маленьких анимационных демонов BSD* и я иногда развлекаюсь, щелкая по ним мышкой. Если это не считать дурацкой экранной программкой, то не знаю, что и считать.*

Многие системные администраторы UNIX в наши дни приходят из мира Windows. Они усердно трудятся в своем маленьком мирке, когда мимо пролетает босс и говорит: «Вы в состоянии обслуживать еще одну систему? Рад слышать это! Кстати, это — система UNIX», а затем исчезает в административных небесах. Если только новый администратор решает поберечь свои руки, руки «белого воротничка», и не начинать захватывающую карьеру специалиста по вскрытию китов, он начинает ковыряться в системе. Он узнает, что команда ls подобна dir, а cd одинаково выполняется на обеих платформах. Команды можно заучивать наизусть, читать их описания и исследовать на практике. Однако таким образом нельзя понять, как думает машина UNIX. Она не приноровится к вам — вы должны приспособить ее под себя. И Windows, и Mac OS X требуют подобного приспособления, но они скрывают это за блестящим фасадом. Помня об этом, мы потратим некоторое время на обсуждение того, как следует думать о системе UNIX.

Как думать о UNIX

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

В основу UNIX положена философия: множество маленьких инструментов, каждый из которых выполняет единственную операцию, но делает это хорошо. В каталоге локальных программ в моем ноутбуке (/usr/local/bin) находятся 662 программы. Я установил каждую из них прямо или косвенно. Большинство из них — это маленькие простые программы, которые решают единственную задачу, за редким исключением, таким как офисный пакет. Этот массив маленьких инструментов обеспечивает операционной системе UNIX необычайную гибкость и приспособляемость. Многие коммерческие программные пакеты стремятся вобрать в себя сразу целую массу функций; они реализуют самые разные функциональные возможности, но основную задачу решают весьма посредственно. Помните, когда-то необходимо было быть программистом, чтобы использовать UNIX, не говоря о том, чтобы ею управлять. Программисты не против разработки своих собственных инструментов. А концепция каналов в UNIX способствует этому.

Каналы коммуникации

Пользователи, привыкшие к средам с графическим интерфейсом, таким как Windows и Mac OS X, наверняка незнакомы с тем, как UNIX обслуживает ввод и вывод. Они щелкают мышью и видят либо сообщение «ОК», либо ошибку, либо вообще ничего, либо (увы, слишком часто) красивый голубой экран, заполненный терминами из области высоких технологий, объясняющими, где произошла авария в системе. В UNIX все немного по-другому.

Программы UNIX имеют три канала коммуникации: стандартный ввод, стандартный вывод и стандартная ошибка. Разобравшись с работой этих каналов, вы сделаете хороший шаг на пути к пониманию всей системы.

Стандартный ввод (standard input) — это источник информации. Когда вы набираете команды за консолью, стандартным вводом является клавиатура. Если программа прослушивает сеть, стандартным вводом считается сеть. Многие программы могут переназначать стандартный ввод, чтобы принимать данные из сети, из файла, с клавиатуры и из любого другого источника.

Стандартный вывод (standard output) — это место, где отображается вывод программы. Зачастую это консоль (экран). Сетевые программы обычно возвращают вывод в сеть. Программы могут отправлять свой вывод в файл, передавать другим программам, отправлять в сеть или еще в какое-то место, доступное для компьютера.

Наконец, стандартный поток ошибок (standard error) — это место, куда направляются сообщения об ошибках. Часто консольные программы возвращают ошибки на консоль; другие протоколируют ошибки в файле. Если программа неправильно настроена, это может привести к потере всех сообщений об ошибках.

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

Маленькие программы, каналы и командная строка

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

$ tail -f /var/log/messages | grep -v popper | grep -v named &

Строки малопонятного текста начали появляться на экране. Хуже того, мой инструктор продолжал набирать, когда вывод закрыл собой весь экран! Длинная строка команд определенно может запугать выходцев из среды с «мышиным» интерфейсом. Что означают все эти странные слова, не говоря уже о символах?

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

Маленькие и простые программы вкупе с каналами коммуникации обеспечивают беспримерную гибкость. Хотелось ли вам когда-нибудь использовать функцию из одной программы в другой? Применяя множество маленьких программ и назначая ввод и вывод по своему усмотрению, можно задавать любое требуемое поведение системы. Вы едва ли будете чувствовать себя уверенно, если не сможете пропустить вывод команды через конвейер | sort -rnk 6 | less.*

Все сущее есть файлы

Невозможно проработать длительное время с системой UNIX и ни разу не услышать, что все сущее в ней представляет собой файлы. Программы, учетные записи и настройки системы — все это хранится в файлах. Система UNIX не имеет аналога реестра Windows — если создать резервные копии всех файлов, будет создана копия всей системы.

Более того, аппаратные устройства в системе также представлены в виде файлов! Например, устройство CD-ROM представлено файлом /dev/acd0. Сетевая карта — файлом /dev/net. Даже виртуальные устройства, такие как устройство для сбора и анализа сетевых пакетов или разделы на жестком диске, тоже являются файлами.

Помните об этом, когда возникает необходимость решить какую-либо проблему. Все сущее есть файлы или находится в файлах, где-нибудь в недрах системы. Все, что вам нужно будет сделать, — это найти этот файл!

Итак, довольно вводного материала! Вперед!

Комментарии запрещены.