Рассел Сейдж. Приемы профессиональной работы в unix перевод "Tricks of the unix masters" by Russel G
Вид материала | Документы |
- Лекция 10. Файловые системы Unix, 116.79kb.
- Unix-подобные операционные системы, характеристики, особенности, разновидности, 40.63kb.
- Методические материалы, 3002.45kb.
- Курс для опытных администраторов unix, 67.69kb.
- Министерство Образования Российской Федерации. Юургу курсовая, 383.18kb.
- Программа курса «unix», 18.71kb.
- Лабораторная работа №1. Командный интерпретатор, 418.36kb.
- The design of the unix operating system by Maurice, 9215.6kb.
- Разработка автоматизированной системы мониторинга аппаратного и программного обеспечения, 20.06kb.
- Лекція 6 "Інформатика та комп'ютерна техніка" Тема Сервісні та прикладні програми Види, 55.04kb.
цессор shell. Это программа на языке Си, созданная для чтения и испол-
нения команд, записанных по правилам синтаксиса, определенных команд-
ным процессором shell.
Генератор прикладных программ - это программа, написанная на язы-
ке высокого уровня. Она предназначена для получения достаточной инфор-
мации от пользователя о его приложении и может использовать компиля-
торный язык, например Си, для написания прикладной программы, реализу-
ющей то, что требуется. Пользователь ничего не программирует. Выходом
генератора является рабочая программа.
UNIX не делает особых различий между уровнями. Некоторые особен-
ности системы, например, конвейеры, являются частью ядра на нижнем
уровне. Команда типа cat выполняет довольно простую функцию на уровне
операционной системы. Нечто подобное ls напоминает простую прикладную
программу с относительно малым набором опций. Большие программы, по-
добные семейству roff, определенно являются полновесными приложениями,
а средства типа sed и awk являются фактически интерпретаторами неболь-
ших языков программирования. Замечательной особенностью системы UNIX
является единообразие, которое она вносит в этот широкий диапазон
функций.
УРОВЕНЬ 7 - КОМАНДНЫЕ ФАЙЛЫ
Этот верхний уровень является языком, который интерпретирует
программа /bin/sh (в случае командного процессора Bourne shell). Ее
синтаксис поддерживает полный язык программирования. Хотя этот язык
лишен ряда встроенных структур и функций современного языка высокого
уровня, он имеет все необходимое для написания полезных программ.
Большим плюсом является то, что языку командного процессора доступны в
качестве внешних функций любые средства, утилиты и программы, которые
имеются в системе UNIX. Это значит, что алгоритмы, которые могут пот-
ребовать сто или более строк на языке низкого уровня типа Си, язык ко-
мандного процессора может выразить в двадцать строк. За счет потери
производительности, разумеется.
ВАШ "РЕГИСТРАЦИОННЫЙ КАТАЛОГ"
Поскольку UNIX создавалась как многопользовательская система,
многое сделано для того, чтобы система была безопасной и удобной для
каждого пользователя. Вам выделяется определенная часть файловой
системы (т.е. область на диске), которая является полностью вашей и
больше ничей. Вы можете заблокировать вашу область так, чтобы никто не
мог заглянуть вовнутрь, или же можете оставить ее открытой, чтобы дру-
гие люди могли читать эту область или писать в нее.
Помимо определения вашего места в системе, можно привязать "до-
машний" каталог (home-catalog) к вашим точным спецификациям. "Регист-
рационный каталог" - это не только область файловой памяти, но и вся
ваша среда. Можно установить переменные командного языка для определе-
ния путей по системе. Можно создать инструментарий, чтобы помочь вам в
работе.
ЧТО ТАКОЕ СОСЕДСТВО?
Во многих более старых мини- и микрокомпьютерах среда имеет
"плоскую" файловую систему. Это значит, что все файлы размещаются в
одной огромной области хранения и нет логических разделов для их разг-
раничения. Отсутствие разделов порождает массу файлов, через которые
нужно пробраться, когда вы хотите найти определенный элемент. Некото-
рые системы имели в своих файловых системах групповые разделы, но
обычно такие разделы были различными плоскими файловыми системами.
Время показало, что такой тип среды (или модели) - не лучшее решение.
Решение, которое использует UNIX,- перевернутая модель дерева.
Корень системы находится наверху, а ветви растут в стороны и вниз.
Имеется один и только один корень наверху. Ветви могут исходить в лю-
бом направлении и простираться вниз на любую глубину. Кроме того, вы
можете иметь присоединяемые ветви, которые можно изъять из системы, а
затем вернуть обратно. Они монтируются на существующую в системе дре-
вовидную структуру.
Когда вы регистрируетесь в системе, вы можете попасть в любое
место древовидной структуры. Регистрационный каталог определяется в
файле паролей. К ней можно обратиться по имени $HOME, которая является
одной из предопределенных переменных командного языка для вашего
использования. Теперь у вас есть персональная древовидная структура
под этим именем каталога. Она полностью ваша и может быть сделана не-
доступной для кого угодно, кроме корня. Вы можете организовать ваш ре-
гистрационный каталог ($HOME) любым приемлемым для вас способом.
ПЛАНИРОВКА РЕГИСТРАЦИОННОГО КАТАЛОГА
Как только ваш регистрационный каталог присоединен к определенно-
му месту дерева, вы получаете полное управление структурой, которая
существует ниже этого места. Вы можете оставить ее плоской или сделать
подобной дереву. Эта структура зависит фактически от ваших потреб-
ностей и энтузиазма в эксплуатации вашей собственной области. Наиболь-
шая выгода для нас состоит в том, чтобы использовать вашу "домашнюю"
среду для поддержки ваших работ и максимально уменьшить объем ручной
работы. В следующих двух главах описано множество средств, которые мо-
гут работать с вашей личной файловой системой.
На рис.1-2 показана древовидная структура вашего регистрационно-
го каталога. Эта планировка представляет каркас среды, который вы мо-
жете заполнить соответствующей информацией.
По мере того, как растет ваше мастерство использования системы,
вам могут понадобиться эти типы областей для размещения в них информа-
ции. Вы обнаружите также, что наш сценарий хранения информации предпо-
лагает движение по деревьям, или их обход, так что вам гарантируется
выгода от использования иерархической конструкции.
Давайте пройдемся по этой примерной структуре и определим, каковы
ее части. Данная структура включает много файлов и каталогов, но все
они имеют определенное назначение. Возможно, вы не захотите использо-
вать в точности эти имена, но вы получаете совет, какие типы категорий
могут встретиться и как использовать систему для поддержки этой струк-
туры.
Корнем этого дерева является регистрационный каталог, который оп-
ределен в пятом поле файла /ets/passwd. Использование файла паролей
описано в passwd(4). Вот пример парольного входа автора:
russ:.pDIPADYfIXBY:103:101:Russ Sage:/usr/russ:/bin/sh
Слева направо вы видите имя пользователя (russ), пароль
(.pDI...), идентификатор пользователя (103), идентификатор группы
(101), личный комментарий, имя регистрационного каталога (/usr/russ) и
командный процессор shell, получаемый при входе в систему (/bin/ sh).
ФАЙЛЫ В РЕГИСТРАЦИОННОМ КАТАЛОГЕ
Файлы, описываемые ниже, разделяются на три категории: файлы, ко-
торые обычно присутствуют в вашей системе, если вы работаете в System
V, файлы, которые имеются обычно в Berkeley 4.2, и файлы, которые соз-
даются при использовании программ из настоящей книги.
ФАЙЛЫ System V
Первый файл - это .news_time. Дата этого файла соответствует то-
му, когда вы последний раз читали новости в каталоге /usr/news. Для
чтения новостей пользуйтесь командой news(1). Эта команда выдает но-
вости, появившиеся позже даты создания файла .news_time.
Следующий файл - .profile. Этот файл выполняется при каждой ре-
гистрации в интерпретаторе shell и может быть использован для привязки
вашей собственной среды. В дальнейшем мы рассмотрим этот файл более
подробно.
Следующий файл - calendar (календарь). Этот файл содержит даты и
сообщения. Команда calendar(1) читает в этом файле даты, очень близкие
к текущей дате. Затем печатаются или посылаются вам по почте сообще-
ния.
Последний файл - mbox, ваш системный почтовый ящик. Когда вы с
помощью команды mail(1) сохраняете почту, она направляется по умолча-
нию в mbox.
ФАЙЛЫ 4.2 BSD
Первым файлом здесь является .cshrc. Это первая стадия настройки
системы на пользователя, выполняемой интерпретатором cshell. В системе
UNIX присутствие "rc" в имени файла означает "команды запуска" ("run
commands") или "запуск при загрузке" ("run on boot up").
Файл .login является синонимом файла .profile интерпретатора sh.
Этот файл содержит команды настройки на среду пользователя, которая
вам нужна при регистрации в системе.
Следующий файл - .logout. Он выполняется, когда вы выходите из
системы. Например, вы можете применить его для печати учетной информа-
ции, такой как время, в течение которого вы работали в системе,
используемый вами размер дискового пространства и т.д. System V не
имеет подобного файла.
Следующий файл - .msgsrc, предназначенный для команды msgs(1)
системы Berkeley. Файл .msgsrc содержит последний, прочитанный вами
файл сообщений. Файлы сообщений хранятся в виде последовательно прону-
мерованных файлов в каталоге /usr/msgs.
ТРЮКИ С ГЛАВНЫМИ ФАЙЛАМИ
Вот программы и файлы, которые вы можете разработать во время
использования данной книги. Файл .lastlog содержит даты каждого вхож-
дения в систему с вашими учетными данными. Программа, которая управля-
ет этим файлом, называется lastlog и представлена в главе 5.
Следующий файл - .trashcan. Это каталог, который временно хранит
файлы, удаленные вами. Если вы уверены, что они вам не нужны, то их
можно удалить навсегда. Эта особенность рассмотрена в главе 3.
Последний файл - .phone.list. Это ваша личная база данных со
списком телефонов. Она обслуживается командой phone (см. главу 5).
КАТАЛОГИ
Первым каталогом является adm. Он содержит административные фай-
лы, которые вы можете иметь, например расписания, информацию о сотруд-
никах, встречах и т.д.
В каталоге bbs имеются подкаталоги для каждой "доски объявлений",
которую вы вызываете. Когда вы обращаетесь к этим системам, вы имеете
место для размещения всех соответствующих файлов и данных. Необходимая
вам информация - это меню для системы, вспомогательный текст, загрузки
программ и общая информация, которая вас интересует.
Каталог bin содержит все инструментальные средства, которые у вас
есть. Это могут быть командные файлы или объектные модули откомпилиро-
ванных программ. Подкаталог src не обязателен. В нем хранится исходный
код на языке Си для объектных модулей, имеющихся в bin, так что исход-
ный текст для быстрой фиксации ошибок и изменения всегда под рукой.
Каталог doc - это корень всех видов документации. Подкаталогами
здесь могут быть формы, письма, записки, разнообразная информация и
отчеты. Каждый подкаталог содержит определенные файлы в этих областях.
Каталог etc содержит любые системные или административные команды
и файлы, которыми вы пользуетесь. Если вы имеете административные обя-
занности, типичным содержимым этого каталога может быть резервная ко-
пия текущих конфигурационных файлов, используемых системой. Вы можете
сделать резервную копию файлов
/.profile
/etc/bcheckrc
brc
checklist
gettydefs
group
inittab
motd
mountable
unmountable
passwd
profile
rc
/usr/lib/crontab
/usr/lib/uucp/L.sys
USERFILE
uudemon.day
uudemon.hr
uudemon.wk
или любой другой информации о системе.
Каталог proj предназначен для специальных проектов, которые у вас
есть. Скорее всего, вы назовете этот каталог не proj, а по имени про-
екта, например, dev для разработки (development) или qa для чистовой
шлифовки (quality assurance). Все данные, корреспонденция, документа-
ция и исходный код для каждой работы направляются в главный каталог
проекта. Конечно, у вас может быть более одного каталога проекта.
Следующий каталог - mail. Это хорошее место для размещения вашей
почтовой корреспонденции от других людей, использующих систему. Имена
файлов в этом каталоге являются пользовательскими. Например, если бы я
получил почту от Боба, то она находилась бы в файле с именем bob.
Каталог src - для всего исходного кода. Логически сгруппируйте
ваш исходный код по подкаталогам, чтобы облегчить его поиск в будущем.
Возможными подкаталогами являются asm для ассемблерного кода, c для
исходного кода на Си, games (игры), misc (разное), script для команд-
ных файлов и sys для любого исходного кода, относящегося к системе.
(Если вы держите исходные тексты ваших личных инструментов в каталоге
/bin/src, то здесь вы, возможно, продублируете их.)
Каталог sys - это склад информации, имеющей отношение к системе.
Здесь могут быть резервные копии критических системных файлов, доку-
ментация по областям системы, куски выводимой информации команд who,
ps, uucp, регистрационных файлов или что-либо иное.
Последний каталог - tmp, который является рабочей областью для
размещения временных файлов. В основном все, что находится в tmp, вы
можете в любое время удалить, и средство can, описанное в главе 3, по-
могает вам в этом.
Отметим, что регистрационный каталог имеет минимальное количество
обычных файлов. Это уменьшает путаницу, которая может происходить с
плоскими файловыми системами. Каждый файл должен быть на своем месте,
но может быть размещен не только здесь. Если возникает какой-либо род
задач, когда файлы, связанные с этой задачей, могут быть перепутаны с
другими файлами, создайте отдельный каталог.
АНАЛИЗ ПРИМЕРА ФАЙЛА НАСТРОЙКИ СИСТЕМЫ
Файл .profile, как следует из его названия (профилирование - фор-
мирование контура, очертаний), функционирует для установки и инициали-
зации параметров системы, которые вам нужны. Сюда входит установка
терминалов, определение переменных, запуск программ и конфигурирование
исполняющей системы. Пример файла настройки можно найти в описании ко-
манды profile(4). Рассмотрим .profile, используемый автором. Мы вклю-
чили его на столь ранней стадии, чтобы предложить вам коснуться поня-
тий, которые более подробно раскрываются далее в этой книге. Не за-
ботьтесь о понимании работы каждой части примера. Пока что просто сде-
лайте мысленную отметку возможностей. Ваш .profile может быть проще и
почти наверняка будет другим.
1 # @(#).profile v1.0 Defines "home" on the system
Author: Russ Sage
3 CHOICE="ushort"
4 case $CHOICE in
5 ufull) PS1="`uuname -l`> ";;
6 ushort) PS1="`uuname -l|cut -c1-3`> ";;
7 graphic) PS1="[[12mj[[10m ";;
8 esac
10 LOGNAME=`logname`
11 HOME=`grep "$LOGNAME:" /etc/passwd | cut -d: -f6`
12 MAIL=/usr/spool/mail/$LOGNAME
13 export LOGNAME HOME MAIL
15 HA=$HOME/adm
16 HBB=$HOME/bbs
17 HB=$HOME/bin
18 HD=$HOME/doc
19 HE=$HOME/etc
20 HM=$HOME/mail
21 HP=$HOME/proj
22 HSR=$HOME/src
23 HSY=$HOME/sys
24 HT=$HOME/tmp
25 HDIRS="HA HBB HB HD HE HM HP HSR HSY HT"
26 export $HDIRS HDIRS
28 P=/usr/spool/uucppublic/$LOGNAME; export P
30 CDPATH=.:..:$HOME:$HDIRS
31 PATH=.:/bin/:/usr/bin:/etc:$HOME/bin
32 SHELL=`grep "$LOGNAME:" /etc/passwd|cut -d: -f7`
33 export CDPATH PATH SHELL
35 case "`basename \`tty\``" in
36 console) eval `tset -m ansi:ansi -m :\?ansi -r -s -Q`;;
37 tty00) eval `tset -m ansi:ansi -m :\?ansi -r -s -Q`;;
38 tty01) eval `tset -m ansi:ansi -m :\?ansi -r -s -Q`;;
38 esac
41 echo TERM = $TERM
42 TERMCAP=/etc/termcap
43 export TERM TERMCAP
45 HZ=20
46 TZ=PST8PDT
47 export HZ TZ
49 umask 0022
51 echo "\nTime of this login : `date`"
52 lastlog -l
54 RED="[[31m"
55 GREEN="[[32m"
56 YELLOW="[[33m"
57 BLUE="[[34m"
58 CYAN="[[35m"
60 case "`date|cut -d' ' -f1`" in
61 Mon) echo "$RED";;
62 Tue) echo "$GREEN";;
63 Wed) echo "$YELLOW";;
64 Thu) echo "$BLUE";;
65 Fri) echo "$CYAN";;
66 esac
КАК РАБОТАЕТ .profile
Когда вы входите в систему, регистрационная программа выполняет
интерпретатор shell с параметром '-' (например, -sh). Это сигнализиру-
ет интерпретатору shell, что сейчас момент регистрации и что должен
быть выполнен файл настройки. Сначала выполняется /etc/profile - общий
файл настройки, установленный системным администратором для всех поль-
зователей, а затем файл .profile пользователя. Каждый интерпретатор
shell после этого больше не запускает эти установочные программы. В
файле /etc/ profile интересно проверить машинно-зависимую информацию и
посмотреть, какие умолчания были для вас установлены. Если вы хотите
выполнить ваш .profile в любой момент после входа в систему, наберите
". .profile" (можно писать и ".profile", проверено, что обе формы ра-
ботают - Прим. переводчика).
Для поддержки вашего регистрационного каталога, используйте пере-
менные командного процессора (переменные shell), чтобы облегчить пе-
редвижение и сократить количество нажатий клавиш при работе с маршрут-
ными именами. Переменные shell всегда являются строками и, будучи один
раз определенными, не исчезают, пока вы не выйдете из системы.
При использовании переменные shell являются локальными для рабо-
тающего в данный момент интерпретатора shell. Их можно передать ин-
терпретаторам shell более глубокого уровня путем их "экспортирования".
Следовательно, если вы создаете новый командный процессор, все ваши
экспортированные переменные будут по-прежнему определены для этого ин-
терпретатора shell. Исчерпывающий список переменных shell, установлен-
ных по умолчанию и используемых системой, см. в приложении 1.
Отметим, что в нашем примере файла настройки для каждого подката-
лога первого уровня, который есть в нашем регистрационном каталоге, мы
также имеем переменные shell, связанные с именем этого подкаталога.
Таким образом, мы можем легко обращаться к различным областям нашего
регистрационного каталога.
ПОСТРОЧНЫЙ РАЗБОР ПРИМЕРА ФАЙЛА НАСТРОЙКИ
Строки 3-8 делают хитрую установку главной подсказки - переменной
PS1. В строке 3 инициализируется переменная, которая выбирает подсказ-
ку. Значение ushort жестко закодировано в файле, но вы всегда можете
запросить его или установить его в зависимости от файла.
Первой альтернативой является ufull, используемая для установки
подсказки в виде полного имени узла uucp в локальной системе. Вы выби-
раете такую подсказку, если используете несколько машин и для доступа
к одной машине применяете другую. Отличительная подсказка напоминает
вам, какой машиной вы пользуетесь. Отметим, что подсказка имеет одина-
ковое число символов и для короткой строки, и для длинной. Если же вам
нужно имя узла uucp, но не нужна длинная строка для подсказки, вы мо-
жете выбрать ushort, что дает первые три символа имени узла. Как пока-
зано в строке 6, имя получается применением команды uuname для получе-
ния локального имени узла (опция -l). Затем это имя пропускается через
команду cut, которая вырезает символы с первого по третий. Результат
присваивается переменной подсказки.
Последняя альтернатива для тех из вас, кто имеет графические сим-
волы. Назначение в строке 7 есть греческий символ. Его можно получить
применением специальных управляющих последовательностей, которые ука-
зывают терминалам отображение специальных символов. Символы [ явля-
ются визуальным представлением управляющего символа в программе vi. Вы
можете получить этот символ в программе vi, набрав control-v, а затем