Рассел Сейдж. Приемы профессиональной работы в unix перевод "Tricks of the unix masters" by Russel G

Вид материалаДокументы

Содержание


Что вы должны уже знать
О какой системе unix идет речь
Обзор глав
Среда системы unix
"Многообразие сред"
Уровень 0 - аппаратные средства
Уровень 1 - микрокоманды
Уровень 2 - условная машина
Уровень 3 - ядро
Уровень 4 - операционная система
Уровень 5 - компиляторы
Уровень 6 - прикладные программы
Уровень 7 - командные файлы
Ваш "регистрационный каталог"
Что такое соседство?
Планировка регистрационного каталога
Файлы в регистрационном каталоге
Файлы 4.2 bsd
Трюки с главными файлами
Анализ примера файла настройки системы
...
Полное содержание
Подобный материал:
  1   2   3   4   5   6   7   8   9   ...   45


Рассел Сейдж. Приемы профессиональной работы в UNIX


Перевод "Tricks of the UNIX Masters" by Russel G. Sage

------------------------------------------------------------------------


From: Владимир Казеннов

------------------------------------------------------------------------


* ВВЕДЕНИЕ *


Непрерывное снижение цен, рост производительности в наше время и

ожидаемое появление новых микро- и супер-микрокомпьютеров делают мощь

системы UNIX доступной для все большего круга пользователей. Системы

UNIX или типа UNIX работают на любых машинах, от уровня PC-XT до AT и

выше. Доступность больших объемов оперативной памяти и мощных микроп-

роцессоров привела к возрастанию интереса к многозадачности, системам

мультипроцессирования - сфере, в которой UNIX имеет солидную репута-

цию.

Однако применение UNIX с максимальной отдачей - дело нелегкое.

Люди годами высказывали неудовлетворение тем, что она не является

"дружественной" по отношению к пользователю - и это разумная критика,

хотя на самом деле UNIX содержит средства для построения интерфейсов

любого требуемого уровня сложности. Наиболее важная причина трудоем-

кости эффективного использования UNIX состоит в том, что в системе

используются очень плодотворные идеи, не знакомые многим людям, рабо-

тавшим с более простыми операционными системами. UNIX предоставляет

также гораздо больше инструментальных средств, более гибких и с су-

щественно большими возможностями, чем, например, популярная MS-DOS (в

чем можно убедиться беглым сравнением соответствующих руководств).

Вероятно, Вы, читатель, начинали с изучения UNIX в объеме, доста-

точном для решения конкретных задач в вашей системе, будь то текстовая

обработка и форматирование текстов, программирование или запуск ста-

тистических пакетов. Через некоторое время вы, видимо, накопили (от

других людей или в результате собственной работы) небольшой набор при-

емов, включающий, возможно, некоторый опыт простого программирования

для интерпретатора командного процессора.

Хотя это естественный путь развития, принимая во внимание, что в

UNIX более 200 команд, вы можете не заметить или пропустить многие

мощные и полезные идеи. Более важно то, что вы можете лишиться

перспективного взгляда, который приходит с полным пониманием того, как

работают различные части UNIX, и концепций, которые лежат в их основе.

В книге показаны многие полезные инструментальные средства и при-

емы, которые вы можете сразу применять в работе, чтобы значительно по-

высить производительность UNIX. В отличие от некоторых книг, которые

просто представляют набор командных файлов или других средств, здесь

описываются подробности того, как работает каждая программа, и указы-

ваются некоторые направления адаптации программ для ваших конкретных

нужд. Сочетание инструментальных средств, концепций и техники решения

задач поможет вам стать мастером UNIX.


ЧТО ВЫ ДОЛЖНЫ УЖЕ ЗНАТЬ


Для того, чтобы извлечь пользу из данной книги, вы должны обла-

дать некоторым базовым опытом работы в системе UNIX. Вы должны знать

общие аспекты файловой системы, такие, как каталоги, вложенность и

маршрутные имена. Вы должны знать, как использовать один из редакторов

UNIX, чтобы вводить командные файлы интерпретатора командного про-

цессора и, по крайней мере, слегка знать программирование с использо-

ванием командного процессора. Мы сделали мало допущений, касающихся

того, что вы должны знать о данной команде или особенностях UNIX. Каж-

дая команда или понятие объясняется, когда оно вводится, а периоди-

ческие экскурсы в ваши руководства по UNIX могут прояснить все темные

места. Запомните одно: имеется так много команд с таким большим коли-

чеством опций, что даже мы, профессионалы, должны время от времени об-

ращаться к книге.

Если вы только начинаете использовать UNIX, то книга "UNIX Primer

Plus" ("Расширенный букварь по UNIX") Митчела Уэйта (Mitchell Waite),

Дональда Мартина (Donald Martin) и Стефена Прата (Stephen Prata)

(SAMS, 1983) даст вам исчерпывающее введение в предмет. Если вы уже не

новичок, но все еще не имеете четкого представления о внутренней рабо-

те командного процессора и программировании для него, то вам даст фун-

даментальные основы другая книга - "Advanced UNIX - A Programmer's

Guide" ("Руководство программиста по расширенному UNIX") Стефена Прата

(SAMS, 1985). Фактически эта книга является идеальным спутником и

справочником для дополнительных исследований, которые составляют нашу

книгу.


О КАКОЙ СИСТЕМЕ UNIX ИДЕТ РЕЧЬ


Имеется, конечно, много вариантов UNIX. Помимо основных семейств

реализаций UNIX (AT&T System V, Microsoft XENIX и Berkeley [BSD]),

распространено несколько различных командных процессоров, среди кото-

рых наиболее широко используются два - командный процессор Bourne ко-

мандный процессор Си. Все командные файлы в данной книге были провере-

ны и в System V, и в XENIX с использованием командного процессора

Bourne, за исключением тех случаев, которые специально отмечены. БОЛЬ-

ШИНСТВО наших командных файлов работает также под управлением команд-

ный процессор Bourne в BSD, хотя нескольких команд System V нет в

системе BSD и наоборот. Мы пытались указать те места, в которых эти

две системы существенно отличаются, и дать некоторые альтернативные

подходы для пользователей BSD.

Большинство наших командных файлов было также переписано для за-

пуска под управлением программного процессора Си после учета син-

таксических отличий. Если вы пользуетесь командным процессором Bourne

и хотели бы поэкспериментировать с программным процессором Си, то хо-

рошим введением является указанная ранее книга "Advanced UNIX - A

Programmer's Guide".

Если один из наших командных файлов не работает в вашей системе,

не впадайте в панику. Проверьте, пожалуйста, следующее:


- Какая у вас версия UNIX? Отмечали ли мы что-нибудь относительно

этой версии?

- Какой командный процессор вы используете (Bourne, Си или дру-

гой)?

- Должны ли вы поменять маршрутное имя в силу того, что в вашей

системе что-то находится в другой части?

- Не утратили ли вы прав доступа к определенному файлу? Не нужно

ли вам применить команду su, чтобы получить другой идентифика-

тор пользователя или стать в корень?

- Использует ли данный командный файл предварительно под-

готовленный командный файл, который вы еще не ввели в

вашу систему?

Большинство из этих советов довольно очевидны, но никогда не ме-

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

отладочные сеансы.


ОБЗОР ГЛАВ


Давайте бросим беглый взгляд на то, что описывается в данной кни-

ге, чтобы вы получили представление о предмете книги и знали, где най-

ти нужную тему.

Глава 1 - введение в среду выполнения системы UNIX в целом,

способы обращения пользователей к ее различным частям. Вы увидите, ка-

ким образом ваш рост как мастера UNIX позволит вам максимально успешно

применять все аспекты и особенности среды.

В главе 2 рассматривается наиболее важная особенность среды UNIX

- файловая система - и вводятся инструментальные средства для изучения

файловых структур и содержимого файлов.

Глава 3 предоставляет средства для практических каждодневных за-

дач по сопровождению файлов - для копирования и сохранения файлов и

для удаления ненужных файлов.

В главе 4 описываются виды файлов, которые важны для программной

документации, и предоставляются инструментальные средства, которые об-

легчают вам сопровождение вашей растущей коллекции программных

средств.

В главе 5 обращено внимание на вашу собственную среду (home-сре-

ду) и личное администрирование. Сюда относится управление вашим плани-

рованием и задачами. Представлено несколько полезных средств, помогаю-

щих вам.

Глава 6 предоставляет способы получения сведений о других пользо-

вателях и средства для обеспечения безопасности вашего рабочего прост-

ранства в системе.

В главе 7 рассматриваются некоторые аппаратные части устройств

UNIX, особенно, терминалы и диски с некоторыми примерами инструмен-

тальных программных средств. Включены также инструменты для работы с

файловыми системами.

Глава 8 посвящена коммуникациям в UNIX - сфере, значимость кото-

рой быстро возрастает. Этот материал поможет вам работать с несогласо-

ванными модемами, а также с проблемами безопасности и управления, ко-

торые возникают при работе с командами cu и uucp. Предлагаемые

средства помогут вам в работе как с коммуникациями от UNIX к другой

операционной системе, так и от UNIX к UNIX. Приведены также практи-

ческие примеры аппаратных конфигураций.

Глава 9 вводит читателя в системное администрирование и безо-

пасность. Вы можете найти здесь информацию, которую вы могли бы полу-

чать самостоятельно только посредством многолетнего чтения и экспери-

ментирования. Поскольку UNIX становится более распространенным в "ре-

альном мире", безопасность становится очень важным вопросом. Мы

представляем концепции, даем информацию о том, за чем необходимо сле-

дить, и инструментальные средства, помогающие следить.

Глава 10 завершает книгу подборкой специальных приемов UNIX,

включающих одну-две командные строки, которые действуют неожиданно эф-

фективно.

Набор приложений предоставляет информацию, полезную при програм-

мировании с помощью командного процессора и при отладке.

Поскольку некоторые из инструментальных средств используют ко-

мандные файлы, введенные ранее в данной книге, вы должны работать над

книгой в соответствии с последовательностью глав, когда внедряете ко-

мандные файлы в вашу систему. Однако вам не помешает сначала пере-

листать всю книгу.


* ГЛАВА 1. Среда системы UNIX *


Введение

Многообразие сред системы UNIX

Ваш регистрационный каталог: как сделать его комфортным

Теории относительности a la UNIX

Жизнь системы UNIX: некоторые метафоры


СРЕДА СИСТЕМЫ UNIX


ВВЕДЕНИЕ


В данной главе рассматривается среда, которая существует в систе-

ме UNIX и вокруг нее. Освещение всех аспектов среды UNIX было бы слиш-

ком громоздкой задачей и выходит за пределы данной книги. Даже отдель-

ным утилитам, таким как fsdb и sdb, нужны свои собственные книги, что-

бы отдать им должное. Мы пытаемся дать читателю начальные сведения,

философию и ощущение системы UNIX, что лежит в основе исследований и

инструментов, представленных в этой книге.

Читая эту главу, вы, возможно, захотите прочитать (или перечи-

тать) команды profile(4), environ(5), term(5), termcap(5) и termio(7)

в руководствах по UNIX, чтобы ознакомиться с механизмами, которые пре-

доставляет UNIX для установки рабочей среды.

Внутри системы UNIX существует множество различных подсред. Все

вместе они образуют общую картину, в виде которой мы представляем себе

UNIX. Эта книга посвящена наиболее важным аспектам среды UNIX с целью

закладывания фундамента, необходимого для понимания всей системы. Это

даст вам контекст, в котором можно посмотреть на собственную работу в

системе, независимо от того, являетесь вы пользователем, программистом

или администратором системы.

В данной главе рассматриваются различные среды в компьютерах с

теоретической точки зрения, описывается "домашняя" среда и методы ее

установки, способы использования условных обозначений и глобальная

среда.


"МНОГООБРАЗИЕ СРЕД"


Каждая компьютерная система поддерживает много различных сред.

Эти среды используются как строительные блоки для создания функцио-

нальных рабочих систем. Различные уровни необходимы как для сокращения

объема работы по управлению машиной, так и для построения такого ин-

терфейса, чтобы мы могли использовать компьютер на относительно высо-

ком, удобном для человека уровне.

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

уровни, на которых мы можем работать. Имея больше знаний о том, где мы

находимся в системе, и о том, как она функционирует вокруг нас, мы мо-

жем легче строить растущие абстрактные модели на вершине тех моделей,

которые уже имеются. Компьютеры - это фактически рабочие модели

абстракций, так что чем больше мы понимаем модели, тем лучше мы можем

использовать их для упрощения и ускорения нашей работы.

Многообразие моделей на рис.1-1 . демонстрирует различные уровни,

функционирующие внутри компьютера. Нижний слой - это стартовая точка,

от которой многообразие растет вверх. Каждый уровень строится на пре-

дыдущем и используется для поддержки уровня, расположенного над ним.

Для каждого более высокого уровня среда более объемна и более "вирту-

альна" в том смысле, что имеет место меньше условных ограничений.

Верхние уровни используют для своей работы нижние и, таким образом,

скрывают подробности, необходимые для работы этих нижних уровней. Мы

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

низкого уровня, не зная ничего о нижних уровнях.


Давайте бросим беглый взгляд на уровни модели и поговорим о том,

какими из них оперирует данная книга.


Рис. 1-1

Многообразие компьютерных сред

------------------------------------------------------------------------


\ L7 / Командные файлы (scripts)

\________________________________/

\ L6 / Прикладные программы,

\____________________________/ интерпретатор команд, языковые генераторы

\ L5 / Компилятор

\________________________/

\ L4 / Операционная система

\____________________/

\ L3 / Ядро

\________________/

\ L2 / Условная машина, ассемблер

\____________/

\ L1 / Микропрограммы

\________/

\ L0 / Логические схемы, аппаратные средства

\____/


------------------------------------------------------------------------


УРОВЕНЬ 0 - АППАРАТНЫЕ СРЕДСТВА


На самом нижнем уровне находятся аппаратные средства и логические

цепи. Этот уровень определяет способ хранения и обработки данных во

всех аппаратных средствах. Поскольку технология изготовления кремние-

вых микросхем продолжает развиваться, этот уровень становится физи-

чески меньше и проще, тогда как скорости запоминания и обработки про-

должают расти. На этом уровне компонентами являются центральный про-

цессор (ЦП), память, микросхемы поддержки и системная шина.

Отметим, что хотя прогресс на этом уровне продолжается, это вызы-

вает очень малые изменения на верхнем слое пирамиды. Философия системы

UNIX состоит в том, чтобы изолировать низкоуровневый аппаратный слой и

обеспечить единообразные интерфейсы к нему, которые не нуждаются в из-

менениях "наверху". Верхний слой даже не должен знать о нижнем слое.

Это не значит, что события в мире аппаратуры не важны в реальном мире,

ведь противоречия реального мира влияют на скорость и емкость

ресурсов, не говоря уже об их стоимости.


УРОВЕНЬ 1 - МИКРОКОМАНДЫ


Этот уровень во многом похож на язык программирования. Он явля-

ется инструментом, который использует архитектор системы для создания

"родного" машинного языка. Машинный язык сообщает аппаратуре, какую

конкретную команду следует выполнить.

В начале эволюции ЦП большинство наборов команд были аппаратно

кодированными. Это значит, что когда ЦП получал команду, декодирование

и выполнение производилось непосредственно цепями в кремниевой мик-

росхеме. Благодаря прогрессу в технологии ЦП, некоторые микросхемы мо-

гут быть программируемыми на уровне исполнения команд, что позволяет

конструкторам создавать и реализовывать новые наборы команд с мини-

мальными усилиями.


УРОВЕНЬ 2 - УСЛОВНАЯ МАШИНА


Данный уровень обеспечивает трансляцию из мнемоник языка ассемб-

лера в коды операций и данные машинного языка. Язык ассемблера - это

некоторая англо-подобная нотация, которая облегчает человеку понимание

и управление работой компьютеров.

Условная машина поддерживается ассемблером. Ассемблер может прев-

ращать идеи более высокого уровня в цепочки чисел, которые могут быть

затем выполнены. Наряду с ассемблером, применяются модели, помогающие

использовать аппаратуру компьютера. Здесь мы можем определить такие

вещи, как стеки, вектора прерываний и периферийный ввод-вывод.


УРОВЕНЬ 3 - ЯДРО


Ядро является следующим логическим продвижением вверх и концепци-

ей, которую можно теперь реализовать программно на условной машине.

Ядро предоставляет среду, поддерживающую еще большие абстракции, чем

те, что рассматривались до сих пор. Двумя наиболее важными абстракция-

ми на уровне ядра являются управление процессами для мультипрограмми-

рования и многозадачности, и файловая система, которая управляет хра-

нением, форматом, поиском файлов и т.п. Когда эти две области перепле-

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

операционной системы.

Одной из наиболее важных областей, которыми управляет ядро, явля-

ется безопасность. Проверки идентификации пользователя выполняются в

системных вызовах внутри ядра. Определенные механизмы используются яд-

ром для управления безопасностью файлов, устройств, памяти и про-

цессов. Единственный способ отключить механизмы безопасности состоит

в изменении исходного кода ядра и перекомпиляции всей системы, что

крайне нежелательно.


УРОВЕНЬ 4 - ОПЕРАЦИОННАЯ СИСТЕМА


Данный уровень строится на ядре, чтобы создать полную операцион-

ную среду. Потребность в дополнительных функциях системы можно удов-

летворить созданием автономных программ, имеющих конкретное назначе-

ние. Таким образом, совокупность всех специфических функций определяет

операционную систему.


УРОВЕНЬ 5 - КОМПИЛЯТОРЫ


Компилятор - это инструмент (или программа), построенный на опе-

рационной системе для дальнейшей разработки более совершенных и более

мощных сред. Новые среды могут предполагать еще большие абстракции,

чем на нижнем уровне, и делать больше допущений о том, что уже сущест-

вует. Это делает возможным символические конструкции более высокого

уровня, такие как структуры данных и управляющие структуры. Результа-

том является прикладная программа.

С помощью компилятора мы можем определить совершенно новый язык и

сделать его рабочим на компьютере, написав компилирующую программу,

которая читает этот новый язык. Это открывает целые новые области во

взаимодействии человека с машиной. Высокоуровневые языки могут вопло-

щать различные подходы к решению задач, например, процедурную модель

или объектно-ориентированную модель, и в конце концов, очевидно, могут

достичь выразительной мощи разговорного языка типа английского.


УРОВЕНЬ 6 - ПРИКЛАДНЫЕ ПРОГРАММЫ


В наше время прикладные программы могут означать массу разнооб-

разных вещей. Мы можем предположить, что любая программа, которая сде-

лана с помощью компилятора, является прикладной программой. Примерами

возможных прикладных программ являются следующее поколение языков, ин-

терпретаторов и генераторов прикладных программ. Интерпретатор - это

программа, написанная на распространенном языке высокого уровня, кото-

рая может декодировать и исполнять другой синтаксис (или язык). Приме-

ром, который интересует нас в системе UNIX, является командный про-