Версия для печати

Архив документации на OpenNet.ru / Раздел "Документация для Solaris" (Многостраничная версия)

Введение в системное администрирование UNIX. Solaris 2.5

Максим Мошков

Оглавление

Приложения


Copyright © CIT

ВВЕДЕНИЕ В UNIX Solaris IBM PC

Версия 1.14. ноябрь 1996
© 1995 Максим Евгеньевич Мошков
(кроме главы "Команды UNIX")

НИИ Системных Исследований РАН,
Инф.сектор Отделения Математики Президиума РАН
956-2155, 274-6329, 938-1902
moshkow@ipsun.ras.ru
www.ras.ru/~moshkow/

[Содержание] [Вперед]


Copyright © CIT

ВКЛЮЧЕНИЕ СТАНЦИИ Sun SPARCstation

Включите системный дисплей, или (при отсутствии такового), консольный терминал, включите питание на системном блоке. Загрузка операционной системы начнется автоматически. Осталось немного подождать, пока загрузится операционная система и отработают все положенные утилиты инициализации системы, и вот на консоли появляется приглашение

Console login:
а на всех остальных терминалах - просто:
Login:

Введите свой входной login, и пароль. Если таковых не существует, войдите под login'ом root - "суперпользователь" - изначально он не имеет пароля.

Console login: root

Процесс нормальной работы Sun SPARCstation в любой момент времени можно перехватить, и передать управление на boot-prom. Для этого на системной клавиатуре нажмите STOP+A. (STOP - левая верхняя клавиша на левой дополнительной клавиатуре). Появится boot-prom prompt Ok:

   Ok _

Теперь можно вводить команды для boot-монитора. Пожалуй, наиболее популярными командами являются:
goвыйти из монитора, вернуться в нормальный режим
help
boot [параметры]загрузиться
ejectвытолкнуть "застрявший" флоппи-диск или CDROM
probe-scsiопросить опознанные SCSI-устройства (после этой команды возращаться к нормальной работе командой "GO" НЕЛЬЗЯ. Перезагрузитесь)

Если у вас "безголовый" Sun - сервер, то к нему в качестве консоли подключается алфавитно-цифровой терминал. Подключать можно к любому последовательному порту - A или B. Sun обнаружив отсутствие системной клавиатуры опрашивает все порты по очереди, и обнаружив на одном из них терминал, делает его консольным (со всеми вытекающими из этого последствиями).

Чтобы вызвать boot-монитор с алфавитного консоля, нажмите на нем клавишу BREAK ( На терминале vt220 BREAK - это клавиша F5).

Выключать алфавитно-цифровой консоль на Sun-сервере нельзя - при этом терминал генерит сигнал BREAK, и Sun переходит в останов в boot-мониторе. Как отключить эту интересную особенность безголовых Sun-серверов, мне не известно.

[Назад] [Содержание] [Вперед]


Copyright © CIT

РЕГИСТРАЦИЯ НОВОГО ПОЛЬЗОВАТЕЛЯ

Если вам в руки попалась свежеустановленная машина, то на ней еще не зарегистрировано никаких пользователей за исключением суперпользователя "root" - системного администратора. Пароля у него нет. Входите в него.

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

    su     # Super User

Каждый пользователь в системе Unix предварительно должен быть зарегистрирован. Пользователю полагается иметь: имя, пароль, номер пользователя, номер группы, к которой он принадлежит, домашний каталог, командный интерпретатор. У пароля могут быть дополнительные параметры - как часто его можно менять, время действия, и прочие секретные штучки.
CommentFamiliq Imya Otchestwo
lognameвходное имя пользователя
passwdпароль
UIDUser Identification Descriptor
GIDGroup Identification Descriptor
$HOMEДомашний каталог
shellКомандный интерпретатор

Бывают такие командные интерпретаторы:
/usr/local/bin/bashСамый удобный
/bin/kshЧуть похуже, но тоже ничего
/usr/local/bin/tcshУдобный, но "неправильный" и медленный
/bin/shСамый "правильный" и самый неудобный
/bin/csh"Неправильный" и чуть более удобный

/etc/passwd - Вся информация о пользователе хранится здесь
/etc/shadow - Здесь хранятся закодированные пароли

В любом уважающем себя Unix имеется "головная" утилита оператора (условно называемая sysadm) - диалоговая программа, с менюшками и окошками для выполнения насущных задач по системному администрированию. В том числе позволяет регистрировать новых пользователей. Запускать ее может только "суперпользователь" root. При запуске "sysadm" может спросить тип терминала, на котором ему предстоит работать. Ответьте: vt100

Примечание. В различных операционных системах эта утилита может называться по разному.
admintoolSolaris 2
sysadmshSCO UNIX
smit, msmitAIX
samHP/UX
setupLinux
sysadmUnixWare, ISC, SVR4

Команда регистрации нового пользователя.
adduserLinux
useraddSunOS 4.1
vipwBSD/OS, FreeBSD

Как зарегистрировать нового пользователя "вручную".

  1. Вставляем в /etc/passwd еще одну строчку:
        moshkow:x:555:1:Maksim E. Moshkow:/home/moshkow:/bin/ksh
    
  2. Приводим в соответствие файл /etc/shadow
        pwconv
    
  3. Создаем пользовательский каталог
        mkdir /home/moshkow
        chown moshkow /home/moshkow
    
  4. Задаем пароль новому пользователю
        passwd moshkow
    

[Назад] [Содержание] [Вперед]


Copyright © CIT

Начало работы в системе

Вход в себя

На экране терминала появится строка

        Console login:
или просто
        login:

Введите имя, под которым вы зарегистрированы в системе, если нужно, пароль. Если Вы ошиблись при вводе имени, нажмите CTRL+U или DEL или CTRL-D (для отмены), или несколько раз нажмите на Return, потерпите немного и повторите ввод.

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

   sunsite:~/$ _

Чтобы выйти из системы, наберите команду exit или просто нажмите Ctrl-D на пустой строчке;

   exit
или CTRL-D Переменные окружения

При входе в систему для пользователя автоматически устанавливается несколько переменных окружения. Чтобы посмотреть их значение, выполните команду env.

    env   # Распечатать проэкспортированные переменные окружения
LOGNAME=moshkow                  # имя пользователя
HOME=/home/moshkow               # его домашний каталог
SHELL=/bin/ksh                   # его командный интерпретатор
MAIL=/usr/mail/moshkow           # файл, в который складывается
                                 # приходящая ему почта
PS1=host1:$PWD$                  # формат приглашения
PATH=:/usr/local/bin:/bin:/usr/bin:/usr/X11/bin:/usr/informix/bin:
                                 # список поиска, по которому ищутся
                                 # выполнимые файлы
TERM=vt220                       # устанавливает тип терминала на
                                 # котором работает пользователь

Чтобы задать значение переменной окружения, выполните команду:

   Imya_Pereemennoj=znachenie   export Imya_Pereemennoj
например
   abc=Kalosha  export abc
просмотреть значение переменной можно командой echo в такой форме:
   echo $abc
Пользовательский профайл

Перед входом в систему сперва выполняется общесистемный профайл /etc/profile

Затем выполняется пользовательский файл ".profile" (если он есть) - в них можно устанавливать переменные окружения и делать установки режимов терминала. Просмотреть установленные переменные окружения можно командой env

Пример файла .profile

       # Добавить к списку поиска каталоги с нужными программами
PATH=:$HOME/bin:$PATH:/usr/sbin:/usr/local/bin:/usr/informix/bin
       #    Разрешить редактирование командной строки в ksh
EDITOR=emacs
export PATH EDITOR
LC_CTYPE=iso_8859_1 export LC_CTYPE # русские буквы - "буквы"
        #       Характеристики терминала
        # Забой=BackSpace          СтеретьСтроку=Ctrl-U
        # ПрерватьПрограмму=Ctrl-C "Жестокое_прерывание"=Ctrl-|
stty erase "^h" echoe      kill "^u" quit "^|" intr "^c"
stty cs8 -parenb -istrip
        # 8-битные символы, noparity, не  усекать  8-й  бит
        # при вводе
case "$0" in    # В зависимости от командного интерпретатора
*ksh)                   #       В Korn Shellе
                        #       Редактироваться стрелочками
        alias __A=`echo "\020"`         # ^P = восьмеричный 020
        alias __B=`echo "\016"`         # ^N
        alias __C=`echo "\006"`         # ^F
        alias __D=`echo "\002"`         # ^B
        # В приглашение ставить текущий pwd
        PS1=`uname -n`:'$PWD/$ '                     export PS1
        ;;
*bash)          # В bash'е в приглашение ставить host:pwd
        PS1='\h:\w/\$ '                              export PS1
        ;;
esac
#   обратите внимание:   в некоторых местах ПРОСТАЯ кавычка _'_
#   а в других - ОБРАТНАЯ  _`_ - будьте внимательны, это важно.
Клавиши для редактирования командной строки

Если вы работаете в командном интерпретаторе Korn-Shell /bin/ksh, и у вас установлена переменная EDITOR=emacs , то вы сможете редактировать командную строку с помощью стрелок и Ctrl-клавиш:
^P / ^NPREVIOUS / NEXT команда
^F / ^BFORWARD / BACK на позицию
^A / ^Eв НАЧАЛО / КОНЕЦ строки
^D / ^KУдалить СИМВОЛ / Удалить КОНЕЦ СТРОКИ
^YВспомнить удаленное
^RПоиск предыдущей команды
ESC ESCДобить имя файла
ESC = Распечатать похожие имена файлов
если командный интерпретатор bash, то обе последние команды сидят на клавише TAB
Выключение системы

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

    cd /
    shutdown -y -g0 -i0

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

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

    shutdown -y -g0 -i6

Перезагрузить или разгрузить систему можно также и из меню системного администратора команды sysadm .

В некоторых реализациях Unix, (в частности, в BSD, SunOS, Linux), команда shutdown использует другие ключи. Попробуйте в этом случае:

   shutdown -h now

[Назад] [Содержание] [Вперед]


Copyright © CIT

НЕСКОЛЬКО ПРОСТЕЙШИХ КОМАНД UNIX

Первоначальная версия этого текста
подготовлена НПО "КЛОТО"

Система UNIX различает БОЛЬШИЕ и малые буквы, и к этому нужно привыкнуть.

Если вы уничтожили какой-нибудь файл, то никаких проблем с его восстановлением у вас не будет. Потому что восстановить уничтоженный файл в системе Unix НЕВОЗМОЖНО. В Unix отсутствует команда unerase, и к этому тоже нужно привыкнуть. Вирусы и антивирусы в Unix тоже отсутствуют. Так что, пока хоть этой проблемы у администратора машины не будет.

В имени файла директории отделяются от последующей части символом "/" Если имя начинается со слэша - значит, это полное маршрутное имя. Простое имя файла может состоять из ЛЮБЫХ символов. Длина простого имени не более 256 символов. Длина полного маршрутного имени файла не более 1024 символов. Для задания шаблона имен используются символы * (произвольная последовательность символов) и ? (один произвольный символ). Два имени являются выделенными. Имя из одной точки "." обозначает текущую директорию, имя из двух точек ".." - вышележащую.

Чтобы запустить программу на выполнение, достаточно набрать ее имя и, если нужно, другие аргументы командной строки. Имя программы - это маршрутное имя файла, в котором эта программа находится. Аргументы разделяются одним или несколькими пробелами. Ключи команды обычно (но необязательно) выделяются знаком "-". Если командная строка кончается знаком &, происходит запуск параллельного процесса, в рамках которого будет выполняться команда, сообщается его номер, после чего можно продолжать работу не дожидаясь завершения фоновой задачи.

     команда -ключи -ключи ...  прочие разные аргументы ...

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

    команда > имя_файла
    (для стандартного вывода),

    команда < имя_файла (для переназначения стандартного ввода),

    команда 2> имя_файла (для стандартного протокола - системной диагностики).

Пример - записать в файл infdir содержимое текущей директории:

        ls > infdir

Если вывод назначен в файл, то перед началом выполнения команды создается пустой файл с соответствующим именем (если файл уже существовал, он опустошается), а затем в него помещается информация. Если информацию нужно дописать в конец существующего файла, следует воспользоваться конструкцией

        команда  >> имя файла
        команда 2>> имя файла

Пользователи системы UNIX объединяются в группы, и каждая из групп может обладать определенным набором привилегий.

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

TERM=vt220
HOME=/home/moshkow
PATH=:/bin/:dss/rk:/udd/moshkow/bin

Выдачу одной команды можно перенаправлять на вход другой команды. Для этого используется "|" - конвейер.

Например: посчитать суммарный размер и число строк всех файлов в каталоге /tmp, имена которых начинаются с символов "text" ...

    cat /tmp/text* | wc -c
# Команда cat сливает вместе все файлы вида /tmp/text*,
# wc -c -l считает количество символов и число строк во входном
# потоке.
Или просмотреть с листанием длинную выдачу команды:
   ps -ef  |  more

Того же результата можно достичь и без конвейера таким образом:

  ps -ef > temp-file
  more temp-file
  rm temp-file

Некоторые наиболее употребительные команды.

pwdполучить имя текущей директории
cdизменить текущую директорию
lsраспечатать информацию о файлах или директориях
catслить или вывести файлы-аргументы на стандартный вывод
cpкопировать файлы
mvпереместить (переименовать) файлы
lnсоздать ссылку на файл
rmудалить файлы
rmdirудалить директорию
mkdirсоздать директорию
echoвывести аргументы командной строки на стандартный вывод
psузнать номера выполняемых процессов
kill"убить" выполняемый процес по его номеру
manвыдать справку об использовании и ключах команды

pwd - выдать имя текущей директории.

  pwd

cd - сменить текущую директорию.

  cd [ директория]
  cd /usr/spool/lp/adm
  cd ..

Если директория не указана, Вы попадаете в свой "домашний" каталог $HOME

ls - распечатать каталог.

Формат команды:ls [ключи] [имена]

именаимена файлов или директорий; для директорий распечатывается список входящих в нее файлов, для файлов - повторяется имя файла и дополнительная информация в соответствии с ключами. Имена файлов выводятся в алфавитном порядке. Если имена не заданы, выдается содержимое текущей директории
ключипо умолчанию выдаются только имена файлов, в одну колонку и в алфавитном порядке

ls -al - вывод в длинном полном формате:
Права Число
линков
(имен)
Владелец Группа Размер Время
модификации
Имя
файла
-rwxr-xr-x
drwxr-xr-x
-rwxr-xr-x
1
1
1
moshkow
moshkow
moshkow
sys
sys
sys
17
12
0
Oct 18 16:13
Oct 18 16:11
Oct 13 14:14
../jean
../jelly
../j.bu.txt
Описание прав - строка из 10 символов
1 символ - "-" - значит файл, "d" - директория
2 символ - права "владельца" файла
5 символ - права пользователей одной с "владельцем" группы
7 символ - права всех "прочих" пользователей по отношению к файлу

Права:

    r - файл доступен для чтения,
    w - файл доступен для записи,
    x - файл является выполнимым,
    - - данное право доступа отсутствует.

Основные ключи команды ls

  • -a - вывести все файлы (даже те, имена которых начинаются с точки);
  • -x - вывод в 4 колонки;
  • -t - имена файлов сортируются не по алфавиту, а по времени последнего изменения (сначала идут самые свежие, только что измененные файлы);
  • -R - рекурсивно пройти по всем подкаталогам
  • -CF - оглавление каталога в несколько столбиков
  • -al - оглавление в полном формате

cat - слить и вывести файлы на стандартный вывод.

Формат команды: cat файл1 [файл2... ]

Cat читает каждый из указанных файлов и выводит их содержимое на стандартный вывод. Пример:

     cat файл
распечатывает содержимое файла, а
     cat файл1 файл2 > файл3
сливает первые два файла и помещает результат в третий. Чтобы добавить файл1 к файлу2, надо выполнить команду
     cat файл1 >> файл2

more, pg - просмотреть файл постранично.

Формат команды: more file_name ...

more позволяет просматривать файл, делая остановку на каждой границе экрана. Просмотром можно управлять с помощью клавиш:
q- завершить просмотр
ПРОБЕЛ- показать следующую страницу
ENTER- сдвинуться на одну строку
b- показать предыдущую страницу
/- поиск
h- Help - посмотреть список всех возможных команд

more используют, чтобы посмотреть "длинную" выдачу команды, ставя его конвейером "ей на хвост"
ls -al | more- просмотреть оглавление
ps -e | pg- просмотреть список работающих процессов

cp - копировать файлы.

Формат команды: cp файл1 файл2 или cp файл1 файл2 [...] каталог

Эта команда копирует файл1, ... , в ФАЙЛ. Если ФАЙЛ - это директория, то файл1 и др. копируются в нее под своими именами. Если ФАЙЛ не существовал, то он создается, если существовал, его старое содержимое теряется.

mv - переместить (переименовать) файлы.

Формат команды: mv файл1 файл2 или mv файл1 [файл2 ...] каталог

Команда аналогична команде cp, но не сохраняет исходного файла. Ее основная роль - переименование файлов и перенос файлов из одной директории в другую). Пример.

    mv /dss/*/rk_*.help /dss/delo

ln - связать файлы.

Формат команды:

    ln файл1 файл2 - создается "жесткий" линк
    ln -s файл1 файл2 - создается "символический" линк

Эта команда создает файлу файл1 еще одно имя. В итоге файл1 и файл2 на самом деле физически являются одним и тем же файлом. Если вы создаете так называемый "символический линк", (используя ключ "-s"), то файл file1 при этом не обязан существовать. Имя "файл2" при этом все равно будет создано.

rm - удалить файл или директорию.

Формат команды: rm [-fri] файл ...
-i- просить подтверждения на каждое удаление
-r- рекурсивно удалить вместе с подкаталогами
-f- не просить подтверждения, а сразу удалить

Для удаления пустой директории можно воспользоваться командой

     rmdir директория ...

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

    rm -r директория

ВНИМАНИЕ: Ввиду того, что под шаблон ".*" подходит каталог ".." НИКОГДА НЕ ДЕЛАЙТЕ КОМАНДЫ rm -r .*

mkdir - создать директорию.

Формат команды: mkdir имя_директории ...

chmod - изменение прав доступа к файлам.

Команда chmod меняет атрибуты (права доступа) файла.
Проставить файлам право на выполнение:

    chmod u+x file1
Разрешить остальным пользователям исправлять файл
    chmod a+w file1

echo - эхо.

Команда echo выводит на стандартный вывод свои аргументы

    echo "\017"

Вывести на терминал символ Ctrl-O, Он же 017 восьмеричное. Восстанавливает латиницу на терминалах типа vt220 и at386

Создать файл.

Для создания файла можно воспользоваться следующими способами:

  • touch primer - создает файл primer;
  • cat > primer - создает файл primer и пишет в него из стандартного ввода. Запись в файл закончится после нажатия CTRL+D.

ps - какие программы выполняются.

Сообщает номера процессов, которые выполняются в системе.
ps- запущенные только с этого терминала
ps -e- все
ps -f- в "полном" формате

kill - прервать процесс.

Команда kill посылает указанному процессу сигнал немедленной остановки. Прервать процесс номер 1078 (номер можно узнать командой ps -e)

    kill -9 1078

Прервать программу на вашем терминале, запущенную НЕ в фоновом режиме, можно нажатием клавиши CTRL-C, или клавиши CTRL-\

man - если вы забыли как пользоваться командой.

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

    man    имя_интересующей_вас_команды
    man -k ключевое_слово   - список команд, относящихся к ...

who - кто работает в системе.
who- этими командами можно узнать кто вы такой,
who am iи кто еще работает в системе
finger
last | more
id
man -k who- сообщит все возможные команды, которыми можно узнать, кто и что делает в системе

[Назад] [Содержание] [Вперед]


Copyright © CIT

ОЧЕНЬ КРАТКО О РЕДАКТОРЕ VI

По не знаю какой уж там исторической традиции "честные" (канонические) системы Unix не имеют в своем базовом комплекте ни одного нормального (еще раз подчеркну это слово - НОРМАЛЬНОГО) текстового редактора. Поэтому системный администратор обязан уметь пользоваться тем, что ему дают. А дают ему несравненный "Визуальный" экранный редактор файлов - Редактор VI.

Редактор VI имеет три режима:

  1. Командный - в этом режиме можно перемещаться по файлу и выполнять редактирующие команды над текстом. Команды вызываются ОБЫЧНЫМИ ЛАТИНСКИМИ БУКВАМИ.
  2. Ввода текста - в этом режиме обычные латинские буквы будут вставляться в текст.
  3. Режим строчного редактора ED используется для управления файлами (типа сохранить файл, зачитать файл и т.д.)

Прочитайте предыдущий абзац еще раз. Вы еще не испугались? Хорошо. Поехали. Итак:

       vi имя_файла
Вы в КОМАНДНОМ РЕЖИМЕ. ЧТОБЫ ВЫЙТИ ИЗ ФАЙЛА БЕЗ СОХРАНЕНИЯ нажмите:
     ESC  :  q  ! Enter
чтобы выйти из файла, сохранив изменения нажмите:
     ESC  :  w ! Enter
     ESC  :  q   Enter
выйти из файла с сохранением, одной командой:
     ESC  :  wq  Enter
для перехода В РЕЖИМ ВВОДА нужно нажать команды типа:
"i"вставлять здесь
"A"вставлять с конца строки
"cw"заменять текущее слово

ESC для ВОЗВРАТА В КОМАНДНЫЙ РЕЖИМ
CTRL-[ для возврата в командный режим

для перехода В РЕЖИМ УПРАВЛЕНИЯ ФАЙЛАМИ нужно нажать ":" (перейти в режим редактора ED)

Двигаться по файлу можно командами:
h,j,k,lвлево, вниз, вверх, вправо
Ctrl-FНа страницу вниз
Ctrl-BНа страницу вверх

А если вам очень повезет, то можно будет двигаться стрелочками. Чтобы перейти в режим везения, нужно описать для операционной системы ваш терминал. Этим займемся в дальнейшем (см. "Описание терминалов, terminfo, termcap").

Подгоните курсор к нужному месту и нажмите i (перевод в режим ввода) - вводите требуемый текст. ESC - прекратить ввод, перейти в командный режим

Подгоните курсор к ненужному месту и нажмите x (удалить символ) или dd (удалить строчку)

Еще несколько полезных команд:
oвставлять с новой строки (под текущей строкой)
aв режим ввода ЗА курсором
5yyзапомнить 5 строчек

Подгоните курсор к нужному месту
pвставить запомненные строки под курсором
Pвставить запомненные строки НАД курсором
Jсклеить две строки
/Шаблон поиска Enterпоиск
nповторить поиск

На этом ознакомление с редактором VI можно считать законченным. Того, кто считает, что VI может предоставить больше удобств и команд по редактированию, я отсылаю к прилагаемому здесь справочнику-памятке "наиболее употребительные команды VI", ну, и естественно (как всегда) - к документации. Остальных я отсылаю к не менее удивительному в своем роде редактору EMACS, которым, не смотря на это, рекомендую пользоваться впредь.

[Назад] [Содержание] [Вперед]


Copyright © CIT

РЕДАКТОР VI, СПИСОК КОМАНД

РЕЖИМЫ Переходы из режима в режим:
ВводКомандныйESC
КомандныйВводaAiIcCrRs
КомандныйРедактор ed:Q
Редактор edКомандныйvi

ПЕРЕМЕЩЕНИЕ ПО ФАЙЛУ

  • <стрелки>,h,j,k,l
  • ^U/^D - табуляция вверх/вниз
  • ^F/^B - страницу вниз/вверх
  • ^E/^Y - подвинуться на строку вниз/вверх
  • w/b/e - вперед/назад на слово/в конец слова
  • W/B/E - вперед/назад на слово/в конец опробеленного слова
  • (/) - назад/вперед на предложение
  • {/} - назад/вперед на абзац
  • [[/]] - назад/вперед на функцию или секцию
  • % - найти парную скобку ( или {
  • <n>G - на строку <n>
  • <n>| - в колонку <n>
  • H/M/L - в начало/середину/конец экрана
  • z/z./z- - текущую строку в начало/середину/конец экрана
  • ^/$/0 - начало/конец строки

РЕДАКТИРОВАНИЕ ТЕКСТА

  • x - уничтожить символ
  • X - забой
  • J - склеить строки

В РЕЖИМЕ ВВОДА

  • a/i / A/I - вставка за/перед _ / концом/началом строки
  • R режим замены
  • r - буква на букву
  • s - буква на буквы
  • S
  • o/O - вставить строку под/над _
  • C$ - Заменить конец строки

ИНФОРМАЦИЯ

  • ^G - о текущем файле и строке

ОТКАТКА

  • u - откатка (одна)
  • ^L/^R - перерисовать

РЕДАКТИРОВАНИЕ В РЕЖИМЕ ВВОДА

  • ESC - вернуться в командный режим
  • Забой - Забой
  • ^W - Убрать слово
  • ^U - Убрать строку
  • ^V - Вставить CRTL-символ[ы]

ОПЕРАТОРЫ С ПОЗИЦИОНИРОВАНИЕМ

  • p/P - вспомнить фрагмент за/перед _
  • <n> ["<буква_буфер>] <команда> [<m><команда позиционирования>] - весь фрагмент запоминается! или повтор команды для строки
  • d - уничтожать фрагмент
  • y - запоминать фраг
  • c - заменить фрагмент (==> в режим ввода )
  • </> - сдвинуть влево/вправо
  • ! команда - пропустить фрагмент через фильтр

ПРИМЕРЫ

  • 7yy - запомнить 7 строк в неименованном буфере
  • "aAd{ - добавить к буф a с удалением от _ до начала абзаца
  • !G sort - отсортировать строки от курсора и до конца

"МАКРОКОМАНДЫ"

  • :map клавиша_имя_макро тело_макрокоманды <CR>
  • :map! клавиша_имя_макро тело_макрокоманды <CR> - в режиме ввода
  • :ab сокращение сокращаемый_текст <CR> - в режиме ввода

ПОИСК

  • ?строка - искать вверх
  • /строка - искать вниз
  • n - повторить поиск
  • N - вернуться на последнюю найденную строку

ПОИСК_С_ЗАМЕНОЙ

  • :s/рег_выраж/замена/gc - глобальный с подтверждением
  • :Q/vi - вход / выход в режим ed
  • :g/строка - поставить визуальный фильтр
  • :+5 - движение по файлу

РЕДАКТОР_ED. ВХОД : / (НАДОЛГО Q) ВЫХОД CR / (VI)

  • ^^ - Перейти в альтернативное окно
  • :[1,$] w [>>] [file] - записать в file [от 1 до $ строки]
  • :q[!] - закончить сеанс [форсированно]
  • :[15]r [file] или [!komanda] - вставить после [15] стр
  • :e - редактировать новый файл
  • :n - редактировать следующий файл
  • :sh - выйти в Shell
  • :! команда - запустить на выполнение Shelloм

УСТАНОВКА РЕЖИМОВ VI

  • :set nu / nonu - нумеровать/ненумеровать строки
  • :set smd<CR> - показывать текущий режим
  • EXINIT="конфигурационные команды" - переменная окружения
  • .exrc - файл с командами конфигурации


Copyright © CIT

Какие Unix'ы бывают в природе?

Почти сразу после рождения Unix раскололся на две ветви - ветвь как бы "прародительская", которой владеет "официальный" хозяин торговой марки Unix - Unix System Laboratory - фактически ветвь коммерческая. И проект Исследовательского института Беркли - ветвь в основном свободных - бесплатных Unixов.

System III
System 6
USLBerkeley
System 7BSD 4.0
Unix V 3.1
Unix V 3.2BSD 4.2
BSD 4.3
System V Release 4
BSD 4.4
SVR4.0Конец проекта Беркли
SVR4.1
SVR4.2

Не так давно USL таки окончательно "засудила" BSD за использование фрагментов кода с копирайтом AT&T, что в не малой степени способствовало закрытию проекта BSD. Предпоследний из крупнейших поставщиков коммерческих BSD-подобных систем - Sun/SunOs перешли на линию SVR4. Торжественно и официально объявлено, что SVR4 является единственным наследником, объединившим лучшие решения, пришедшие из Unix V и BSD. Последним из могикан остается DEC: его OSF/1 для Alpha AXP - немного искалеченный, но все же достаточно близкий к корням BSD 4.3.

Unix'ы для IBM/PC
Некоммерческие или условно бесплатные
BSD/OS 2.0 BSDi/386 Недорогой коммерческий. Хорошо поддерживается. Поддерживает бинарную совместимость с SCO Unix
386bsdBSD 4.3 для Интелевской платформы
NetBSDпроизводная от 386bsd
FreeBSD 2.1Самая качественная сеть. Дабы не связываться сUSL, в нем полностью заново переписаны куски ядра на которых стоял копирайт AT&T.
Linux 2.0.11Самый популярный среди бесплатных Unix'ов. Число инсталляций оценочно между 100 тысяч и 1 млн. Непрерывное совершенствование силами сотен добровольцев довели его до уровня очень надежной, быстрой и качественной системы, пригодной для работы как в качестве графической рабочей станции, так и интернет-сервера. Поддерживает больше всех приложений, и hardware. Поддерживает спецификации IBCS, и потому может выполнять коммерческие приложения для SCO, в частности Oracle и Informix. С недавних пор в Linux реализованы клиент и сервер Netware, и Samba. Эмулятором MS Windows пользоваться еще нельзя, но говорить - уже можно.
Коммерческие Unix'ы
UnixWare 2.1SVR4.2 от SCO. Совместима с Windows и Netware. До сих пор не доведена до ума сеть. Поддерживает мультипроцессорные PC. После того как ее у Novell перекупило SCO, будущее этой системы перестало для меня казаться столь уж заманчивым.
Solaris 2.5SVR4.0 от SunSoft. Совсем как на Sun'е. В принципе, это должно говорить само за себя. Начиная с 5-й версии в Solaris наконец пришел Motif.
SCO Unix 4.0SVR3.2 Пока лидер по количеству установок среди всех Unix'ов для PC. Старая надежная отлаженная система. Поддерживает достаточно много hardware. Поддерживает мультипроцессорные PC. Непомерно дорог. Морально устарел. Имеет проблемы с русификацией. Медленный.
ISC Unix 3.2Надежен и компактен в работе. Морально устарел.

Unix'ы, поставляемые производителями компьютеров

МашинаОперационная система"Оригинал"
Sun 1,2,10,... SunOS 4.1.2 BSD 4.3
Sun 10,20,1000 SunOS 5.5 SVR4.0
IBM RS/6000 AIX SV 3.2
HP Apollo 900 HP/UX 10 BSD 4.2 & SV 3.2
Sequent Dynix SV 4.0
Motorola 922 SVR4/88 SVR4.0
Беста-88 Bestix SV 3.1
DEC Ultrix BSD 4.2
DEC Alpha AXP OSF/1 BSD 4.3
SGCS Silicon Graphic IRIX 6.0

Выбирая платформу, мы автоматически получаем с ней "ее собственный" Unix. Пожалуй, с точки зрения удобства и цельности пользовательского и администраторского окружения самый приятный из них - AIX. А самый распространенный - Solaris 2.5 (естественно).

[Назад] [Содержание] [Вперед]


Copyright © CIT

Команды поиска GREP и FIND

Команда grep/egrep
"фильтрует" строки - оставляя только "подходящие" под шаблон

    egrep шаблон  [ file ... ]

В шаблон могут входить обыкновенные символы (представляющие сами себя, а так же - спецсимволы, выполняющие служебные функции шаблона: . * ^ $ [ ]
.- любой произвольный символ
*- "множитель" (предыдущий символ любое число раз)
.*- любая последовательность символов
^шаблон- привязываем шаблон к началу строки
шаблон$- привязываем шаблон к концу строки
[символы]- ровно один символ из тех, что стоит в скобках

Вывести всех привелигированных пользователей:

    egrep ':0:0:' /etc/passwd

Вывести всех непривелигированных пользователей:

    egrep -v ':0:0:' /etc/passwd

Вывести всех пользователей, имена которых начинаются с букв a,b,e,d

    cat /etc/passwd | grep "^[abed].*"

Команда find

find рекурсивно обходит указанные каталоги и файлы, проверяет для них выполнение указанных условий, и может вдобавок выполнять с найденными файлами указанные действия. Например самое простое действие - распечатать имя файла.

    find   файл [ ... ]   ключи/условия/действия

Ключи-условия команды find:
-name "*.c"- простое имя подходит под шаблон *.c
-type f- брать только обыкновенные файлы
-type d- брать только каталоги
-size +500- файлы размером БОЛЬШЕ 500*512 байт
-mtime -3- дата модификации МЕНЬШЕ 3-х дней
-newer filename- дата модификации нашего файла МЕНЬШЕ чем у заданного файла filename

ВНИМАНИЕ: Команда find использует стандартные SHELL'овские шаблоны. Команда grep использует шаблоны другого формата, называемые регулярными выражениями.

Ключи-действия команды find

    -print - просто распечатать маршрутное имя файла
    -exec команда над файлом {} \; - выполнить команду над файлом

Примеры

Напечатать имена всех обыкновенных Си-шных файлов, изменившихся за последние 4 дня в текущем каталоге и его подкаталогах.

    find . -type f -mtime -4 -print

Уничтожить все файлы с окончаниями *.bu, *%, которые не менялись больше месяца.

    find   / \( -name "*.bu" -o -name "*%" \) -type f    \
    -atime +30 -exec  rm  {} \;

запись "rm {} \;" - обозначает команду Unix, которая будет выполняться для всех таких найденных файлов. Вместо значка "{}" будет подставляться каждый раз имя найденного файла. Естественно, что таким образом мы их все и уничтожим.

[Назад] [Содержание] [Вперед]


Copyright © CIT

Архивирование. Копирование файлов на стриммер

В UNIXе для этого можно пользоваться двумя утилитами:

    tar - попроще в использовании, но не все умеет
    cpio - более гибкая, чем tar, и посложнее.

Команда tar (Tape Archiver)

Предназначена для создания архивов на ленте, и в файлах.
Ключи: "-c" Create, "-x" eXtract, "-a" Append, "-t" оглавление
tar -cvf arhiw.tar fajl1 fajl2 katalog3 ...создать архив
tar -tvf /dev/rmt/ctapeвывести оглавление ленты
tar -xvf arhiw.tar katalog3/fajl4извлечь из архива файл
tar -xvf /dev/rmt/ctapeархив лежит на магнитной ленте извлечь с ленты все файлы
tar -avf arhiw.tar fajl5добавить файл к архиву

Ключи:

    "v" - Выводить список файлов в длинном формате (Verbose)
    "f" - Указывает на имя файла

Команда CPIO. (Copy In/Out)

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

Сбросить на ленту файлы по списку:
-o- (output) создавать архив
-H odc- Записывать в "совместимом формате" (чтобы архив можно было считать на Beste или Sun'е)
-c- Записывать в "престарелом" совместимом формате

    cat spisok | cpio -ovB -H odc > /dev/rmt/ctape1
    find katalog -print | cpio -ovc > arhiwnyj-fajl.cpio
Команда cpio -i читает с системного ввода cpio-архив и извлекает из него файлы

Просмотреть содержание стриммера:

    cpio -itB   < /dev/rmt/ctape

Извлечь файлы со стриммера:

    cpio -idmvB  ["шаблон" ...] < /dev/rmt/ctape
-BРазмер блока 5120 байт - стримерный формат.
-dСоздавать каталоги в случае необходимости.
-vВывести список имен обработанных файлов.
-mСохранять прежнее время последней модификации.
-fБрать все файлы, кроме указанного шаблоном.
-uБезусловно заменять существующий файл архивным.
-lГде можно, не копировать, а делать ссылки.

Архивация со сжатием.

Архиваторы tar и cpio, в отличие от DOS-овских архиваторов, не занимаются компрессией. Чтобы получить сжатый архив, нужно воспользоваться специализированной командой compress или gzip.

Команда compress читает свой системный ввод, а на свой системный выход подает "прожатые" данные.

Команда zcat ("сжатый cat":-) читает с системного входа "пожатый" файл, а на выход подает "разжатые" данные.

Создать сжатый tar-архив:

    tar -cvf - emacs-19.28 | compress > emacs-19.28.tar.Z

Прочитать оглавление сжатого tar-архива:

    zcat < emacs-19.28.tar.Z | tar -tvf -

Обратите внимание на ключ минус "-" на том месте, где в tar нужно указывать имя файла с архивом. Он означает "брать данные со стандартного входа" (или выводить архив на стандартный выход).

GNU Zip - достаточно известный упаковщик, имеет степень сжатия более высокую, чем у compress, почти как у arj или pkzip. Создать сжатый cpio архив, используя "компрессор" gzip.

    find . -print | cpio -ovcaB | gzip > arhiw.gz

Извлечь файлы из сжатого cpio-архива

    gunzip < arhiw.gz | cpio -idmv
mt - управление магнитной лентой

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

Чтобы узнать, что она может делать, наберите:

    man mt

[Назад] [Содержание] [Вперед]


Copyright © CIT

НАЧАЛЬНАЯ ЗАГРУЗКА ОПЕРАЦИОННОЙ СИСТЕМЫ

Начинается все с Boot-proma - небольшой программы, которая хранится в нестираемой памяти компьютера, и начинает выполняться сразу после включения.

Естественно, boot-prom умеет делать многое - форматировать диски, инсталлировать операционную систему, запускать тесты hardware. Однако главное его предназначение - найти на диске и запустить на выполнение файл /unix - ядро операционной системы.

Специфика SunSPARC.

Boot-prom загружает "BOOT BLOKS" - 1-ю ПРОГРАММУ НАЧАЛЬНОЙ ЗАГРУЗКИ. "boot-bloks" расположены в 1-15 секторах раздела, содержащего корневую файловую систему "/". Обычно корневая файловая система располагается на разделе номер 0. "Boot-blocks" можно записать на корневой раздел загрузочного диска (обычно это внутренний диск со SCSI-номером 3) командой installboot. Для этого выполняется что-нибудь такое:

    installboot /dev/rdsk/c0t3d0s0

Boot-blocks "умеет читать" формат файловой системы unix - ufs . Он находит на корневой файловой системе файл "/ufsboot" - 2-Ю ПРОГРАММУ НАЧАЛЬНОЙ ЗАГРУЗКИ, и загружает ее.

/ufsboot находит ядро /kernel/unix, и загружает его.

Ядро Unixа загружается в оперативную память, подгружая при этом в процессе своей загрузки дополнительные загружаемые модули с драйверами устройств. Как только ядро "набирает" достаточное количество драйверов, чтобы самостоятельно смонтировать корневую файловую систему, оно тут же это и делает, после чего начинает действовать самостоятельно, не используя кода начальных загрузчиков.

Специфика станции Motorola 922.

Boot-prom загружает с диска ЗАГРУЗЧИК - файл /stand/boot, Загрузчик загружает ядро /stand/unix

Поскольку boot-prom не в состоянии вместить кода для работы со стандартной unix'овской файловой системой, файлы unix и boot лежат в отдельном разделе жесткого диска - разделе /stand. На нем создана "ОЧЕНЬ ПРОСТАЯ ФАЙЛОВАЯ СИСТЕМА" bfs (Boot File System), чтобы boot-prom'у было полегче найти и считать с диска загрузочные файлы.

Специфика Linux.

BIOS загружает блок начальной рагрузки активного раздела.

Он грузит загрузчик LILO (LInux LOader). Lilo загружает файл /vmlinuz

Параметры начальной загрузки записываются в файле /etc/lilo.conf После любых изменений в этом файле, необходимо выполнить команду # lilo

Процесс init.

Ядро инициализирует себя и после этого запускает процесс init. А init - все остальные процессы, программы, которые необходимы для нормального функционирования операционной системы.

Все дальнейшие действия в системе определяются этим процессом. Все, что нужно делать init-у, определяет специальная таблица.

Процесс init всегда находится на каком-либо "УРОВНЕ ВЫПОЛНЕНИЯ" Уровень выполнения определяет состояние и поведение всей системы. Уровень обозначается цифрой 0,1,2,3,4,5,6,s,S (или буквой)
0- prom монитор - Полный останов системы;
1, s, S- single user mode. Однопользовательский режим;
2- многопользовательский режим без NFS-сервера;
3- многопользовательский режим с NFS-сервером;
6- перезагрузка;

Примерный фрагмент управляющей таблицы /etc/inittab

bchk::sysinit:/etc/bcheckrc/dev/console 2>&1
brc::sysinit:/etc/brc   > /dev/console 2>&1
is:3:initdefault:
rc:12345:wait:/etc/rc    > /dev/console 2>&1
r0:0:wait:/etc/rc0       > /dev/console 2>&1
r2:23:wait:/etc/rc2      > /dev/console 2>&1
r3:3:wait:/etc/rc3       > /dev/console 2>&1
pf:12345:powerfail:/etc/powerfail > /dev/console 2>&1
co:12345:respawn:/etc/sysmonitor  console console
t1:23:respawn:/etc/sysmonitor     tty01   9600
t2:23:off:/etc/sysmonitor         tty02   9600

Формат таблицы:

ИМЯ:Уровни_выполнения:вид_действия:запускаемая команда

ИМЯ: - просто имя строчки - они все должны быть разными вид_действия:
sysinitзапустить один раз после начальной загрузки;
на соответствующем уровне выполнения:
wait- запустить один раз и дожидаться, пока не окончится;
respawn- запустить параллельно, а если окончится, перезапускать снова;
off- ничего не делать (просто игнорировать эту строку)

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

  1. Сперва init запускает процессы, которые "sysinit"
  2. Отработав все строки "sysinit" уровня, init идет все дальше по /etc/inittab и обнаруживает строку initdefault 3 - она заставляет его "перейти" на уровень 3.
  3. Перейдя на уровень выполнения 3 init и отрабатывает первую встретившуюся строчку с уровнем "3" - запускается командный файл /etc/rc2 - загляните в него. Там все просто: /etc/rc2 берет и выполняет командные файлы /etc/rc2.d/S*, лежащие в каталоге /etc/rc2.d. Каждый файл выполняется с параметром "start"
  4. Отработав /etc/rc2 init точно таким же образом запускает файл /etc/rc3. Вслед за этим он запускает несколько процессов sysmonitor - по одному на каждый имеющийся терминал. Это те самые процессы, которые говорят на терминал: "Login: " Пользователь, войдя на терминал некоторое время работает, но как только он "уходит" из системы, на указанном терминале ничего не остается. init тут же выполняет действие "respawn" - перезапускает на терминал sysmonitor - и опять жизнерадостное "Login: " появляется на терминале.

Специфика Slackware Linux

  1. По умолчанию init устанавливает уровень выполнения 5 При начальной загрузке отрабатывается файл /etc/rc.d/rc.S
  2. Затем для перехода в многопользовательский режим /etc/rc.d/rc. из которого запускаются файлы
    • /etc/rc.d/rc.inet1 устанавливающий сетевые интерфейсы
    • /etc/rc.d/rc.inet2 запускающий сетевые сервисы
    • /etc/rc.d/rc.local запускающий несколько полезных программ и демонов - например поддержка мыши, httpd, русификация консоля, и т.п.

[Назад] [Содержание] [Вперед]


Copyright © CIT

Подгружаемые модули ядра в SunOS 5.3

В SunOS 5.3 ядро разбито на множество мелких модулей, которые подгружаются в память по мере необходимости (ПО ТРЕБОВАНИЮ, т.е. не раньше, чем они действительно потребуются), чем сокращается время начальной загрузки и экономится оперативная память. (И замедляется работа, ввиду дополнительных затрат ресурсов на динамическую линковку и загрузку внезапно затребованных модулей.)

Модули расположены в подкаталогах каталога /kernel и /usr/kernel

  /kernel/*/*
  /usr/kernel/*/*

Существует файл, задающий списки подгружаемых модулей и настраиваемые (tunable) параметры ядра. В нормальном стандартном случае этот файл пуст (состоит только из комментариев). Все параметры устанавливаются по умолчанию.

  /etc/system

Список tunable-параметров ядра приводится в документе "...? ... Performance tuning Administration Guide"

Специальные файлы - устройства.

Каталог /devices генерится при "реконфигурационной" загрузке ядра, и представляет все имеющиеся у станции устройства.

Правила именования устройств в каталоге /devices для SS2 и древнее.

/devices/sbus@1,..../esp@0,..../sd@3,0:a
         1-й SBUS контроллер
                     1-й SCSI host адаптер
                             3-й taget номер диска на SCSI шине
                                     0-й LUN
                                        партиция "a"

На месте многоточий ... стоят числа. Это виртуальные адреса, соответствующие устройствам.

Правила именования устройств в каталоге /devices для SS10 и мо- ложе:

/devices/iommu@f,..../sbus@0,.../espdma@f,.../esp@0,..../sd@3,0:a
         IO memory management unit
                      1-й SBUS контроллер
                                          1-й SCSI host адаптер
                           3-й taget номер диска на SCSI шине
                                                 0-й LUN
                                                    партиция "a"

Имеется также файл, который генерится системой при каждой "реконфигурационной" загрузке ( ok boot -r )

     /etc/path_to_inst
Он задает правила именования /devices ---> (major,minor)

Каталог /dev/* содержит логические имена специальных файлов
/dev/dskБлочные диски
/dev/rdskБесструктурные диски
/dev/rmtМагнитные ленты
/dev/termПоследовательные порты
/dev/cuaDial-out модемные порты
/dev/ptsПсевдо-терминалы
/dev/fbsFrame buffers - видео адаптеры

Распечатать информацию о конфигурации станции.

   prtconf
   sysdef -i
   dmesg
   STOP+A   ok banner
            ok probe-scsi
            ok printenv
            ok devalias
            ok setenv

Переконфигурация системы.

После подключения дополнительных устройств (дисков, лент, контроллеров) нужно "подтолкнуть" систему, чтобы она ими "заинтересовалась", опознала, настроилась на них, и создала для них соответствующие специальные файлы.

  • Способ 1. Создать файл /reconfigure и перезагрузиться
  • Способ 2. Загрузиться командой boot-монитора
           ok  boot  -r
    
  • Способ 3. Можно "по-горячему", без перезагрузки, подцепить свежеподключеннный SCSI диск или ленту:
        /usr/sbin/drvconfig
        /usr/sbin/devlinks
        /usr/sbin/disks              # or /usr/sbin/tapes for tapes
        /usr/ucb/ucblinks            # Compatibility links
    

Команда начальной загрузки.

STOP+A
 ok boot cdrom
или
 ok boot sd(0,6,2)

ok boot device(контроллер,dev,раздел) имя_загружаемого_файла параметры
где
devicest стриммер, sd SCSI-диск/cdrom, le ethernet
контроллеробычно 0
dev6 cdrom, 3 внутренний диск, ...
раздел0 "/", 2 корень cdrom'а, номер файла на ленте, ...
параметры
-aинтерактивная загрузка (спросит дополнительные параметры)
-rпосле загрузки заняться переконфигурацией
-sзагрузиться в однопользовательский режим
-vverbose (подробно)
-wmakes filesystem writeable

У станций SS20 установлени boot-prom новой версии. Там команда загрузки выглядит примерно так:

   ok boot disk1:0 -sa

Загрузиться со 2-го жесткого диска (SCSI Taget 1), в однопользовательский режим. Все параметры загрузки запросить интерактивно, с клавиатуры.

[Назад] [Содержание] [Вперед]


Copyright © CIT

Unix, базовые принципы и особенности

Все системные действия выполняет ядро операционной системы Unix. Ядро - обычный выполняемый файл, расположен в файле /unix или /stand/unix или /vmunix или /vmlinuz (в зависимости от конкретной реализации). Можете посмотреть размер этого файла - не маленький. При начальной загрузке системы ядро целиком загружается в оперативную память, и в дальнейшем резидентно находится в ней, выполняя все необходимые работы.

Что входит в ядро.

ДРАЙВЕРЫ УСТРОЙСТВ. И тех, которые есть, и тех, которых нет, но могут быть, а так же и такие, которые никогда вам не понадобятся.

УПРАВЛЯЮЩИЕ ПОДПРОГРАММЫ: части кода, ответственные за обеспечение работы пользовательских программ - разделение времени и прочих ресурсов системы.

СЛУЖЕБНЫЕ ТАБЛИЦЫ И ДАННЫЕ ЯДРА: таблицы текущих процессов, открытых файлов, управляющие структуры...

СИСТЕМНЫЕ ВЫЗОВЫ. (То, что MS-DOSе называется "21 прерывание" - можно считать некоторой аналогией/пародией на системные вызовы.) С точки зрения программиста это обычная си-шная функция, только выполняет она системно-зависимые действия, например: прочитать данные из файла, установить сетевое соединение, создать каталог, и т.д. и т.п. Все системные вызовы ( а всего их более 1500 штук ) вкомпилированы в тело ядра unix. Пользовательские программы, вызывающие функции, являющиеся системными вызовами, на самом деле содержат только jump'ы на соответствующие адреса памяти в ядре. В пользовательскую программу системные вызовы не влинковываются.

Что находится в оперативной памяти.

ЯДРО ОПЕРАЦИОННОЙ СИСТЕМЫ.

БУФЕРНЫЙ КЭШ. Часть оперативной памяти резервируется под кэширование чтения и записи на диск. Любая операция чтения с диска приводит к тому, что прочитанные с блоки помещаются в буферный кэш, а из него уже передаются запросившим данные программам. Если блок попал в кэш, то все последующие обращения к нему будут получать образ блока из кэша, причем не зависимо, от того - та же самая программа, обращается к блоку, или какая-либо другая. Кэшируется так же и запись на диск, опять же, разделяемая между всеми выполняемыми программами.

ПРОЦЕССЫ. Процессом в Unix'е называется выполняющаяся программа

Средства экономии памяти. Виртуальная память.

РЕЕНТЕРАБЕЛЬНОСТЬ КОДА. Когда одна и та же программа(выполняемый файл) запущена в нескольких экземплярах, то в оперативную память загружается только одна копия выполняемого ассемблерного кода на всех. Каждый выполняемый процесс использует один и тот же текст программы, просто у каждого процесса имеется свой собственный указатель на текущий оператор.

РАЗДЕЛЯЕМЫЕ БИБЛИОТЕКИ. (В Windows есть похожее понятие DLL - динамически подгружаемая библиотека). Некоторое количество часто выполняемых функций (например printf, да и много других) оформляется в виде специальным образом подготовленной библиотеки (SHARED LIBRARY). При компиляции программы, использующей разделяемые библиотеки, эти функции не линкуются внутрь кода программы. Они "выдергиваются" из библиотеки на стадии выполнения программы. Этим мы экономим место на диске и в оперативной памяти: в программах отсутствует код разделяемых функций, а в оперативной памяти эта функция присутствует в одном экземпляре на всех.

SWAPING. Каждый Unix-процесс функционирует в своем собственном 32-х битном виртуальном адресном пространстве, не пересекающемся с другими. Адресное пространство процесса может быть большим, чем физическая оперативная память. Виртуальная память поддерживается с помощью PAGING'а - разрешения виртуальных адресов в физические "на лету", с подкачкой отсутствующих страниц памяти со swap-области на жестком диске.

На самом деле SWAPING'а как такового в Unix'е нет, вместо него применяется гораздо более гибкий PAGING. (swaping - по определению, это ПОЛНАЯ выгрузка программы на swap-область с целью освобождения места в оперативной памяти).

Область памяти, занятая программой разделена на три части: TEXT (выполняемые коды программы), DATA (статические данные программы), STACK (динамические данные). Когда операционка освобождает место в памяти за счет TEXT'а, то она не занимается сбросом его на диск. Она сразу помечает его как свободный. Действительно, когда потребуется загрузить TEXT обратно в память, его можно будет взять из самого выполняемого файла с программой. Такая экономия имеет один побочный эффект. Файл программы, которая в данный момент выполняется, невозможно уничтожить. Операционная система сообщит в этом случае: "text file busy", и откажется выполнять удаление.

БИТ НАВЯЗЧИВОСТИ. (sticky bit). Выполняемая программа может иметь дополнительный атрибут. Так называемый "бит навязчивости". Когда такая программа заканчивает выполнение, операционка (по возможности) старается не занимать память, в которой находился текст программы. Соответственно, повторный ее запуск произойдет очень быстро - ведь программа все еще загружена в память, ее не требуется зачитывать с диска. Нужно просто передать на нее управление.

Файловая система Unix.

Файловая система в Unix - "деревянная", состоит из файлов и каталогов. На каждом разделе диска создается собственная независимая файловая система. Отдельные файловые системы "сцепляются" вместе, в единое общее дерево директорий. Такая операция называется "монтированием". Выглядит это примерно так:

   mount -F ufs   /dev/dsk/m197_c0d0s5 /home1
   mount -F ufs   /dev/dsk/m197_c0d0s4 /usr
   df

Получить доступ к файлам "несмонтированной" файловой системы невозможно. Порочная пракика MS-DOSа - сколько разделов, столько и "дисков" ( a: b: c: d: e: ... k: l: m: n:) в Unix не применяется. В Unix всегда есть ровно одно общее дерево каталогов, и, по большому счету, пользователям совершенно все равно, на каком именно диске или разделе диска расположены его файлы /usr/spool/moshkow или /home1/moshkow/bin/mcopy ...

Файловая система Unix кэшируется буферным кэшем. Операция записи на диск выполняется не тогда, когда это приказывает выполняемый процесс, а когда операционная система сочтет нужным это сделать. Это резко поднимает эффективность и скорость работы с диском, и повышает опасность ее использования. Выключение питания на "горячей", работающей Unix-машине приводит к разрушениям структуры файловой системы.

При каждой начальной загрузке Unix проверяет - корректно ли была выключена машина в прошлый раз, и если нет - автоматически запускает утилиту fsck (File System Check) - проверку и ремонт файловых систем..

Внутренняя структура файловой системы Unix.

Раздел диска, в котором создана файловая система, разбит на три части.

СУПЕРБЛОК. Занимает 1 Kb. Содержит служебную информацию:

    Тип файловой системы,
    Размер
    Начало списка свободных блоков.
    . . . что-то еще

ОБЛАСТЬ INOD-ов. Занимает примерно 8% общего размера раздела. inode - Index-node - описатель файла. Он содержит всю информацию о файле, за исключением имени файла, и собственно данных файла. В inod'е хранится:

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

ОБЛАСТЬ ДАННЫХ. В этой области расположены блоки с данными фай лов. Незанятые блоки провязаны в СПИСОК СВОБОДНЫХ БЛОКОВ

Файлы бывают двух основных типов. ФАЙЛ, КАТАЛОГ.

ФАЙЛ - он и есть файл.

КАТАЛОГ - файл фиксированного формата: состоит из строчек с именами файлов, входящих в каталог

        имя_файла1         Номер_Инода1
        имя_файла2         Номер_Инода2
           . . .

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

  1. находит это имя в каталоге, содержащем файл,
  2. берет Номер_Инода файла,
  3. по номеру находит inod в области inod'ов,
  4. из inod'а берет адреса блоков, в которых расположены данные файла,
  5. по адресам блоков считывает блоки из области данных.
Все.

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

Область инодов разбита на 64-х байтные структуры - inod'ы. В inod'е хранится:

    Тип файла (файл/каталог/специальный файл/fifo/socket)
    Атрибуты (права доступа)
    Владелец файла
    Группа-владелец файла
    Времена создания, модификации, последнего доступа к файлу
    Длина файла
    Адрес 1-го блока файла
    Адрес 2-го блока файла
    ...
    Адрес 10-го блока файла
    Адрес блока косвенной адресации (блока с 256 адресами блоков)
    Адрес блока 2-й косвенной адресации (блока с 256 адресами блоков с адресами)
    Адрес блока 3-й косвенной адресации (блока с адресами блоков с адресами блоков с адресами)

Точный формат структуры файловой системы см. man fs

[Назад] [Содержание] [Вперед]


Copyright © CIT

Специальные файлы

В Unix помимо обычных файлов и каталогов существуют еще и специальные файлы. Они используются для обозначения физических устройств компьютера. (Железок). В сущности, что такое файл? Это "нечто", куда можно записывать данные, как последовательность байтов, и считывать их оттуда. И значит, вполне естественным выглядит, например, файл /dev/console - соответствующий консольному терминалу. Все, что выводится в файл /dev/console, будет просто появляться на экране терминала. При попытке чтения из файла /dev/console, вы будете получать (внимание!), не то, что нарисовано в данный момент на экране, а то, что вводится с клавиатуры. Попробуйте выполнить команды

  su
  echo Привет > /dev/console
  cat /dev/console
  Ctrl-C

Для каждого терминала unix-машины существует соответствующий ему файл. Обычным терминалам соответствуют файлы, которые называются примерно так:

  /dev/contty01 или /dev/tty02 или /dev/ttyFD02 или /dev/ttyS0
  (и т.д., возможны варианты)

Псевдо-терминалам (они эмулируются, когда вы входите в систему по сети, посредством команд типа telnet, rlogin), соответствуют специальные файлы

  /dev/pty*, или /dev/pty/*

Команда who, или who am i сообщит вам, как называется ваш собственный терминал.

Существуют специальные файлы, соответствующие жесткому диску в целом (/dev/rdsk/m197_c0d0s7), и всем его разделам (/dev/dsk/m197_c0d0s*). Если вы будете читать из этих файлов, то получите все байтики, как они лежат на жестком диске, с нулевого цилиндра и до последнего... А если вы в этот файл что-нибудь запишете, то получите (потом) богатый опыт по переформатированию и разметке жесткого диска.
/dev/mem- файл, изображающий оперативную память.
/dev/audio- если "закатить" в него файл звукового формата (*.wav, *.au, ...?) - то он будет озвучен динамиком компьютера, а команда cat /dev/audio будет принимать все, что произносится в микрофон. Впрочем я отвлекся, у нас ведь не PC, не Silicon Graphic и не SPARCstation.
/dev/zero- из него можно считать сколько угодно нулевых байтов
/dev/null- а в него можно писать и читать из него тоже, в неограниченных количествах, и с неизменным результатом: NULL - он и есть null. А в MSDOS его аналог называется NUL ).

Специальные файлы бывают двух типов:

  1. блочные - запись и чтение допускаются только блоками. Например, разделы дисков с файловой системой являются таковыми.
      ls -al /dev/fd*
    brw-rw----  1 root floppy    2,  28 Jul 18  1994 /dev/fd0H1440
    brw-rw----  1 root floppy    2,  32 Jul 18  1994 /dev/fd0H2880
    brw-rw----  1 root floppy    2,  12 Jul 18  1994 /dev/fd0H360
    
  2. символьные(бесструктурные, сырые, row) - можно читать и писать отдельными байтами. К ним относятся терминалы, маг- нитные ленты, неформатированные диски и разделы дис- ков без файловой системы.
      ls -al /dev/tty*
    crw--w--w-   1 moshkow  sys        4,   1 Jan 15 22:00 /dev/tty1
    crw--w--w-   1 root     root       4,   2 Jan 15 20:37 /dev/tty2
    crw--w--w-   1 root     root       4,   2 Jan 15 20:37 /dev/tty2
    
Различие - первая буква в листинге команды ls -l

Понятия "размер" у специального файла не существует. Ведь этот файл обозначает физическое устройство. Фактически, это ссылка на соответствующий драйвер. Вместо длины, команда ls показывает для таких файлов два числа: "мажорный" и "минорный" номера устройств. Будем считать для ясности, что "мажор" это порядковый номер драйвера устройства, а "минор" - внутренний номер устройства в таблице обслуживающего его драйвера.

[Назад] [Содержание] [Вперед]


Copyright © CIT

ДИСКИ, ЛЕНТЫ, ФАЙЛОВЫЕ СИСТЕМЫ

  1. SCSI устройства
  2. Как называются диски на машине
  3. Как отформатировать SCSI диск
  4. Какого типа у нас файловые системы
  5. Монтирование файловых систем
  6. MOTOROLA: Монтирование CD-ROM
  7. Отмонтирование файловых систем
  8. Выделение раздела под swap
  9. Bad-блоки
  10. Утилита тестирования оборудования GOLD

SCSI устройства

MOTORОLA: Какие есть SCSI устройства.

После подключения новых устройств к компьютеру Motorola 922, он самостоятельно их распознает при очередной начальной загрузке, и запускает программу autoboot, которая создает специальные файлы, соответствующие этим устройствам.

scsiscan- эта утилита сообщит вам, какие SCSI устройства подключены, и как они называются
см. также команды prtconf, prtvtoc, hardfmt

SUN: Какие есть SCSI устройства.

На компьютере Sun SPARC для определения SCSI-устройств: Перейдите в BOOT-prom монитор (Нажмите клавиши Stop+A) Введите команду probe-scsi

  ok probe-scsi

LINUX: Какие есть SCSI устройства.

IBM PC/Linux сообщает об опознанных устройствах при начальной загрузке. Чтобы еще раз просмотреть эти сообщения, выполните команду

    dmesg

Как называются диски на машине.

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

В SVR4 устройства собраны в отдельные каталоги:
/dev/rdsk/*- бесструктурные диски и разделы дисков
/dev/dsk/*- блочные диски и разделы дисков
/dev/rmt/*- стриммерные накопители на магнитной ленте
/dev/term/*- линии для подключения терминалов (dial-in)
/dev/cua/*- линии с модемным управлением (dial-out)
/dev/pts/*- псевдо-терминальные линии

MOTOROLA

Общий формат имени: controller_cXdYsuffix где,
controller- тип устройства
X- номер контроллера
Y- логический номер устройства
suffix- зависит от устройства, например: номер раздела на жестком диске

Логические диски (разделы физического SCSI диска) с блочной структурой на станции Motorola 922
/dev/dsk/m197_c0d0s1SCSI контроллер m197 номер 0,
SCSI устройство 0
логический раздел (slice) 1
/dev/dsk/m328_c0d0s0SCSI контроллер m328 номер 0,
SCSI устройство 0
логический раздел (slice) 0

Физический диск (целиком)
/dev/rdsk/m328_c0d0s7
/dev/rdsk/m197_c0d1s7
Условное обозначение всего жесткого диска, целиком

Бесструктурные (сырые) разделы

 /dev/rdsk/m197_c0d0s1
 /dev/rdsk/m197_c0d1s2

Магнитные ленты.

/dev/rmt/ctape1, а также /dev/rmt/m197_c0d4

CD-ROM.
/dev/rdsk/m197_c0d6s7- "сырой" (физический)
/dev/dsk/m197_c0d6s0- раздел CD-ROM с файловой системой "Моторольного" формата ufs
/dev/dsk/m197_c0d6s7- CD-ROM'а со стандартной файловой системой iso9660

Sun SPARCstation.

Логические разделы (блочные) на станции SPARCstation:
Диск может быть разбит на 8 логических разделов с 0 по 8.

Общий формат имени SCSI устройства:
/dev/dsk/c0t2d0s3 Controller0(обычно 0)
Taget2(SCSI ID)
Disk0(LUN Logical Unit Number - обычно 0)
Slice3(Номер раздела)

Физический диск (целиком)
/dev/rdsk/c0t3d0s2Весь жесткий диск представляется разделом 2
Загрузочный внутренний жесткий диск SPARC station имеет 3-й SCSI номер.

CD-ROM (целиком)
/dev/dsk/c0t6d0s2CD обычно вешают на 6-й SCSI номер.
Имеет ровно один раздел - весь диск.

Магнитные ленты.

    /dev/rmt/0 1-я лента (обычно 150Мб)
    /dev/rmt/1 2-я лента (обычно DAT 4Гб)

После подключения новых устройств к Sun'у. Нужно выполнить "reconfiguration boot". Из boot proma:

   ok boot -r

Linux IBM PC.

Диск может быть разбит на 4 primary раздела с 1 по 4. Один из разделов может быть extended - тогда он может быть разбит еще на 4 раздела с 5 по 8

Физический диск (целиком)

    /dev/hda - Первый IDE жесткий диск
    /dev/hdb - Второй IDE жесткий диск
    /dev/sda - Первый SCSI жесткий диск
    /dev/sdb - Второй SCSI жесткий диск

CD-ROM

/dev/sbpcd, /dev/sonycd, ... а лучше /dev/cdrom

Магнитные ленты.

/dev/rmt1

Дискеты.

    /dev/fd0 - флоппи A:
    /dev/fd1 - флоппи B:

Как отформатировать SCSI диск.

Форматировать SCSI на низком уровне не умеет ни один unix в мире. Формат обычно заключается в тестировании bad blockов и нанесении логической разметки диска - разделении его на логические разделы.

MOTOROLA:

На Motorole для форматирования диска воспользуйтесь командой scsifmt. Применяется она к БЕССТРУКТУРНОМУ цельному диску (каталог /dev/rdsk). Например:

   scsifmt /dev/rdsk/m197_c0d1s7
   scsifmt /dev/rdsk/m328_c1d0s7

ВНИМАНИЕ: Вы уже набрали эту команду? Сосчитайте до 20 и немного подумайте. Подумали? Теперь нажмите Ctrl-C. Вы нажали ENTER вместо Ctrl-C ? У вас есть 30 свободных минут. Можете за это время ознакомиться с главой "Инсталляция Unix". Ведь команда scsifmt ничего не переспрашивает, и сразу начинает форматировать указанный диск, не требуя никаких подтверждений.

SUN:

Физический формат диска на SunOS не делают. Считается, что диск должны отформатировать на заводе. Можно посмотреть информацию о диске.

     prtvtoc /dev/rdsk/c0t0d0s2

SUN: Разметка форматированного диска на разделы.

Чтобы диск опознавался Sun'ом, для него должно существовать описание в файле /etc/format.dat

Из под СуперПользователя запустите команду format, и в диалоговом режиме сможете проинициализировать и протестировать диск и разбить его на разделы.

     format

Boot-монитор при загрузке операционной системы ищет на корневом разделе boot-блок. Он записывается командой installboot или dd

     installboot /dev/rdsk/c0t3d0s0
     dd if=/usr/lib/fs/ufs/bootblk bs=1k skip=1 of=/dev/dsk/c0t3d0s0

SUN: Создание файловой системы.

newfs /dev/dsk/c0t0d0s7

SUN: виды файловых систем.
ufs Unix File System основной тип файловых систем для жестких дисков
hsfs High Sierra, ISO 9660, Rock Rige Extension файловая система на CD-ROM'ах
pcfs MS-DOS FAT для дискет 3"
nfs Network File System наиболее популярная сетевая файловая система
rfs Remote File System тяжелое наследие System V - еще одна сетевая FS
tmpfs для хранения Временной Файловой системы используется свободное место swap-области
lofs Loop Back FS фактически mount -F nfs localhost:/ /mnt
procfs Process FS - "для каждого процесса имеется файл"
fifofs FIFO FS
fdfs File Descriptors FS
namefs

MOTOROLA: Разметка форматированного диска на разделы.

Производится Disk Slice Editor'oм dse. На диске может быть до 15 slice'ов (разделов). Они нумеруются числами от 0 до 6, от 8 до f. Номер 7 зарезервирован, чтобы обозначать весь диск целиком.

  dse   имя_бесструктурного_диска       #       например:
  dse /dev/rdsk/m197_c0d0s7

Он имеет экранный интерфейс, схожий с редактором VI Команды:
:q!выйти без внесения изменений в таблицу разделов
:wqсохранить изменения и выйти
h,j,k,lкоманды перемещения по экрану (это если у вас не работают стрелочки)
Cсоздать раздел на свободном месте
dwстереть поле
ddуничтожить раздел
cwизменить значение поля

ВНИМАНИЕ: самый первый раздел должен начинаться с блока номер 648 (или больше), поскольку на диске должно оставаться место для хранения разметки диска VTOC (Volume Table Of Contents).

На создаваемом разделе должна быть создана файловая система. В SVR4/88 используются 3 разных типа - ufs, s5, bfs. Выбирайте "UFS".

Motorola: виды файловых систем.
ufsUnix File System основной тип файловых систем для жестких дисков
s5System V. Устарелый тип файловой системы, использовался в старых версиях SV 3.1. Более медленная, но занимает меньше места под служебную информацию
bfsBoot File System Служебная "очень простая" файловая система. В ней лежат файлы начальной загрузки boot и unix
cdfsCD File System Стандартная для CD ROM'ов разметка ISO 9660

После переразметки диска dse автоматически запустит команду mk╜fs со всеми необходимыми параметрами - для создания чистых файловых систем на новых разделах, поэтому пункт, относящийся к команде mkfs, имеет скорее академический интерес.

Linux: Разметка форматированного диска на разделы.

fdisk - диалоговая программа для разметки жесткого диска
mke2fs /dev/hda1 создает файловую систему типа ext2 на первом разделе

Какого типа у нас файловые системы.

  fstyp имя_дискового_раздела

рекомендуемый тип для неспециализированных (т.е. не тех, которые /stand, /boot и некоторые другие) файловых систем стандартный Unix'овский "ufs" - Unix File System. Это быстрая файловая система BSD-подобного типа с символическими линками, длинными именами файлов (до 256 байт), изменяемым размером блока, "размазанной" таблицей inod'ов (описатели файлов расположены группами, которые равномерно распределены по диску)

     mkfs - создает пустую файловую систему.
# создаем файловую систему типа s5 на 4-ом разделе диска,  раз-
# мером 200 Мб !!! Размер указывается в 512-байтных блоках
  mkfs -F s5   /dev/rdsk/m328_c2d0s4  400000
# создаем файловую систему типа ufs  на 5-ом разделе диска
  mkfs -F ufs  -o bsize=4096,nsect=36,ntrack=9,free=1 \
  /dev/rdsk/m328_c2d0s5

Монтирование файловых систем.

Чтобы сделать "видимыми" файлы, лежащие на дисковом разделе, Unix использует команду mount. Mount "подцепляет" файловую систему к общему дереву файлов. При монтировании нужно указать "точку монтажа" - каталог, к которому "подцепляется" наша новая файловая система. Например:

    mount -F ufs   /dev/dsk/m197_c0d0s8    /home1

Чтобы посмотреть, какие файловые системы у нас смонтированы выполните команду

    df

Чтобы наши файловые системы монтировались, а swap области активизировались автоматически при каждой загрузке, необходимо вставить соответствующие строки в файл /etc/vfstab . Формат строчек можно посмотреть в этом же файле.

MOTOROLA: Монтирование CD-ROM.

Если на CDROM'е записана файловая система формата "ufs" - т.е. это "родной", моторольный cdrom, то монтировать его нужно по тем же правилам, что и обычный жесткий диск, только "read only"

  mount -F ufs -r  /dev/dsk/m197_c0d6s0    /cdrom

Если же это обычный "game'овый" диск для MSDOSа, а точнее, CDROM стандартного формата iso9660, то монтировать его надо так:

  mount -F cdfs -o ro  /dev/dsk/m197_c0d6s7    /cdrom
(использование ключей -r и -o ro - равнозначно)

Отмонтирование файловых систем.

  umount /home1

Выделение раздела под swap.

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

под swap рекомендуется выделять 1*RAM - 2*RAM места, а если на машине активно используется X-Windows, то 3*RAM.

После выделения раздела под swap его надо активизировать:

  swap -a /dev/rdsk/m328_c2d0s0 0 0

В случае срочной необходимости, под swap можно выделить и обычный файл. Создайте файл большого размера, а затем подключите его под swapping. Пример: выделяем 20 Mb-овый файл

  dd if=/dev/zero of=/var/swapfile bs=1k count=20480
  swap -a /var/swapfile 0 40960      #  Внимание  - здесь длина
                            #  указывается в 512-байтных блоках

Bad-блоки.

Лучше будет, если вы ознакомитесь с документацией - раздел "Bad blocks" в Томе "Disks and Tapes Managment"

см. также man по ddefs, mvme328, scsi1x7, dinit

Утилита тестирования оборудования GOLD.

Для тестирования и диагностики оборудования станции Motorola 922 можно воспользоваться утилитой gold. Она имеет систему меню, очень похожую на систему меню утилиты sysadm.

[Назад] [Содержание] [Вперед]


Copyright © CIT

Утилита системного администратора SYSADM

Любое действие по администрированию системы Unix заключается в проведении целого "пакета" действий - запуска различных утилит с хитрыми параметрами и внесении изменений в большое количество конфигурационных файлов. Естественно, что все это можно, а иногда и нужно, проделывать вручную. Иногда это единственный способ что-либо сделать. В помощь начинающему администратору в операционных системах Unix V (например в SVR4/88, ISC Unix V, UnixWare) предназначена "интегрированная диалоговая утилита для системных работ" sysadm.

Для запуска sysadm ОБЯЗАТЕЛЬНО нужно быть Суперпользователем.

Способ употребления:

#  sysadm
   Type of your terminal> vt220
Или
   Login:  sysadm
   Password:

Появляется меню, двигаясь по которому стрелочками, Enter'ом, функциональными клавишами, можно добиться того, чего (надеюсь вы знаете чего) хотите.

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

Fill the form and press Continue

В самой нижней строке экрана находится подсказка: Какая именно функциональная клавиша соответствует клавише "CONTINUE". Будьте внимательны. Значение функциональных клавиш может меняться в зависимости от того, где именно вы находитесь.

Чтобы увидеть возможные варианты выбора, нажимайте F2 (Choices)

Чтобы завершить работу в sysadm, нажмите F7 (CMD-MENU) и выберите "exit".

Примечание. Часто бывает, нужно нажать функциональную клавишу номер такой-то, а она ничего не делает. ВНИМАНИЕ: тогда вместо функциональной клавиши надо нажимать: Ctrl-F Цифра , где Цифра равна номеру требуемой функциональной клавиши. Например, вместо F4 можно нажать Ctrl-F 4

Перемещаться по меню можно не только стрелочками, но также и Ctrl-клавишами: Ctrl-h,j,k,l, ПРОБЕЛОМ, Tab, и первыми буквами команд меню.

Утилита системного администратора ADMINTOOL

На рабочих станциях Sun, IBM RS/6000 утилиты для администрирования работают в графическом режиме, под X Windows, с использованием мышки.

SunSolaris 2.3 - admintool
IBM RS/6000AIX - msmit

[Назад] [Содержание] [Вперед]


Copyright © CIT

ИНСТАЛЛЯЦИЯ ОПЕРАЦИОННОЙ СИСТЕМЫ

  1. Motorola 922. Загрузка с магнитной ленты.
  2. Беста-88. Загрузка с магнитной ленты.
  3. Sun SPARCstation. Загрузка с CD-ROM.
  4. Linux. Загрузка с дискет.

Для инсталляции операционной системы на Unix-компьютер используется загрузочные дискеты, загрузочные магнитные ленты, а также CD-ROM'ы.

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

1. Motorola 922. Загрузка с магнитной ленты.

Вставить ленту с дистрибутивом Unix SVR4/88. Включить питание. После того, как на консольном терминале появится сообщение

Idle MPU: none

нажать на клавишу "ПРОБЕЛ". Появится меню из нескольких пунктов.

Выбираем "3" (System debugger) , ENTER В ответ на приглашение 197-Diag> вводим "bo 0 40" ENTER (0: загрузить с 0-го SCSI контроллера, 40 - магнитная лента) и ждем 5 минут.

197-Diag> bo 0 40

Boot-prom организует в оперативной памяти RAM-диск, считывает на него с магнитной ленты начальные 8(?) Mb - образ файловой системы, загружает ядро операционной системы, монтирует RAMдиск в качестве корневой файловой системы, и запускает с него программу инсталляции, управляемую меню. Дальше надо ответить на некоторое количество вопросов, после чего программа приступит к установке пакетов Unix'а, которые размещены на ленте вслед за образом загрузочного RAM-диска. Собственно извлечение файлов с ленты занимает 20-40 минут, в зависимости от того, сколько и какие пакеты вы решили устанавливать.

Первым вопросом система спросит, какой у вас терминал. Ответьте, что у него 24 строки, и он имеет позиционирование курсора в стиле vt100.

Программа инсталляции имеет три основных режима:

  1. install
  2. upgrade
  3. maintance mode

Вторым своим вопросом программа инсталляции предложит выбрать один из них.

INSTALL - предусматривает полную установку операционной системы. Все файловые системы на диске будут заново переразмечены - и, следовательно, ВСЕ ФАЙЛЫ, которые до этого существовали на диске, БУДУТ СТЕРТЫ.

UPGRADE - обновление "старинной" (образца 1988 года и древнее) системы до современной версии. Старые данные при этом не уничтожаются. (За исключением тех, естественно, которые включены в новоустанавливаемые пакеты). Нас этот режим не касается, поскольку у нас и так новая система установлена с самого начала.

MAINTANCE MODE - однопользовательский shell для суперпользователя. Подготовленный администратор сможет, загрузившись с ленты, вручную заняться ремонтом и исправлением неисправностей в операционной системе, которые ему не удалось бы отремонтировать, загрузись он с диска. (И вообще, не всегда же удается загрузиться с диска).

2. Беста-88. Загрузка с магнитной ленты.

Вставить мастер-ленту Unix'а. Включить питание. На консольном терминале появится сообщение:

boot:

Вводим "t:unix" ENTER (Загрузить unix с магнитной ленты)

boot: t:unix

RAM-диск у Bestix'а занимает 1000 Кб, вслед за ним расположен архив формата cpio с дистрибутивом операционной системы. Остается ответить на несколько вопросов, и затем ждать минут 20, пока все содержимое ленты будет извлечено на диск.

3. Sun SPARCstation. Загрузка с CD-ROM.

Вставить CD-ROM. Включить питание. Подождать, пока станция "разогреется". Нажать STOP+A. (STOP - левая верхняя клавиша на левой дополнительной клавиатуре). Появится boot-rom prompt Ok:

вводим "boot cdrom". Если SPARC старой модели - SS1, SS1+, SS2, придется вводить "boot sd(0,6,2)"

Ok boot sd(0,6,2)

Если приглашение имеет другой вид: "> " (??), то вместо "boot" надо набрать "b"

> b sd(0,6,2)

После загрузки UNIX запустите команду "suninstall", которая и проведет инсталляцию.

# suninstall

4. Linux. Загрузка с дискет.

В Linux'е для инсталляции нужно иметь две загрузочные дискеты: BOOT (с нее загружаются, на ней находится ядро), и ROOT (на ней находится минимальная файловая система с программой инсталляции). Образы этих дискет в сжатом виде хранятся в файлах boot*/*.gz и root*/*.gz соответственно. Вам нужно выбрать по одному файлу из каждого множества (например boot12/net.gz и root144/color144.gz) и изготовить из них дискеты. Программа GZIP.EXE -D ИЛИ GUNZIP.EXE "разожмет" эти файлы, а RAWRITE.EXE "зальет" их на дискеты. Сами пакеты с дистрибутивом Linux могут лежать на DOS-партиции инсталлируемой машины, на NFS-сервере, на дискетах, на CD-ROM, на магнитной ленте.

Загрузитесь с boot-дискеты, в ответ на prompt "Lilo boot:" введите соответствующий параметр и Enter, подождите немного.

ВНИМАНИЕ: Если ваша машина с Ethernet'ной картой ne2000 "зависает" при попытке загрузить ядро, повторите загрузку с дополнительными параметрами, примерно такими:

Lilo boot: ether=10,0x320,eth0

Вставьте ROOT дискету, нажмите Enter. Когда появится "Console login:" залогиньтесь как root и запустите:

 # fdisk /dev/hda
 # setup

[Назад] [Содержание] [Вперед]


Copyright © CIT

ЕЩЕ НЕСКОЛЬКО ПОЛЕЗНЫХ КОМАНД UNIX

  1. finger
  2. talk
  3. mailx username@domain.suffix
  4. mailx
  5. telnet
  6. ftp
  7. ping

1. finger. Кто работает в системе.

Формат использования:
finger [-l] пользователь@сетевое.имя.компьютера

Кто работает на машине по имени ipsun.ras.ru :
finger @ipsun.ras.ru

Как поживает пользователь Мошков на этой машине:
finger -l moshkow@ipsun.ras.ru

2. talk. Вызвать пользователя на разговор

talk moshkow или talk moshkow@fedfond - вызвать указанного пользователя на указанной машине на разговор.

У этого пользователя на экране появится приглашение поговорить:

  Message from Talk_Daemon@ipsun at 23:29 ...
  talk: connection requested by ivanov@server.fedfond.msk.su
  talk: respond with:  talk  ivanov@server.fedfond.msk.su
И если он наберет ответную команду
talk ivanov@server.fedfond.msk.su

То вы сможете поговорить друг с другом. Окончание разговора - Ctrl-C

3. mailx. Послать кому-нибудь электронную почту.

 mailx  username@host.name
 Subject: Тема письма
 Текст сообщения
   . . .
 Окончание текста сообщения
Чтобы окончить ввод текста письма, в пустой строке нажмите Ctrl-D. Или поставьте точку "." в начале строки и нажмите ENTER.

Если письмо уже готово и находится в файле let.txt, то отп- равить его можно так:
mailx -s "Проверка почты" semen@server.fedfond.spb.su < let.txt

4. mailx. Прочитать пришедшую на мой адрес почту.

mailx, запущенный без аргументов, переходит в командный режим чтения поступившей почты. В этом режиме можно пользоваться такими командами:
? - выдать help по всем доступным командам
h 12 - заголовки писем начиная с 12-го номера
6 - читать 6-ое письмо
d - уничтожить текущее письмо
s fajl - сохранить письмо в файле "fajl"
r - ответить на письмо

для настроек программы mailx используется файл .mailrc, который должен лежать в домашнем каталоге пользователя. В нем желательно иметь строчки такого примерно содержания:

 ########### вставьте эти строки в свой файл   .mailrc    !!!!
 set crt=22
 set record='/home/moshkow/Mail.sended'
 ##############################################################
 # чтобы длинные письма "листались" постранично командой more ;
 # сохранять  копии всех отправленных  писем
 # в файле /home/moshkow/Mail.sended ;
 alias max    moshkow@ipsun.ac.msk.su
 alias kafedra petrov smirnov@nic.com lapin@sovim.mit.edu
 # почтовые алиасы - можно задать синонимы для длинных  почтовых
 # адресов или группы адресов, и использовать эти синонимы вмес-
 # то адреса при отправке почты

Если вы хотите завести себе благозвучное имя для адреса своей электронной почты, вставьте в файл /etc/aliases примерно такие строчки:

Maksim.Moshkow: moshkow
moshkov:        moshkow
и выполните команду
    newaliases

И теперь мне можно отправлять письма по таким адресам:

        moshkow@moshkow.ips.ras.ru
        moshkov@moshkow.ips.ras.ru
        Maksim.Moshkow@moshkow.ips.ras.ru

Если используется Linux, то можно пользоваться системой procmail Чтобы письма присланные вам по списку рассылки складывались в отдельный folder, поместите в свой $HOME/.procmailrc :

###############################################################
:0                           # WDL mailing list
* ^To.*wdl.*
folder_WDL
###############################################################
Если  письмо  небольшого  размера  и  не касается mailing-листа
"zhurnal@sharat.co.il" то копию пересылать на мой домашний email.
$HOME/.procmailrc :
###############################################################
:0 c
* < 10000
* !^To: .*zhurnal
! moshkow@moshkow.ips.ras.ru
###############################################################

5. telnet. Залогиниться на удаленную машину.

telnet host.name

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

У команды telnet есть "горячий ключ" "Ctrl-]" , который переводит telnet в командный режим. В этом режиме можно менять параметры работы telnet'а. Выход из командного режима - ENTER. Среди полезных команд назову так же "exit" и "help"

6. ftp. File Trasfer Protocol. Пересылка файлов.

Что делать, если нужно "перетащить файл" с чужой машины на свою (или наоборот), а NFS между ними не запущен? Используйте программу ftp. Это простенькая команда, позволяющая пересылать файлы между машинами по протоколу TCP/IP.

    ftp host.name
User name (moshkow): ivanov
Passwd:

Удаленная машина спросит у вас ваше входное имя и пароль (под которыми вы зарегистрированы НА УДАЛЕННОЙ машине). Если вы на ней не зарегистрированы, попробуйте указать входное имя "anonymous", а в качестве пароля - свой email-адрес.

После этого ftp переходит в командный режим. В этом режиме вы можете "перемещаться" по каталогам удаленной машины, по каталогам своей машины, просматривать их оглавление, и забирать файлы оттуда к себе, или класть их от себя - туда.
ftp> help - говорит само за себя
ftp> quit - завершить работу
ftp> bin - установить режим пересылки бинарных файлов (настоятельно рекомендую)
ftp> cd katalog - перемещаться по "тамошним" каталогам
ftp> ls - выдать "тамошнее" оглавление
ftp> lcd katalog - перемещаться по "здешним" каталогам
ftp> !dir - выдать "здешнее" оглавление
ftp> !ls -al - выдать "здешнее" оглавление
ftp> get file-tam [ file-name-zdes ] - взять файл оттуда
ftp> put file-zdes [ file-name-tam ] - положить файл туда

7. ping. "Прозвонить" удаленную машину.

Проверяет, откликается ли указанная машина по сети:
ping host.name

Включить непрерывную "прозвонку" (с интервалом в 1 сек.):
ping -s host.name

Прервать "прозвонку" - Сtrl-С .

[Назад] [Содержание] [Вперед]


Copyright © CIT

ETHERNET'ОВ СУЩЕСТВУЕТ 3 ТИПА

10-base-T
Twisted pair
Неэкранированная витая пара, разъем RJ45
(Длина одной пары до 100м)
AUI
Thick ethernet
Толстый Ethernet. 15 пиновый коннектор со стороны hosta. "Краб" - для подключения к основному кабелю. На концах - N-терминаторы.(L<= 500м)
Thin ethernet
10-base-2
Тонкий Ethernet с коаксиальным 50-омным кабелем и BNC коннекторами. Официальная длина кабеля 185 m (<=300m) 30 хостов на одном сегменте


"Звезда"
10-base-T



"Общая шина"
Thin



Толстый ethernet



Для соединения двух адаптеров напрямую, без HUB'а (point-to-point) используется "перевернутый" провод. Tx+<-->Rx+, Tx-<-->Rx-,...

[Назад] [Содержание] [Вперед]


Copyright © CIT

Маршрутизация TCP/IP


Статические таблицы маршрутизации

Обычный Host        IP       198.8.2.2
сети "Developers"   Net:     198.8.2.0 -- 198.8.2.255
198.8.2.0           Default: 198.8.2.1
Мост "GatewayD"     ifconfig eth0 198.8.2.1
                    ifconfig eth1 195.1.2.1
                        route add net 198.8.2.0 198.8.2.1  0
                        route add net 195.1.2.0 195.1.2.1  0
                        route add       default 195.1.2.2  1
Мост "GatewayO"     ifconfig eth0 195.1.2.2
                    ifconfig sl0 122.5.6.9 pointopoint 122.5.6.10
                        route add net 195.1.2.0 195.1.2.2  0
                        route add net 198.8.2.0 195.1.2.1  1
                        route add      default 122.5.6.10  1
Обычный Host        IP       195.1.2.3
сети "Office"       Net:     195.1.2.0 -- 195.1.2.255
195.1.2.0           Default: 195.1.2.2
                        route add net 198.8.2.0 195.1.2.1  1

[Назад] [Содержание] [Вперед]


Copyright © CIT

Сеть TCP/IP

Протокол TCP/IP (Transmission Control Protocol/Internet Protocol) является базовым транспортным сетевым протоколом в UNIX'е. В заголовке TCP/IP пакета указывается:

    IP-адрес отправителя
    IP-адрес получателя
    Номер порта (Фактически - номер прикладной программы, которой этот пакет предназначен)

TCP/IP-ишные пакеты имеют интересную особенность: они способны "добраться" до адресата, пройдя сквозь разнородные локальные сети, используя разнообразные физические носители. "Маршрутизацию" IP-пакета (переброску его в требуемую сеть) осуществляют "на добровольных началах" компьютеры, входящие в TCP/IP сеть.

Всемирная сеть Internet.

Все компьютеры мира, поддерживающие протокол TCP/IP и каким-либо образом подключенные друг к другу, образуют глобальную всемирную сеть TCP/IP "Internet". Темпы роста "Internet": 100000 IP-адресов в месяц. В настоящий момент (конец 1994 года) к Internet'у подключено около: 20.000 сетей, 4.000.000 компьютеров, 35.000.000 пользователей

IP-адрес.

Каждая машина в мире имеет свой уникальный IP-адрес.

IP-адрес - 32-битное число, которое принято записывать в смешанном 16-рично-десятичном формате, в виде 4 чисел, разделенных точками. Например:

    193.124.148.73
    128.8.2.1

Каждое десятичное число здесь представляет на самом деле два шестнадцатеричных разряда. Может принимать значения от 0 до 255. Допустима также шестнадцатеричная запись:

    c1.7c.94.49 или 0xC17C9449
    80.08.02.01 или 0x80080201

В условиях корректно сконфигуренной локальной сети, и при условии подключения ее к всемирной сети Internet, протокол TCP/IP позволяет вашей сетевой программе работать с ЛЮБЫМ компьютером в мире, как если бы он находился в вашей локальной сети.

Уникальность IP-адресов поддерживается просто. Они выдаются централизованно. Контора, которая этим занимается, называется NIC - Network Informational Center. Европейское отделение NIC расположено в Амстердаме. Она ВЫДАЕТ IP-адреса. В адрес NIC нужно послать форму-запрос установленного образца, и через некоторое время вам пришлют "пачку" IP-адресов, выделенных для вашей сети. E-mail адрес, по которому нужно послать запрос: hostmaster@sri-nic.net

Московский узел, раздающий IP-адреса, а так же домены *.ru доступен по адресу

IP-сеть, подсеть.

IP-сеть - "пачка" из 2**n IP-адресов, ИДУЩИХ ПОДРЯД. Самый младший - резервируется. Этот адрес называется адресом IP-сети. Например 128.8.0.0, или 193.125.149.64 . Адрес сети используется, когда требуется указать всю сеть целиком, например, когда задается маршрутизация до этой сети.

Маска сети - фактически размер сети, задает число адресов в се- ти. Задается либо количеством битов в маске сети (например 8бит - 256 адресов, 6 бит - 64 адреса), либо битовой маской вида

   b'111...11100...00'
         число^^   ^^ битов
которую тоже принято записывать в десятично-побайтной записи, например:
    255.255.255.192 - маска на 64 адреса
    255.255.255.0 - маска на 256 адресов
    255.255.0.0 - маска на 64Kb адресов

Broadcast адрес сети - самый старший адрес в сети. Резервируется для передачи сообщений типа "все-всем-всем" (в сети).

128.8.255.255

Сети делятся на классы:

Класс A."Огромные" сети.
Адреса этих сетей лежат в промежутке: 1 - 126.
Маска сети: 255.0.0.0
Содержит до 16777216 адресов (256*256*256).
Адреса хостов в этих сетях вида: 125.*.*.*
Класс B."Средние" сети.
Адреса этих сетей лежат в промежутке: 128.0 - 191.255
Маска сети: 255.255.0.0
Содержит до 65536 адресов (256*256).
Адреса хостов в этих сетях вида: 136.12.*.*
Класс C. "Маленькие" сети.
Адреса сетей лежат в интервале: 192.0.0 - 255.254.255
Маска сети: 255.255.255.0
Содержит 254 адреса.
Адреса хостов в этих сетях вида: 195.136.12.*

Объявляем IP-адрес на наш ethernet'ный контроллер.

Конфигурация сети на UNIX-машине обычно делается автоматически при начальной загрузке. Вкратце ее можно описать так:

Объявляем, что наш IP-адрес 198.8.2.1 и он поднят на ethernet'ную карту по имени elx70 . В случае Motorol'ы так называется ethernet, торчащий из главной системной платы - платы с процессором.

   ifconfig  e1x70  198.8.2.1  up
Объявляем, что наш второй контроллер с именем m3760 (нижняя плата) имеет IP-адрес 198.8.3.1
   ifconfig  m3760  198.8.3.1  up

Маршрутизация локальной сети.

Объявляем, что машины с адресами вида 198.8.2.* *=1,...,254 сидят на нашем верхнем локальном сегменте ethernet, и разговаривать с ними надо напрямую, через верхний ethernet, соответствующий нашему адресу 198.8.2.1 - т.е. - elx70. А с машинами, имеющими адреса вида 198.8.3.* - через нижний ethernet - с адресом 198.8.3.1

   route add  net  198.8.2.0  198.8.2.1 netmask 255.255.255.0 0
   route add  net  198.8.3.0  198.8.3.1 netmask 255.255.255.0 0

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

   route add default      198.8.2.107  1

Последний аргумент команды route - метрика. Ее можно интерпретировать как "расстояние" до "того" gateway'я, или "сколько пересадок между gateway'ями придется сделать IP-пакету по дороге туда. Поскольку IP-адреса 198.8.2.1 и 198.8.3.1 соответствуют нашим собственный платам ethernet, то и метрика (расстояние) до них 0. 198.8.2.107 - другая машина - "расстояние до нее" 1.

Смотрим, что у нас получилось

  netstat -rn             # распечатать таблицу маршрутизации
  ping -s fedfond         # "прозвонить" узлы сети
  ping -s fedfond-gate
  ping -s 198.8.2.107
  netstat  -i        # статистика о работе сетевых интерфейсов

Настала пора объяснить, что такое lo0 и localhost. Это так называемый Loop-back интерфейс. Он имитирует сетевой интерфейс локально, не выходя за границы нашего компьютера. Loop-back интерфейсу соответствует зарезервированный за ним IP-адрес 127.0.0.1

Конфигурирование TCP/IP на Мотороле 922.

Придумайте сетевое имя вашего компьютера. Пусть вы решили, что ваш компьютер должен называться fedfond, и иметь IP-adres 198.8.2.1 . Однако не забывайте, что у Моторолы ДВА ethernet-контроллера, и КАЖДЫЙ из них ДОЛЖЕН иметь свой УНИКАЛЬНЫЙ IP-адрес. Мы решаем, что второй наш ethernet будет иметь IP-адрес 198.8.3.1, ну и этому адресу можно назначить вполне человеческое имя, например "fedfond-gate".

ВНИМАНИЕ: если вы внимательно рассмотрите содержание файла /etc/inet/rc.inet, особенно строку вида

    /usr/sbin/ifconfig e1x70 `uname -n`-gate $net_mask up
то поймете, что второй ethernet должен называться именно fedfond-gate , и никак иначе.

Итак, чтобы установить сетевое имя и IP-адреса нашего host'а

  • командой sysadm установите "nodename" . ВНИМАНИЕ: именно nodename (имя узла), а не systemname (имя операционной системы)
  • В файл /etc/hosts вставьте строчки, привязывающие IP-адреса к имени fedfond и, ВНИМАНИЕ!, fedfond-gate
    198.8.2.1    fedfond
    198.8.3.1    fedfond-gate
    
  • Перезагрузитесь.

    Прикладные интерфейсы.

    Чтобы писать программы, работающие с сетью, программист должен пользоваться каким-либо набором системных вызовов и функций. От BSD-Unix'а в жизнь вошел получивший большую популярность API Berkеlеy-sockets. AT&T System V породила TLI (Transport Level Interface) - построенный на технологии "потоков" (streams).

    SVR4 поддерживает и то, и другое. Поддержку сокетов обеспечивает демон inetd (Internet Super Server), поддержку TLI обеспечивает демон listen (Network Listener).

    Конфигурация TLI

    Демон listen управляется специальной базой данных, в которую необходимо вписать IP-адрес нашего host'а. Делается это "один раз в жизни". IP-адрес задается в хитрой шестнадцатеричной записи.

    Итак, если наши IP-адреса 198.8.2.1 и 198.8.3.1, их шестнадцатиричная запись C6080201, C6080301 , то мы должны единовременно выполнить три команды:

    nlsadmin -i tcp
    nlsadmin -l  '\x00020acec60802010000000000000000' tcp
    nlsadmin -l  '\x00020acec60803010000000000000000' tcp
                "волшебное  ^^^^^^^^шестнадцать нулей
                слово 0acе"    |
                               |
                 сюда вписывается наш фактический IP-адрес
    

    Конфигурация BSD сокетов.

    Для этого ничего делать не надо. Впрочем, в дальнейшем, возможно, вам придется этим заниматься. Настройки inetd лежат в файлах:
    /etc/inetd.confназвание сетевого сервиса --> имя обслуживающей программы
    /etc/servicesномер порта --> название сетевого сервиса

    Состояние текущих соединений можно посмотреть командой:

    netstat (или netstat -ta - если у вас Linux)

    Еще несколько протоколов

    1ARP - Address Resolution Protocol
    Протокол низкого уровня. Поддерживается на уровне ядра и/или дравера сетевой платы. Для определения, какой ethernet'ный адрес имеет машина, если известен ее IP-адрес. Работает по принципу broadcаst: "эй, все, все, все: IP-такой_то - отзовись", и он один отзывается.

    arp -a # распечатать известные нам IP-адреса и их eth-адреса

    RARP - Reverse Address Resolution Protocol.
    Для оповещения бездисковых клиентов, какой у них IP-адрес. На сервере запускается демон rarpd. У него есть файл-таблица: ether-адрес -> IP-адрес. По запросу-broadcast'у бездискового клиента вида: "эй, все,все,все, мой eth-адрес такой-то. Как меня зовут?" rarpd сообщает ему, какой у него IP (а другой демон bootparamd сообщает ему дополнительную информацию - где ему брать свою корневую файловую систему, например).

    Для обмена информацией о роутинге (маршрутизации) используются протоколы RIP, BGP, EGP, ICMP.

    RIP - Routing Information Protocol
    Внутренний протокол роутинга (внутри автономной системы). Его поддерживают демоны routed и/или gated.

    BGP - Border Gateway Protocol
    EGP - External Gateway Protocol

    Роутинг между автономными системами. Их поддерживает демон gated

    ICMP - Internet Control Message Protocol
    передает сообщения об ошибках в TCP/IP (например "port unreachable"), используется программами ping, traceroute, может передавать сообщение о нерациональном роутинге типа "redirect": "вообще-то можно направлять пакеты через меня, однако есть и бо- лее короткий путь".

    Для обмена информацией о символических именах host'ов, пользователей, групах пользователей и пр. используются протоколы DNS и NIS/YP

    DNS - Domain Name System.
    Позволяет использовать символические имена хостов помимо цифровых IP-номеров, и организовывать "деревянную" структуру наименования доменов (типа pc101.fedfond.msk.su , ftp.sco.com и т.п.) Сервер DNS - хост, на котором запущен демон bind, и хранятся имена хостов в зоне(домене). На остальных хостах для определения IP-адреса по имени используются библиотечные функции библиотеки "resolver" - gethostbyname, gethostbyaddr, которые обращаются по сети к ближайшему серверу DNS, и выясняют у него IP-адрес машины по ее имени (domain-name).

    NIS/YP - Network Information System
    (используется так же название, пришедшее от фирмы Sun - Yellow Pages). Позволяет хранить на одном NIS-сервере (с демоном ypserv) информацию, единую для всей локальной сети: имена хостов, имена и права пользователей, групп пользователей, название их домашних каталогов, символические имена портов и т.д. и т.п.

    Еще раз об отличиях DNS от NIS/YP: DNS - система "глобальная" - действует в рамках всего Интернета, но содержит ТОЛЬКО имена хостов. NIS/YP - содержит помимо имен хостов несколько других информационных баз, но зато поддерживается только в рамках сети одной организации.

    [Назад] [Содержание] [Вперед]


    Copyright © CIT

    Организация TCP/IP по последовательным линиям

    Протокол TCP/IP не обязательно требует наличия ethernet'ной се- ти. Вполне допустимы и другие физические носители, например:

    • Последовательные линии с подключением через порты RS-232,
    • Скоростные линии с подключением через параллельные порты, или скоростные синхронные порты (например 485, V.435).

    Эти возможности обеспечиваются специализированными реализациями протоколы IP:

    • для подключения через RS-232
      • SLIP - Serial Line IP - самая первая реализация TCP/IP "для бедных", широко используется до сих пор.
      • CSLIP - Compressed SLIP - модификация протокола SLIP. Сжатию подвергаются заголовки IP-пакетов. ВНИМАНИЕ: но не сами данные! В стандартном IP-пакете IP-заголовки со служебной информацией занимают порядка 40 байт. В CSLIP'е эти заголовки ужимаются до 3 байт. При пересылке большого числа мелких пакетов получается существенный выигрыш в скорости. Если пакеты крупные, то выигрыша не будет никакого.
      • PPP - Point-to-Point Protocol Еще одна, современная реализация TCP "для бедных". Является стандартным для SVR4. Более универсален. Позволяет также организовать передачу по последовательной линии протокола IPX. Поддерживает режимы эмуляции slip и cslip - для совместимости.
    • для подключения через Centronix-параллельный порт
      • PLIP - Parallel Line IP - некоторые скажут - экзотика. Ничуть не бывало. Весьма распространенная вещь. Вот когда TCP/IP по SCSI-шине - это да, это - экзотика.

    TCP/IP по спутниковой связи.

    Теоретических трудностей организация связи TCP/IP через спутниковую антенну нет - все выглядит также, как при модемной связи по телефону. Технология примерно следующая: с антенны выходит высокочастотный сигнал, сигнал прогоняется сквозь спутниковый модем, из модема выходит поток данных по формату High Speed Interface - завести в компьютер его можно через скоростной порт, например V.435 (логически он ведет себя приблизительно как обычный последовательный порт), и со стороны хоста - поднимается протокол PPP. Естественно, на "том конце" предполагается та же схема подключения.

    Вместо Хоста со скоростным портом, модем можно подключить к специализированному устройству - "Роутеру", внутри которого "зашит" протокол TCP/IP (PPP, Ether), и имеются порты Ethernet, и High Speed Interface. Достаточно популярны для таких целей роутеры "Cisco router", "NetBlaser".

    Скорость, которую можно получить.

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

    Практические ограничения на скорость:

    • Скорость данных между модемами V32bis/V42 по городскому телефону, или междугородней линии "Искра" до 16800 бит/сек. Реально ~ 12000 бит/с. Наличие встроенного протокола V42 сжатия данных позволяет поднять реальную (замеренную уже не между модемами, а между портами) скорость передачи несжатых данных в 2-4 раза, т.е. до 38400-57600 бит/с
    • Максимальная скорость приема/передачи данных на последовательном порту RS-232 зависит от наличия в оном микросхем UART (Universal Asyncronous Receiver-Transmitter)
      • 16450 - 19200 bit/s.
      • 16550 - 19200 bit/s. (отсутствие буковки "A" - фатально)
      • 16550A - 38400 bit/s.
      • 16550A до 115200 bit/s. (Если операционная система "тянет")
        (в частности - Solaris, Unixware - нет, FreeBSD, Netblaser, Cisco router - да)

    В итоге реальная скорость пересылки данных:

    • Телефон/"Искра", V32bis/V42 - 19200 бит/с.
    • Выделенная 2-х проводка, V32bis/V42 - 38400 бит/с.
    • Выделенная 4-х проводка, RAID,????? - 115200 бит/с.
    • Физическая 4-х проводка <=4км, ????? до 1 Мбит/с.
    • Оптоволокно <=?км, ????? ?? 2 Мбит/с.
    • Антенна. Спутниковый модем. Порт V.435. PPP 64, 128, 256 Кбит/с

    Конфигурирование SLIP/CSLIP.

    Для этого соединяем два host'а нульмодемным кабелем через последовательные порты, и запускаем фоном программу slattach, переводящую порты в режим передачи протокола TCP/IP. Естественно, что SLIP надо запускать с обоих концов, причем "одинаковый".

    SVR4, slip

    slattach /dev/comport  NASH-IP-ADRES  IH-IP-ADRES 19200 &
      # переводит порт /dev/comport в режим "slip" на скорости 19200
      # и устанавливает IP-адрес на slip-интерфейс
    

    SVR4, cslip

    slattach -c /dev/comport  NASH-IP-ADRES  IH-IP-ADRES 38400 &
      # переводит порт /dev/comport в режим "Compressed-slip"
      # на скорости 38400
      # и устанавливает IP-адрес на C-slip-интерфейс
    slattach -e /dev/comport  NASH-IP-ADRES  IH-IP-ADRES 38400 &
      # переводит порт в режим slip или cslip,
      # автоматически определяя, какой именно протокол запущен
      # "на том конце", и устанавливает со своей стороны такой же
    

    Linux, SLIP.

    slattach -p slip /dev/modem & # переводит порт в режим "slip"
    ifconfig sl0 NASH-IP-ADRES  pointopoint  IH-IP-ADRES
    route add IH-IP-ADRES
    route add default gw IH-IP-ADRES
    

    Linux, CSLIP.

    # сперва переводим порт в режим "cslip"
    slattach -p cslip /dev/modem &
    ifconfig cs0 NASH-IP-ADRES  pointopoint  IH-IP-ADRES
    route add IH-IP-ADRES
    route add default gw IH-IP-ADRES
    

    Linux, PLIP.

    ifconfig plip1 NASH-IP-ADRES  pointopoint  IH-IP-ADRES
    route add IH-IP-ADRES
    route add default gw IH-IP-ADRES
    

    Установка SLIP по телефонной линии через модем.

    Надо заставить наш модем созвониться с "тем" модемом. После этого мы получаем прозрачное соединение между последовательными портами, по которому и "поднимаем" SLIP, см. предыдущие пункты.

      ( stty 19200 ; echo atdp9120123 ) < /dev/modem > /dev/modem
      sleep 55
    

    Выдаем на модем команду atdp - набрать телефонный номер, и ждем 55 секунд. Надеюсь, модемам хватит этого времени, чтобы "снюхаться".

    Восстановление связи в случае обрыва.

    Как узнать, что связь порвалась? Ping'ануть "тот" конец линка. Прежде, чем набирать модемом номер для новой дозвонки, необходимо "снять" slip с нашего последовательного порта (поскольку в режиме slip он функционирует не как последовательный порт, а как канал передачи TCP/IP). Как снять slip? Кильнуть slattach.

    while true   # В вечном цикле
    do sleep 60  # Подождать минутку
      if  ping 107.65.8.254 | grep 'is alive' ;
        then   echo Ok > /dev/null   # Если IH-IP-ADRES отзывается
        else
             # Иначе зарубаем slattach
             slip_pid=`ps -ef | grep slattach | cut -c1-6`
             kill -9 $slip_pid
             # набираем тамошний телефонный номер
            (stty 19200; echo atdp9120123) < /dev/modem > /dev/modem
             sleep 55
             # поднимаем slattach
             slattach -e /dev/modem  195.8.2.3  107.65.8.254 19200 &
      fi
    done
    

    [Назад] [Содержание] [Вперед]


    Copyright © CIT

    СЕТЕВАЯ ФАЙЛОВАЯ СИСТЕМА NFS (Network File System)

    Стандартной сетевой файловой системой для UNIX'а является NFS. Любая Unix-машина умеет монтировать по протоколу NFS удаленные файловые системы и использовать их как свои собственные, а так же может выделять свои каталоги для других машин. Выглядит это примерно так:

       mount -F nfs udalennaq.mashina:/katalog_tam  /katalog
    
    или, если у вас BSD или Linux
       mount -o rsize=8192,wsize=8192 mashina:/katalog_tam  /katalog
       ls -al /katalog
    

    Хотя NFS был когда-то разработан для Unix'а, имеется реализация NFS для MSDOS-овских PC. Эти пакеты принято называть сводным именем PC/NFS (Не путать с названием "PC-NFS" - это реализация PC/NFS от фирмы "Sun Select"). Т.е. PC'юк, на котором запущен NFS для PC, может монтировать в качестве сетевых дисков каталоги Unix'овской машины, которые она выделяет в NFS. - Фактически, PC/NFS дает для PC те же самые возможности, что и Netware - удаленный сетевой диск и удаленный сетевой принтер. Разница лишь в том, что Unix-host, помимо позволения NFS-ения себя, в состоянии заниматься и своими собственными задачами, а сервер Netware ничем кроме обслуживания своих клиентов, изображая для них диск с ethernet'ом, заниматься не приспособлен, но работает быстрее раза в 1.5-2. Ну и занимают NFS-ные резиденты порядка 100 Kb оперативной памяти, в то время как Netwar'ные - порядка 50.

    Оценочные скорости пакетов PC/NFS различных производителей: 486dx2/66, адаптер wd8013 16 bit

    Пакетчтение Kb/секзапись
    NFS for PC
    PC-NFS 4.0 220 120
    PC-NFS 5.0(**) 220 120
    Pathway 350 170
    PCTCP 3.0 350 200
    TSOFT (*) 200 100
    XFS (*) 500 50
    Chameleon NFS(**) 2-е место по результатам тестов Unix for PC
    Linux/NFS(*) 400 350
    FreeBSD/NFS(*) 900 300
    Unixware/NFS 400 300
    Прочие
    Netware 3.11 500 600
    NW Lite 400 500
    WFW (Samba) 150 150
    Lantastic ? ?
      (*) - условно-бесплатные или бесплатные пакеты
      (**) - защищен от нелицензированного копирования

    Для сравнения: скорость чтения/записи NFS между двумя SUN SPARCstation и/или IBM/RS6000 900/400 Kb/сек

    Для того, чтобы Unix-машина служила NFS сервером

    На ней должны быть запущены следующие демоны:

    • rpc.portmap - демон портов RPC (Remote Procedure Call)
      (поскольку NFS использует RPC)
      (На Motorole не требуется.)
    • mountd - обслуживание команд монтирования (он решает - разрешить/ не разрешить)
    • nfsd - непосредственное обслуживание протокола NFS
    • biod - кэширование NFS-чтений на клиенте
      (только в SunOS)
    • pcnfsd - проводит дополнительную "авторизацию" пользователей на PC/NFS клиентах. Поскольку MSDOS не занимается учетом и регистрацией пользователя, pcnfsd сам спрашивает у PC-ишногоuser'а его имя и пароль.
      (не обязателен, но желателен)

    Обычно все эти демоны запускаются на уровне выполнения 3. Посмотрите, с большой вероятностью вы обнаружите на своей машине файл с названием наподобие:

      /etc/rc3.d/S22nfs - предназначен для запуска NFS-сервера
    
    Должно быть указано, какие именно каталоги, разрешается "видеть" по NFS, и каким именно машинам это разрешается.

    Эти каталоги указываются в файле /etc/dfs/dfstab и экспортируются явной командой shareall или share (если у вас SVR4) или в файле /etc/exports и экспортируются явно командой exportfs -a (если у вас какой либо другой UNIX)

    Активизация NFS.

    Обычно, на машине со свежеустановленным Unix'ом NFS сервер не активизирован. Чтобы он запустился, системный администратор должен обеспечить выполнение условий перечисленных в предыдущем пункте. Для этого достаточно:

    Motorola 922

    После загрузки переходить на уровень выполнения 3. В файле /etc/inittab исправить строку is:2:initdefault: на строку is:3:initdefault:

    Запускать pcnfsd - демона "авторизации" PCNFS'ных пользователей В файл /etc/rc3.d/S22nfs вставить команду запуска демона:

            /usr/lib/nfs/pcnfsd
    
    Из меню sysadm в network_services/remote_files/local_recources/share/nfs задать каталоги, которые вы разрешаете "раздавать" по NFS. Например, проэкспортируйте каталог /home

    Чтобы исправления в /etc/inittab подействовали, перезагрузите unix командой shutdown -y -g0 -i6

    Linux

    В файле /etc/rc.d/rc.inet2 раскомментируйте строки, запускающие демонов

      rpc.portmap
      rpc.nfsd
      rpc.mountd
      rpc.ugidd
    В файл /etc/exports вставьте строку /(rw). Перезагрузитесь

    Sun Solaris 1.1

    В файл /etc/exports вставьте строки...

      /home
      /usr
    Перезагрузитесь

    Sun Solaris 2.3

    В файле /etc/dfs/dfstab вставьте строки для экспортируемых файловых систем. (Формат указан в комментариях в этом файле). Перезагрузитесь

    ЕЩЕ ОДНА СЕТЕВАЯ ФАЙЛОВАЯ СИСТЕМА. RFS. DFS.

    RFS - Remote File Sharing. Тоже сетевая файловая система. NFS - порождение BSD Unix'а, RFS - System V Unix'а. Назначение такое же, как и у NFS. Каких либо преимуществ по сравнению с NFS не имеет. Ярко выраженных недостатков, пожалуй, тоже. Значительно менее распространена, чем NFS. Не имеет automounter'а. Клиентов RFS for MSDOS PC нет. Зато RFS поддерживает захват и блокировку файлов, и специальные файлы. Активизировать RFS вряд ли имеет смысл. Действительно, зачем нам второй Генеральный секретарь?

    DFS - Distributed File System. Тоже сетевая файловая система. Вот и все, что я могу про нее сказать.

    [Назад] [Содержание] [Вперед]


    Copyright © CIT

    Конфигурирование automount-демона

    Авто-монтировщик - демон, запущенный на NFS-клиенте. Этот демон монтирует удаленные каталоги "ПО ТРЕБОВАНИЮ" - т.е., когда к ним происходит обращение. Если к автоматически смонтированному каталогу долго не было обращений, автомонтировщик его автоматически отмонтирует.

    Авто-монтирование поддерживается демоном automountd. Этот демон запускается при начальной загрузке операционной системы. Запускается он в командном файле /etc/rc2.d/S20nfs.client automountd (если все карты будут браться из NIS) или automountd -m -f /etc/auto.master (брать только локальные карты

    Управляется automountd несколькими "картами" - файлами с описанием кого и куда надо монтировать. В простейшем случае нужно иметь три файла:

    • /etc/auto_master - головной конфигурационный файл. Ссылается на:
    • /etc/auto_direct - указывает, какие каталоги куда монтировать
    • /etc/auto_home - задает правила монтирования домашних каталогов пользователей, расположенных на удаленных машинах.

    /etc/auto_master :


    #
    # Master map for automounter
    #
    /net        -hosts
    # задает: корневой каталог компьютера по имени imyarek монтировать
    # на каталог       /net/imyarek
    #
    /-          /etc/auto_direct
    /home       /etc/auto_home
    

    /etc/auto_direct :


    #
    #
    /usr/informix    -ro,soft    classic00:/usr/informix
    /usr/local       -rw,soft    classic00:/usr/local
    #
    #      Смонтировать с первого откликнувшегося сервера.
    #
    /usr/share/man   -ro,soft    classic00:/usr/share/man \
                     -ro,soft    sun21:/usr/share/man \
                     -ro,soft    sun22:/usr/share/man
    

    /etc/auto_home :


    moshkow           s08:/udd/moshkow
    leo               classic00:/export/home/leo
    # а лучше написать так:
    *                 classic00:/export/home/&
    *                 sun21:/export/home/&
    

    Каждый пользователь polxzowatelx на этой машине должен быть зарегистрирован с домашним каталогом /home/polxzowatelx

    [Назад] [Содержание] [Вперед]


    Copyright © CIT

    Конфигурирование NIS на SunOS 4

    Мастер-NIS-сервер.

    domainname foms.msk.su
    echo foms.msk.su > /etc/defaultdomain
    mkdir /var/yp
    

    В файле /etc/rc.local раскомментировать или добавить:

           ypserv
           ypbind
           rpc.yppasswdd /etc/passwd -m passwd
           ypxfrd
    

    Скопировать NIS-Makefile в /var/yp : cp /usr/lib/NIS.Makefile /var/yp/Makefile или вставить CD-ROM с системой и

      cd /tmp
      /usr/etc/extract_files sr0 root -f ./var/yp/Makefile
      mv ./var/yp/Makefile /var/yp/Makefile
    

    Проинициализировать сервера в Мастер-режиме

       cd /usr/etc/yp
       ypinit -m
    

    В ответ на запросы перечислить всех предполагаемых slave-серверов, и нажать CTRL-D

    Перезагрузиться

    После любого изменений информационных файлов, лежащих в NIS на мастер-сервере

      cd /var/yp
      make
    

    NIS клиент.

    domainname foms.msk.su
    echo foms.msk.su > /etc/defaultdomain
    mkdir /var/yp
    

    В файле /etc/rc.local раскомментировать или добавить: ypbind

    Slave-NIS-сервер.

    domainname foms.msk.su
    echo foms.msk.su > /etc/defaultdomain
    mkdir /var/yp
    

    В файле /etc/rc.local раскомментировать или добавить:

           ypserv
           ypbind
    

    Сделать копию текущих NIS-карт с мастер-NIS сервера

       cd /usr/etc/yp
       ypinit -s master_nis_server.your.nis.domain
    

    "Ознакомить" Мастер-сервера с новым клиентом
    НА МАСТЕР-СЕРВЕРЕ

      cd /usr/etc/yp
      ypcat -k ypservers > /tmp/tmp-file
      echo nowyj_slave_server >> /tmp/tmp-file
      ypinit -m < /tmp/tmp-file
    

    Чтобы карты на slave-сервере всегда были свежими

    На slave-сервере должна периодически запускаться команда ypxfr, которая опрашивает мастер-сервера на предмет изменения NIS-карт.

    Частота опроса и внесения изменений задается скриптами

      /usr/etc/yp/ypfxr_1perday
      /usr/etc/yp/ypfxr_2perday
    
    которые необходимо запускать из root-crontab. Добавьте их туда, если их еще нет. Для справки наберите команду

    crontab -l

    Информационные команды NIS.

    ypwich
    ypwich -m
    ypwich clientname
    yppush map
    ypcat  map
    ypcat -k map
    ypmatch key1 key2 map
    

    [Назад] [Содержание] [Вперед]


    Copyright © CIT

    DNS - Domain Name Service

    Конфигурирование DNS-клиента

    /etc/resolv.conf :
    domain          fedfond.msk.su
    nameserver      127.0.0.1
    ;nameserver     128.8.2.1
    /etc/defaultdomain :
    fedfond.msk.su
    /etc/host.conf :
    order hosts, nis, bind
    multi on
    

    Как посмотреть зоны DNS

     nslookup -ty=ns  msk.ru
     zzz=msk.ru ; named-xfer -z $zzz -f filename ns.$zzz
     egrep '^[a-z]' filename | egrep -v A | grep NS| cut -f1 | sort -u| wc
    
    или сходить в RIPE:

    Результат на февраль 1997:

    • ru - 1400
    • msk.ru - 217
    • spb.ru - 490
    • ras.ru - 20
    • msu.su - 19
    • rssi.ru - 42

    Конфигурирование DNS-сервера

    /etc/named.boot
    ; домен fedfond.msk.su          IP-сеть - 128.8.2
    ;
    ;    boot file for name server
    ;
    directory /var/named
    cache      .                     named.root
    ; type     domain                source host/file          backup file
    primary    fedfond.msk.su        fedfond.msk.su.hosts
    primary    0.0.127.in-addr.arpa  named.local
    primary    2.8.128.in-addr.arpa  2.8.128.hosts.rev
    ----------------
    ; local dns file named.local 0.0.127.in-addr.arpa
    ;
    @   IN    SOA   fedfond1.fedfond.msk.su.      moshkow.fedfond.msk.su. (
                    94092101;       Serial
                    10800;          Refresh
                    1800;           Retry
                    3600000;        Expire
                    86400 );        Minimum
        IN          NS      fedfond1.fedfond.msk.su.
    1   IN          PTR     localhost.
    ===========================
    ; fedfond.msk.su zone hosts file for server fedfond1.fedfond.msk.su
    ;
    @               IN  SOA fedfond1.fedfond.msk.su. moshkow.fedfond1.fedfond.su. (
                                            94092501;       Serial
                                            10800;          Refresh
                                            1800;           Retry
                                            3600000;        Expire
                                            86400 );        Minimum
                            NS      fedfond1.fedfond.msk.su.
                            NS      ipsun.ac.msk.su.
    ;
                            MX      0       fedfond1.fedfond.msk.su.
                            MX      20      ipsun.ac.msk.su.
                            MX      30      mailhost.cs.msu.su.
                            MX      40      mail.gmd.de.
                            MX      50      sunic.sunet.se.
    ; localhost             A       127.0.0.1
    $INCLUDE /var/named/fedfond-hosts-spisok
    ----------------
    ; Hosts in fedfond.msk.su zone
    mailrelay       CNAME   fedfond1
    mailhost        CNAME   fedfond1
    mailserver      CNAME   fedfond1
    newshost        CNAME   fedfond1
    ftp             CNAME   fedfond1
    www             CNAME   fedfond1
    gopher          CNAME   fedfond1
    master          CNAME   fedfond1
    server          CNAME   fedfond1
    ;
    ; Host fedfond1
    ;
    fedfond1        A       128.8.2.1
                    MX      0       mailrelay
                    HINFO   Motorola88110 "SVR4.1/88"
                    WKS     128.8.2.1       UDP ( time domain name )
                    WKS     128.8.2.1       TCP ( echo telnet discard
                                                    sunrpc uucp-path systat
                                                    daytime netstat nntp
                                                    link chargen ftp time
                                                    whois pop-2 rje finger smtp
                                                    supdup hostnames domain )
    ;
    ; Host s20
    ;
    s20             A       128.8.2.20
                    MX      0       mailrelay
                    HINFO   Besta/31 UNIX-V.3
    besta           CNAME   s20
    prilipko        CNAME   s20
    ;
    ; Host s30
    ;
    s30             A       128.8.2.30
                    A       128.9.2.30
                    A       193.124.148.59
                    MX      0       mailrelay
                    HINFO   PC486/66DX2 UnixWare_1.1
                    WKS     128.8.2.30              UDP ( time domain name )
                    WKS     128.8.2.30              TCP ( echo telnet discard
                                                    sunrpc uucp-path systat
                                                    daytime netstat nntp
                                                    link chargen ftp time
                                                    whois pop-2 rje finger smtp
                                                    supdup hostnames domain )
    unixware                CNAME   s30
    ;
    ; Host pcat101
    ;
    pcat101         A       128.8.2.101
                    MX      0       mailrelay
                    HINFO   PC486/66DX2 "MSDOS 6.2"
    pc101           CNAME   pcat101
    guest01         CNAME   pcat101
    ;
    ; Host pcat101
    ;
    pcat102         A       128.8.2.102
                    MX      0       mailrelay
                    HINFO   PC486/66DX2 "MSDOS 6.2"
    pc102           CNAME   pcat102
    guest02         CNAME   pcat102
    ===========================
    ; Initial cache data for root domain servers
    ;
    ; list of servers ...
    ;
            99999999        IN      NS      NS.INTERNIC.NET.
            99999999        IN      NS      NS.NIC.DDN.MIL.
            99999999        IN      NS      NS1.ISI.EDU.
            99999999        IN      NS      AOS.ARL.ARMY.MIL.
            99999999        IN      NS      C.NYSER.NET.
            99999999        IN      NS      TERP.UMD.EDU.
            99999999        IN      NS      NS.NASA.GOV.
            99999999        IN      NS      NIC.NORDU.NET.
    ; ... and their adresses
    ;
    NS.INTERNIC.NET.        99999999        IN      A       198.41.0.4
    NS.NIC.DDN.MIL.         99999999        IN      A       192.112.36.4
    NS1.ISI.EDU.            99999999        IN      A       128.9.0.107
    AOS.ARL.ARMY.MIL.       99999999        IN      A       128.63.4.82
    AOS.ARL.ARMY.MIL.       99999999        IN      A       192.5.25.82
    C.NYSER.NET.            99999999        IN      A       192.33.4.12
    TERP.UMD.EDU.           99999999        IN      A       128.8.10.90
    NS.NASA.GOV.            99999999        IN      A       128.102.16.10
    NS.NASA.GOV.            99999999        IN      A       192.52.195.10
    NIC.NORDU.NET.          99999999        IN      A       192.36.148.17
    ===========================
    @       IN      SOA fedfond1.fedfond.msk.su. moshkow.fedfond1.fedfond.msk.su. (
                                            94102501;       Serial
                                            10800;  Refresh
                                            1800;   Retry
                                            3600000;        Expire
                                            86400 );        Minimum
                                    NS      s08.fedfond.msk.su.
                                    NS      ipsun.ac.msk.su.
                                    NS      ns.itep.ru.
                                    NS      suncom.itep.ru.
                                    NS      ns.cs.msu.su.
                                    PTR     s30.fedfond.msk.su.;    Gateway
    ;
    ; Reverse-name   [ttl]          PTR     Real-name-dot
    ;
    1                               PTR     fedfond1.fedfond.msk.su.
    20                              PTR     s20.fedfond.msk.su.
    30                              PTR     s30.fedfond.msk.su.
    101                             PTR     pcat101.fedfond.msk.su.
    102                             PTR     pcat102.fedfond.msk.su.
    

    [Назад] [Содержание] [Вперед]


    Copyright © CIT

    КАК ПОДКЛЮЧИТЬ АЛФАВИТНО-ЦИФРОВОЙ ТЕРМИНАЛ

    Подключите терминал к компьютеру с помощью нуль-модемного кабеля. Предполагается, что он у вас имеется, и разъемы на нем подходят. В большинстве случаев терминал подключается стандартным нульмодемным кабелем с разъемами 25папа/25мама, или 25/9. Четыре стандартных последовательных порта Motorol'ы имеют разъемы RJ-45. (Такие же разъемы имеет витая пара.)

    Выставьте правильные характеристики терминала, используя его локальный setup. Как это сделать - написано в книжечке, прилагаемой к терминалу. На терминале нужно выставить такие характеристики последовательного порта:
    Transmit speed 9600
    Receive speed 9600
    Data bits 8
    Stop bits 1
    Parity none
    Flow control XON/XOFF
    (скорость 9600, 8-ми битные символы, протокол ^S/^Q)

    А также характеристики терминальной эмуляции:
    Emulation vt220/7bit
    Key click none
    Style ansi

    Посмотрите в файл /etc/inittab . В нем имеется строка для запуска login'а на консольный терминал. И строки для запуска logina на остальные порты. Однако остальные строки "дезактивированы" - в них указанно "off" в третьей позиции. Замените его на "respawn" в строке, которая соответствует вновь подключенному порту.

    ct:234:respawn:/usr/lib/saf/ttymon -g -d /dev/contty  -l contty
    c2:234:off:/usr/lib/saf/ttymon    -g -d /dev/contty02 -l contty
           ^^^^|
               |
               v
    c2:234:respawn:/usr/lib/saf/ttymon -g -d /dev/contty02 -l contty
    

    Выполните команду init q чтобы процесс init обратил внимание на изменения, внесенные в inittab. На терминале должно появиться приглашение Login:

    Чтобы программы типа текстовых редакторов и баз данных корректно работали с вашим терминалом, в системе должно иметься правильное описание этого терминала. Естественно, об этом должен позаботиться системный администратор.

    В Unix имеется база с описаниями возможностей алфавитно-цифровых терминалов. Большинство экранных программ используют ее для настройки на терминал. Программы эти используют для работы с терминалом библиотеку "curses" - функции этой библиотеки позволяют работать с экраном безотносительно от типа терминала.

    [Назад] [Содержание] [Вперед]


    Copyright © CIT

    КАК СОЗДАТЬ TERMCAP ОПИСАНИЕ ТЕРМИНАЛА

    Для настройки на терминалы UNIX-овские программы используют файл termcap, в котором собраны описания всех (или почти всех) терминалов, существующих в природе. Выяснив, какой тип терминала подключен к машине (а задается это в переменной окружения TERM - например TERM=d460 или TERM=d211), UNIX-программа находит описание этого терминала в termcap и, настроившись по хранящейся там информации, может адекватно воспроизводить на нем информацию, подлежащую выводу.

    INFORMIX имеет свой собственный файл с описаниями терминалов, его имя /usr/informix/etc/termcap , в нем поддерживается больше возможностей по сравнению со стандартным termcap UNIX'а. Зато многих терминалов, известных UNIX, в INFORMIXовом termcape не описано. Поэтому если на вашей машине стоят терминалы какой-то другой конструкции (т.е., практически любой терминал помимо d211, d460, vt220), вам придется описание делать самому.

    Общий формат termcap-описания терминала можно описан в terminfo(4) ("Справочнике администратора UNIX V"), его так же легко уразуметь, рассматривая описания других терминалов, и я не стану особо подробно на нем останавливаться.

    См. также Формат базы терминалов termcap/terminfo

    За основу надо взять описание терминала из базы terminfo UNIXа, отредактировать, исправить и отладить его, и вставить в файл /usr/informix/etc/termcap

    Поместить полное описание терминала vt220 в формате terminfo по одной характеристике в строке в файл vt220 :
    infocmp -r1 vt220 > vt220

    Поместить исправленное описание терминала vt220 в базу данных terminfo
    tic vt220

    Поместить полное описание терминала vt220 в формате termcap по одной характеристике в строке в файл tmp :
    infocmp -Cr1 vt220 > tmp

    Поместить исправленное описание терминала vt220 в базу termcap

    Самостоятельно, ручками, с помощью любого текстового редактора заменяем старое описание на новое в файле /etc/termcap или/и /usr/informix/etc/termcap

    Сделать описание формата terminfo из описания формата termcap
    captoinfo vt220.cap > vt220

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

    Вот какие характеристики имеет смысл, и следует, задавать (А остальные, скорее всего, вообще необязательно указывать):

    1. Символьные termcap характеристики.
      • :am:\ в терминале есть автоматические границы
      • :bw:\ можно переводить курсор из колонки 0 в последнюю
      • :mi:\ можно без опасений перемещаться в режиме вставки
      • :ms:\ можно без опасений перемещаться в режиме сообщений
      • :xo:\ терминал использует протокол xon/xoff
    2. Ключи. Т.е. коды, которые посылаются клавишей, если на нее нажать.
      termcap
      характеристика
      клавиша
      k0 ... k9 F1 ... F10
      kA ... kK F11 .. F20
      ki ключ вставить строку
      kj ключ уничтожить строку
      kf ключ на следующую страницу
      kg ключ на предыдущую страницу
      ku стрелка вверх
      kd стрелка вниз
      kr стрелка вправо
      kl стрелка влево

      например, для xterm:
      :ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:\

    3. Коды управления курсором
      • vi сделать курсор невидимым
      • ve сделать курсор нормальным
      • vs сделать курсор ярким
      • cm позиционировать курсор #стр #столб
        (использует стек-машину терминала),
          например :cm=\E[%i%d;%dH:\ для vt220
          :cm=^P%r%.%.:\ для d211
      • bc шаг назад
      • le курсор влево
      • do курсор вниз
      • nd курсор вправо
      • up курсор вверх
      • ho в начало экрана
      • cr вернуть каретку
      • nl перейти на новую строку
      • nw возврат каретки и переход к новой строке

      например, для vt100:
      :up=\E[A:do=\E[B:nd=\E[C:le=\E[D:\

    4. Коды управления экраном
      • cl очистить экран
      • ic вставить символ
      • dc удалить символ
      • bl звонок
    5. Инициализация терминала.
      • ti включить терминал в штатный режим работы.
      • te "восстановить" первобытное состояние

      Например, для терминала d211-132:
      :ti=^^FK:\ Включить 132 символьный экран
      :te=^^FJ:\ Включить 80 символьный экран

    6. Управление атрибутами.
      • as перейти к дополнительному алфавиту
      • ae вернуться из дополнительного алфавита
      • ac пары символов из графического алфавита
      • mr в режим REVERSE
      • me выключить все атрибуты
    7. Символы рисования рамочек.
        нужно перечислить символы ASCII, которые, будучи выведены в режиме псевдографики, нарисуют "уголки"
      • gb символы рисования рамки pqbd-|
      • gs в режим псевдографики.
      • ge конец режима псевдографики.

      Например, для терминала d460:
      :gb=1324;\::\
      :gs=^^FS11:ge=^^FS00:\

    8. Управление цветами ZA.

      Если характеристики ZA не задано, то терминал будет поддерживать только два цвета: REVERSE и NORMAL. (В termcap UNIX'а есть аналогичная характеристика sa.)

      Характеристика ZA использует стек_машину терминала и параметры. Устроено все примерно так:

      У терминала есть, так называемая, стек_машина: Это несколько переменных, несколько статических переменных, восемь параметров от p1 до p8, и стек. Имеется набор операций, которыми можно манипулировать с данными, лежащими в переменных и в параметрах, производить над ними в стеке логические и арифметические операции и пересылать на терминал.

      Когда INFORMIX'у нужно поменять атрибуты вывода, он устанавливает в параметрах p1 - p4 нужные значения, а дальше применяет команду терминала, записанную в ZA. В итоге на терминал уходит ESC-последовательность, включающая на нем заданные атрибуты (цвета).
      ПараметрЗначениеЗадает атрибут(на монохроме) или цвет
      p1от 0 до 7определяет цвет (от WHITE до BLACK)
      p1 0 NORMAL WHITE
      p1 1 BOLD CYAN
      p1 2 BOLD YELLOW
      p1 3 BOLD MAGENTA
      p1 4 DIM RED
      p1 5 DIM GREEN
      p1 6 DIM BLUE
      p1 7 INVISIBLE BLACK
      p2 1 или 0 атрибут REVERSE (есть или нет)
      p3 1 или 0 атрибут DIM (есть или нет)
      p4 1 или 0 атрибут UNDERLINE (есть или нет)

      Стек-машина понимает такие команды:

      • %pi параметр i в стек, где i=1,2,...,8
      • %{n} число n в стек
      • %c вершину стека на терминал в формате %c (1 байт)
      • %d вершину стека на терминал в формате %d (целое число)

      Условный оператор %? %t %e %; Вынимается значение из стека, и, в зависимости от его значения (0 / не0), выполняет соотв. ветвь.
      %? операция %t операция_когда_истинно %e операция_когда_ложно %;
      %? операция %t операция_когда_истинно %;

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

    Разберем все на примере терминала vt220

    В инструкции к терминалу написано, что указанные атрибуты на терминале устанавливаются следующими ESC-последовательностями:
    \E[0mсбросить все атрибуты(если p1=0)
    \E[0;1mустановить BOLD(если p1>0)
    \E[0;7mустановить REVERSE(если p2=1)
    \E[0;5mустановить BLINK(если p3=1)
    \E[0;4mустановить UNDERLINE(если p4=1)

    Итак:

    ZA=\E[0         # посылаем начало последовательности \E[0 - сброс  всех
                    #  атрибутов.
     %?%p1          # если p1 не равен 0
       %t;1%;       # то вывести на терминал символы ;1
     %?%p2%t;7%;    # если p2 равен 1 то вывести на терминал ;7
     %?%p3%t;5%;    # если p3 равен 1 то вывести на терминал ;5
     %?%p4%t;4%;    # если p4 равен 1 то вывести на терминал ;4
     m              # вывести символ m
    

    Объединяем все вместе и получаем ZA характеристику терминала vt220
    :ZA=\E[0%?%p1%t;1%;%?%p2%t;7%;%?%p3%t;5%;%?%p4%t;4%;m:

    Как видите, эта характеристика ZA не обеспечит нам никаких цветов. Любители красивого могут самостоятельно поупражняться с разборкой и обработкой всех возможных значений параметра p1.

    [Назад] [Содержание] [Вперед]


    Copyright © CIT

    Формат базы данных терминалов termcap

    Для настройки на терминалы UNIX использует базу терминалов termcap, в котором описаны все (или почти все) виды терминалов, существующие в природе. Выяснив, какой тип терминала подключен к машине (а задается это в переменной окружения TERM (например TERM=d460 или TERM=d211)), UNIX находит описание этого терминала в termcap и, настроившись по хранящейся там информации, может адекватно воспроизводить на нем информацию, подлежащую выводу на этот терминал.
    termcap
    названия
    Таблица всех характеристик базы терминаловterminfo
    названия
    заголовок
    d211-tansi|Tatung d211 temporary DG-ANSI mode:\
    логические атрибуты терминала
    amв терминале есть автоматические границыam
    bwможно переводить курсор из колонки 0 в 80-юbw
    miможно без опасений перемещаться в insert-модеmir
    msможно перемещаться в режиме сообщенийmsgr
    xoтерминал использует протокол xon/xoffxon
    xnперевод строки после 80 колонок игнорируетсяxenl
    bsCTRL-H дает шаг назад
    ptТерминал имеет программируемую установку табул.
    числовые характеристики терминала
    co #80число колонокcols
    li #24число столбцовlines
    it #8 шаг позиции табуляцииit
    kn #Число функц. клавиш, отличных от "0" - "9", ".", "-"
    ТОЛЬКО В INFORMIX
    kiключ вставить строку
    kjключ уничтожить строку
    kfключ следующую страницу
    kgключ на предыдущую страницу
    gbсимволы рисования рамки
    gsв режим псевдографики (в доп. алфавит)
    geконец режима псевдографики (из доп. алфавита)
    характеристики tc =d211 "все остальное как у d211"
    ИНИЦИАЛИЗАЦИЯ ТЕРМИНАЛА
    tiпереключение терминала в режим cap в результате все функциональные клавиши переопределяются в длинные ESC последовательности. Причем зависят они только от терминала, а не от termcap файла. Можно переназначить возможность на другую клавишу только при условии, что это ключ. NewLine и CR не переназначаются - это не ключи! (Проверено)smcup
    tecap завершение Дравер терминала INFORMIX видимо плохо написан. Он не успевает обрабатывать ESC последовательности, в результате от них отрывается \Е и обрабатывается отдельно от своих вагонов.rmcup
    iPмаршрутное имя программы инициализацииiprog
    ifимя файла, с цепочкой инициализации терминалаif
    isстрока ╟ 0 инициализации терминалаis2
    i1строка ╟ 1 инициализации терминалаis1
    i3строка ╟ 2 инициализации терминалаis3
    rfимя файла с reset строкойrf
    r1терминал - в нормальное состояниеrs1
    r2переустановить терминал полностью в sane режимrs2
    r3переустановить терминал полностью в saners3
    УПРАВЛЕНИЕ АТРИБУТАМИ
    обеспечение атрибутовых возможностей.(reverse,blink, ...,color)
    saопределить видео атрибуты #1 - #9
    sa =\E[0%?%p1%{0}%=%!%t%p1%{4}%m%;%?%t;2;7%;%?%p2%t;7\: %;%?%p3%t;5%;%?%p4%t;4%;m
    использует стек_машину терминала
    sgr
    ИЗОБРАЗИТЕЛЬНЫЕ РЕЖИМЫ
    asперейти к дополнительному алфавиту smacs
    aeвернуться из дополнительного алфавита rmacs
    acтабличка символов для псевдографики +,.0i-`afghjklmnoqstuvwx~ acsc
    acсоответствующие им псевдорамочки > acsc
    mpв режим защищенных символовprot
    usв режим UNDERLINEsmul
    ueконец UNDERLINErmul
    soв режим выделенных сообщенийsmso
    seконец выделенных сообщенийrmso
    mdв режим BOLD выделенных символовbold
    mrв режим REVERSE негативrev
    mbв режим BLINK мерцаниеblink
    mhв режим DIM тусклыйdim
    mkв режим INVINSIBLE невидимостьinvis
    meвыключить все атрибутыsgr0
    im в режим вставкиsmir
    eiконец режима вставки rmir
    dm в режим DELETE (enter)smdc
    edконец режима DELETErmdc
    РЕЖИМЫ КУРСОРА
    viсделать курсор невидимымcivis
    veсделать курсор нормальнымcnorm
    vsсделать курсор яркимcvvis
    УПРАВЛЕНИЕ ЭКРАНОМ
    clочистить экран clear
    cdочистить конец экранаed
    ceочистить конец строки el
    cbочистить до начала строкиel1
    icвставить символich1
    dcудалить символdch1
    ecуничтожить символech
    alвставить строкуil1
    dlудалить строкуdl1
    DCудалить # симвdch
    ICвставить # пробеловich
    DLудалить # строкdl
    ALдобавить # пустых строкil
    rpповторить строку # # разrep
    РОЛЛИНГ
    csустановить роллируемую область # строки от # до #csr
    sfроллировать текст вверхind
    srроллировать текст внизri
    SFроллинг вперед на # строкindn
    SRроллинг вниз на # строк rin
    ЗВОНОК
    ucподчеркнуть символuc
    blзвонокbel
    vbвидимый звонокflash
    ДВИЖЕНИЕ КУРСОРА
    chустановить горизонтальную позициюchts
    cvабсолютная вертикальная позиция # vpa
    cm позиционировать курсор #стр #столбcup
    CMотносительное позиционир курсора в памятиmrcup
    LEкурсор влево на # позицийcub
    RIкурсор вправо на # позицийcuf
    DOкурсор вниз на # строкcud
    UPкурсор вверх на # строкcuu
    sc запомнить позицию курсораsc
    rc восстановить позицию курсораrc
    hoв начало экрана (если нет ti (cap))home
    llпосл.строка, первый столбец,(если нет cap)ll
    nlперейти на новую строку (если не \n)
    bc шаг назад
    leкурсор влевоcub1
    doкурсор внизcud1
    ndкурсор вправоcuf1
    upкурсор вверхcuu1
    huНа полстроки вверхhu
    hdна полстроки внизhd
    crвернуть кареткуcr
    nwвозврат каретки и переход к новой строкеnel
    ТАБУЛЯЦИЯ
    stустановить остановку по табуляцииhts
    ctсбросить все позиции табуляцииtbc
    btобратная табуляцияcbt
    taтабулировать на след позицю аппаратного табулятораht
    STATUSLINE
    dsубрать statuslinedsl
    tsвойти в statusline, в столбец #tsl
    fsвернуться из statuslinefsl
    ПРИНТЕР
    psраспечатать экранmc0
    ff(*) распечатать экран ejectff
    pOпереключить на принтер # символовmc5p
    poвключить принтерmc5
    pfвыключить принтерmc4
    РЕЖИМЫ ПЕРЕДАЧИ
    mmв "meta" режим (8 й бит)smm
    moконец "meta" режимаrmm
    ksв режим "keypad-transmit"smkx
    keконец режима "keypad-transmit"rmkx
    cAEnable alternate_ char set
    SAStart alternate_ char setsmam
    АВТОМАТИЧЕСКИЕ ГРАНИЦЫ
    MCочистить левые и правые soft границыmgc
    RAвыключить автоматические границы
    MLустановить программную левую границуsmgl
    MRустановить программную правую границуsmgr
    wiтекущее окно в позициях #1 - 4wind
    Xonoff протокол
    SXTurn on xon/xoff handshakingsmxon
    RXTurn off xon/xoff handshakingrmxon
    XFX-off символxoffc
    XNX-on символxonc
    ПРОГРАММИРОВАНИЕ
    LFвыключить программируемые меткиrmln
    LOвключить программируемые меткиsmln
    pkпрограммировать фклавишу # в строку #pfkey
    plпрограммировать фклавишу # в выполнение строки #pfloc
    pxпрограммировать фклав # в xmit строки #pfx
    pnпрогр метку # показать стр #pln
    КОМАНДЫ НЕОПОЗНАНЫ
    eA
    cA
    rPlp в режиме заменыrmp
    CCTerm. settable cmd char in prototypecmdch
    ipзаполнители, вставляемые после ins-charip
    pcсимвол-заполнитель (если не \0)pad
    RFпослать следующий введенный символ (для ptys)rfi
    КЛЮЧИ
    kb =\bключ BACKSPACE (забой)kbs
    khключ HOMEkhome
    kuключ стрелка вверхkcuu1
    krключ стрелка вправоkcuf1
    klключ стрелка влевоkcub1
    kdключ стрелка внизkcud1
    КЛЮЧИ ДОПОЛНИТЕЛЬНОЙ КЛАВИАТУРЫ
    K1лев.верхн C1ka1
    K2центр Homekb2
    K3прав.верхн C2ka3
    K4лев.нижн. C3kc1
    K5прав.нижн. C4kc3
    ko=nd,upдоп.функц. клавиши, сверх {0-9},{.},{-} (см kn#)
    КЛЮЧИ ФУНКЦИОНАЛЬНЫХ КЛАВИШ
    k0F1kf0
    k1F2kf1
    . . . и т.д.
    k9F10kf9
    kAF11kil1
    kBF12kcbt
    kCF13kclr
    kDF14kdch1
    kEF15kel
    k;ключ f10km
    F1ключ f11kf11
    F2ключ f12kf13
    . . . и т.д.
    F9ключ f19kf19
    FA ключ f20kf21
    . . . и т.д.
    FZключ f45kf45
    Faключ f46kf46
    . . . и т.д.
    Frключ f63kf63
    l1f1 если на ней написано не f1lf1
    l2f2 если на ней написано не f2lf2
    . . . и т.д.
    l7lf7
    laf10 если нет f10lf10
    kaключ CLEAR_ALL_TABSktbc
    ktключ CLEAR_TABkctab
    @0ключ FIND
    @1ключ BEGINING
    @2ключ CANCEL
    @3ключ CLOSE
    @4ключ CMD
    @5ключ COPY
    @6ключ CREATE
    @7ключ END
    @8ключ ENTER/SEND
    @9ключ EXIT
    kLключ DELETE_LINEkdl1
    kDключ DELETE_CHARkdch1
    kMключ smlr или rmrl в режиме вставкиkrmir
    ключ END_OF_LINE
    kSключ CLEAR_TO_END_OF_SCREENked
    kHHOME_DOWNkll
    kN NEXT_PAGEknp
    kPPREVIOUS_PAGEkpp
    kFSCROLL_FORWARD/DOWN kind
    kRSCROLL_BACKWARD/UPkri
    kT ключ SET TABkhts
    %1HELP
    %2MARK
    %3MESSAGE
    %4MOVE
    %5NEXT_OBJECT
    %6OPEN
    %7OPTIONS
    %8PREVIOUS_OBJECT
    %9PRINT
    %0REDO
    &1REFERENCE
    &2REFRESH
    &3REPLACE
    &4RESTART
    &5RESUME
    &6SAVE
    &7SUSPEND
    &8UNDO
    &9SHIFT_BEGIN
    &0SHIFT_CANCEL
    *1SHIFT_COMMAND
    *2SHIFT_COPY
    *3SHIFT_CREATE
    *4SHIFT_DELETE
    *5SHIFT_DEL_LINE
    *6SHIFT_SELECT
    *7SHIFT_END
    *8SHIFT_CLEAR_LINE
    *9SHIFT_EXIT
    *0SHIFT_FIND
    #1SHIFT_HELP
    #2SHIFT_HOME
    #3SHIFT_INPUT
    #4SHIFT_LEFT_ARROW
    #5SHIFT_MESSAGE
    %aSHIFT...
    . . . и т.д.
    %jSHIFT_RESUME
    !1SHIFT_SAVE
    !2SHIFT_SUSPEND
    !3SHIFT_UNDO


    Copyright © CIT

    КАК УСТРОЕНА СИСТЕМА ПЕЧАТИ?

    (описана система печати в System V)

    Печатать, конечно, можно и так: cat file > /dev/lp. Но в многопользовательской системе такой фокус не всегда пройдет. Поэтому печатаемый файл ставят в очередь на печать.

    Имеем принтер. У принтера есть ИМЯ_ПРИНТЕРА. ПОРТ_ПРИНТЕРА - специальный файл в который надо выталкивать данные для печати. ИНТЕРФЕЙСНАЯ_ПРОГРАММА - программа, которая как раз и будет этим заниматься.

    Если у нас нормально сконфигурирована система печати, то печататься можно так:
    lp -d имя_принтера file

    или, если мы хотим напечатать на "default" принтере
    cat file | lp

    lpstat Посмотреть в каком состоянии очередь печати
    cancel [идентификатор_запроса ...] [принтер ...] Срубить запрос на печать

    lp просто складывает файл в SPOOL КАТАЛОГ. ДЕМОН ПЕЧАТИ lpshed обнаруживает вновь поступивший файл, ставит его в очередь на печать, и, когда очередь доходит, запускает наконец ИНТЕРФЕЙСНУЮ ПРОГРАММУ, вход которой берется из печатаемого файла, а ее вывод перенаправляется на ПОРТ_ПРИНТЕРА.

    Подключить к системе новый принтер.

        lpadmin -p LJ_printer -i /usr/bin/lj_print  -v /dev/lpt2
    
    или
        lpadmin -p Nash_Nowyj_Printer -m standard -v /dev/contty
        enable  Nash_Nowyj_Printer
        accept  Nash_Nowyj_Printer
    
    • accept - позволяет ставить в очередь печать на этом принтере
    • enable - разрешает печатать стоящие в очереди задания
    • -p Имя_Нового_Принтера
    • -v ПОРТ_ПРИНТЕРА
    • -i ИНТЕРФЕЙСНАЯ_ПРОГРАММА - маршрутное имя программы, которая печатает
      или
    • -m МОДЕЛЬ_ПРОГРАММЫ - имя "модели" такой программы, лежащей в каталоге /usr/lib/lp/model

      Вместе с системой накопления вывода на принтеры поставляются образцы интерфейсных программ. Они представляют собой shell-процедуры, обеспечивающие связь между планировщиком lpshed и устройствами. Образцы хранятся в каталоге /usr/lib/lp/model и доступны lpadmin с опцией -m

    Примеры:

    lpadmin -pstar1 -cstars -estar -v/dev/xpit0
    lpadmin -pstar1 -cstars -i/udd/print/inter -v/dev/xpit0
    lpadmin -pstar1 -cstars -mdumb -v/dev/xpit0
    lpadmin -xstar1              #Ликвидировать принтер star1
    /usr/lib/lp/interface        #Каталог интерфейсных программ
    /usr/lib/lp/model            #Образцы интерфейсных программ
    

    [Назад] [Содержание] [Вперед]


    Copyright © CIT

    Графическая оболочка X-Windows System

    Для начала немного истории и общих мест. Представим, что нам нужно написать программу, которая будет работать в графическом режиме. Нам потребуется: опрашивать клавиатуру, снимать события и координаты мыши, рисовать на экране, ... Как это делалось на MS-DOSе? Очень просто. Пишем одну большую программу, в ней - все: и логика, и обработка событий, и слежение за перемещениями мыши, ну, а когда требуется что-то нарисовать, мы даем команду на запись в порты EGA контроллера, рисуем пиксель... Через год появляется контроллер VGA, еще через год SVGA 800x600, 16 цветов, вслед за ним UVGA 1024x768, 256 цветов, затем XGA 1280x1024, 16Мб цветов...

    Основная идея X Windows.

    Имеем две независимых программы. Одна умеет рисовать на графическом мониторе, и вообще, обслуживать все это железо. Она называется X-сервер. Вторая программа - называем ее клиент X Windows, рисовать физически не умеет. Зато она знает, что именно надо рисовать, и умеет командовать. Команды типа: "нарисовать прямоугольник", "провести линию", "открыть окно", "вывести символ в заданном фонте", "опросить координаты мыши", и т.п. передаются X-серверу, а тот их исполняет - рисует. Формат и спецификации этих команд опубликованы, стандартизованы, и широко известны. Все вместе они называются "Протокол X Windows".

    Итак, повторим.

    X-сервер. Программа, которая написана специально под конкретное физическое устройство (имеется в виду - монитор, графконтроллер, мышь и клавиатура), умеет на нем рисовать, и умеет понимать команды рисования по протоколу X Windows System.

    X-клиент. Прикладная программа, обеспечивающая графический интерфейс с пользователем. Команды для рисования на экране передает X серверу по протоколу X Windows System.

    X-терминал. Ящик (монитор, графконтроллер, мышь, клавиатура, ну и, естественно, процессор и оперативная память), на котором запущена программа X-сервер. X-терминалом может служить самая обыкновенная графическая Unix-рабочая станция, на которой X сервер выполняется, как одна из многих прикладных задач. Специализированный X-terminal - ящик, на котором запускается только X сервер, и ничего кроме. Можно использовать PC под MS-DOSом, на котором запущена DOSовская программа, реализующая X сервер.

    Xlib - библиотека C-ишных функций, реализующих протокол X Windows System. С помощью этой библиотеки можно писать графические программы - X-клиенты.

    Что мы с этого имеем.

    Мы получаем универсальный GAPI - (Graphical Application Programming Interface) - средство программирования графических приложений. Пользовательские графические программы при этом полностью отвязаны от железа, от конкретного графконтроллера. О железе пусть беспокоится X-сервер.

    Протокол X Windows умеет "ездить" по сети: например по TCP/IP, или по DEC-net. Поэтому Xсервер может крутиться на одной машине, а X-клиент - на другой. То есть, картинка рисуется на одной машине, а программа, которая ее обеспечивает - крутится на другой.

    X-сервер способен обслуживать сразу много клиентов, причем всех - одновременно. На нашем графическом экране может быть открыто сразу много окон - каждое окно порождается его собственным X клиентом. Клиенты эти могут быть запущены и на нашей машине (к которой подключена графическая подсистема), и на удаленных машинах, соединенных с нами по сети.

    Чего нам это стоит.

    Понятно чего. Ресурсов. X Windows очень любит ресурсы - память, процессор, диск. Способен съесть их в неограниченных количествах. А еще ведь надо программировать. (К счастью, не всем надо). Кто видел, как выглядят программы для MS Windows или Mac, может представить себе внешний вид исходных текстов X-овой программы.

    Как это запускается.

    Пусть в нашей сети есть машина с графической подсистемой и X сервером, и сетевой адрес этой машины pcat107.foms.msk.ru
    на pcat107 нужно выполнить команду:

        xhost +    # разрешить X-овым программам с ЛЮБОЙ машины
                   # рисовать на экране машины pcat107
    

    Запускаем на нашем компьютере X-овую программу, так, чтобы ее окошко рисовалось на мониторе pcat107. Для этого на нашем компьютере нужно выполнить команду:

        xterm -display pcat107:0.0 &
    

    Библиотеки, Motif, и война круглых и квадратных кнопок.

    Можно писать X-овые программы, используя библиотеку Xlib. Многие так и пишут, хотя это весьма тяжело - уж больно невысок уровень Xlib'а. В помощь программистам было создано несколько toolkit'ов - библиотек более высокого уровня, в которых реализованы различные widget'ы. Widget - непереводимый термин X Windows. Склеен из двух слов - Window и Gadget (приспособление), является графическим объектом с привязанными к нему свойствами и реакциями на действия пользователя. Примеры widgetow: "кнопка", "менюшка", "окошко с текстом", "линейка прокрутки",...

    Известны следующие toolkit'ы:
    Xaw- Anthena Widgets. Очень черно-белый, очень плоский, весьма небогатый. Зато - бесплатный. Посмотрите, как выглядят программы xterm, xedit, xman. Они сделаны на Xaw.
    xview - Набор библиотек и объектов, использованных в реализации набора пользовательских утилит Sun-овской версии X Windows - "Open Windows". Весьма симпатично. Круглые кнопки, "шприцы-иголки" (замечательная вещь!), очень хорошо продуманный интерфейс пользователя, в том числе активно используемая трех-кнопочная мышь. Исходные тексты библиотек xview открыты, предоставляются бесплатно. Однако набор DeskSet - 15 пользовательских утилит входящих в OpenWindows, сделанный на библиотеке xview, SunSoft готов предоставить только за плату. В бинарном виде - весьма дешево ($100). В исходных текстах - весьма дорого ($200K)
    Motif - Библиотека поставляются организацией OSF за не совсем маленькую плату. Исходные тексты библиотек недоступны, либо чрезмерно дороги. Кнопки - квадратные, да и вообще Motif'овские приложения до безобразия напоминают MS Windows (что, IMHO, является серьезным преступлением)

    В борьбе BSD и Unix V победил, как известно, System V, а в войне круглых и квадратных кнопок выиграл Motif.

    Конфигурирование X Windows

    В Linux используется X11 в реализации XFree86. Чтобы его сконфигурировать, выполните команду xf86config

    Запуск X Windows.

    На некоторых машинах он сам запускается. А также иногда удается запустить его вручную командами: startx и/или openwin

    Solaris:

    1. Установите переменные окружения:
      OPENWINHOME=/usr/openwin                 export OPENWINHOME
      LD_LIBRARY_PATH=/usr/openwin/lib         export LD_LIBRARY_PATH
      PATH=/usr/openwin/bin:$PATH              export PATH
      XAPPLERESDIR=/usr/openwin/lib/app-defaults export XAPPLERESDIR
      
    2. Запустите X Windows командой

      openwin

    "Нормальные" Unix'ы:

    1. Установите переменные окружения:
      PATH=/usr/bin/X11:$PATH
      XAPPLERESDIR=/usr/lib/X11/app-defaults
      
    2. Запустите X Windows командой

      startx

    "Ненормальные" Unix'ы (Unixware).

    Когда регистрируете пользователя, ответьте Yes на вопрос "Хотите графический DeskTop". Тогда после login'а X Windows будет запускаться автоматически. Если вы прозевали, и ответили No, то никаким осмысленным способом запустить X Windows для себя вам не удастся.

    Настройки пользовательского окружения X Windows

    При наличии пользовательских настроечных файлов, лежащих в домашнем каталоге пользователя, используются они. Если их нет, используются стандартные, общественные, обычно лежащие в каталоге /usr/lib/X11 или /usr/openwin/lib

    Персональные и общественные пользовательские настройки хранятся в файлах:

      $HOME/.Xdefaults
      $HOME/.OWdefaults
      /usr/lib/X11/Xdefaults
      /usr/openwin/lib/Xdefaults
      /usr/openwin/lib/app-defaults/*
    
    Окружение (desktop) - т.е. программы, которые стартуют автоматически при запуске X Windows находится в файлах:

    Solaris:

      $HOME/.openwin-init
      /usr/openwin/lib/openwin-init
    

    "Нормальнные" X windows:

      $HOME/.xinitrc
      /usr/lib/X11/xinit/xinitrc
    

    Настройки window-manager'a - т.е. - поведение окон, менюшки пользователя, раскладка команд на клавиши мышки, ...

    Solaris:

      $HOME/.openwin-menu
      $HOME/.openwin-menu-*
      /usr/openwin/lib/openwin-menu
      /usr/openwin/lib/openwin-menu-*
    

    Linux

      $HOME/.fvwmrc
      /usr/lib/X11/fvwm/system.fvwmrc
    

    [Назад] [Содержание] [Вперед]


    Copyright © CIT

    UUCP - Unix to Unix Copy

    Система пересылки файлов по телефону.

    Если uucp правильно сконфигурирована, то ее использование выглядит примерно так:

    uucp -r moj_fajl 'pulsar!fajl_tam'

    перешлет moj_fajl на удаленную машину pulsar. Хотя, скорее всего не сделает, из-за ограничений на права доступа. А, впрочем, такая команда скорее всего сработает:

    uucp -r moj_fajl 'pulsar!~'

    через некоторое время этот файл вы сможете обнаружить на машине pulsar в каталоге

    /usr/spool/uucppublic

    в этот каталог разрешено копирование с удаленных машин, для него используется специальное обозначение: "~"

    Пусть вас не удивляет, что в команде uucp использовались одинарные кавычки. Они нужны, чтобы заэкранировать "!" и "~" от вашего командного интерпретатора ksh или bash. Ключ -r в команде uucp нужен, чтобы НЕ ЗАСТАВЛЯТЬ нашу машину немедленно начинать звонить на pulsar. Она сама позвонит, в предусмотренное для этого время.

    uucp поддерживается на двух уровнях:

    1. Пользовательский. Это команды uucp - постановка файла в очередь на удаленную пересылку, и uux - постановка в очередь на пересылку удаленной команды.
    2. Системный. Периодически, автоматически запускается демон uucico - (UUCP Copy in Copy out). Он созванивается с удаленными машинами по телефону. На удаленной машине также запускается "встречный" демон uucico. Наш демон "проталкивает" на удаленную машину все файлы, которые к этому времени накопились в очереди на отправку туда. После этого он "принимает" файлы, которые приготовила для нас удаленная машина (их к нам проталкивает "встречный" демон uucico, а наш принимает). После этого сеанс uucico заканчивается. А пользователи обнаруживают, что у них возникли новые файлы.

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

    Конфигурация нашей машины как UUCP клиента.

    После этого наша машина сможет звонить на удаленные машины и посылать/забирать оттуда файлы. Для этого мы должны задать:

    1. Наше собственное UUCP имя.
    2. Имя(имена) удаленной(ых) UUCP системы.
    3. Телефонный номер(а), по которому нужно туда звонить.
    4. Login и пароль, которые выделены там для нашего uucp-account'а.
    5. Порт, к которому подключен наш модем.
    6. Наборщик - описание "AT" команд для управления нашим модемом.

    Эти данные задаются в нескольких конфигурационных файлах, которые должны лежать в каталоге /etc/uucp (или /usr/lib/uucp , или /usr/lib/uucp/taylor_config ) (или в каком-нибудь другом, см. man uucp для более точной информации). Это файлы:

    Config          #   задает имя нашей машины (и многое другое) ;
    Systems         #   описывает удаленные uucp-системы: имя,  но-
                    #   мер телефона, uucp-logname, uucp-passwd ;
    Devices         #   порты, к которым подключены модемы.
    Dialers         #   описывает  модемы-наборщики (систему AT-ко-
                    #   манд).
    
    (А в Linux они называются: config, sys, port, dial)

    Итак, представим классический случай. У вас один Hayes-совместимый модем V32/V42bis на 14400 baud (GVC, ZyXEL, US-Robotics...), подключенный к последовательному порту /dev/modem (если у вас порт называется /dev/contty03, вам никто не мешает сделать символический линк ln -s /dev/contty03 /dev/modem не так ли ?). Имя вашего узла fedf-uru.

    ВНИМАНИЕ. На большинстве Unix-ов выделены раздельные специальные файлы для одного и того-же порта: терминальная линия (для подключения терминала или модема, НА который будут звонить - используется для getty или ttymon), и линия с модемным управлением, на выход - например, чтоб звонить НАРУЖУ модемом. Эти специальные файлы и называются по разному, например:

    SunOS:   /dev/ttyy01   IN, /dev/ttyz01  OUT
    Linux:   /dev/ttyS1    IN, /dev/cua1    OUT
    ISC:     /dev/ttyFD01  IN, /dev/ttyFM01 OUT
    SVR4/88: /dev/contty00 IN, /dev/??????? OUT
    

    На самом деле все не совсем так. Цитирую Linux-Serial-HOWTO:

    > There has been some discussion  on  the  merits of /dev/mouse
    > and /dev/modem. I strongly discourage the use of these links.
    > In particular,  if you are planning  on using your  modem for
    > dialin you will run into problems because the lock files will
    > not work correctly if  you  use /dev/modem. Also, Taylor UUCP
    > does not support symlinks either. 
    Однако uugetty позволяет корректно отрабатывать эту ситуацию. См. параметр ALTLOCK в /etc/defaults/getty файле.

    Вам надо подключиться к двум uucp-узлам:

    1. Узел Релком, имя узла kiae, телефоны: 9469984, 9469994. Вы зарегистрированы там под именем/паролем uufedurp/ABCd8
    2. Ваше московское отделение, имя узла fedfond, телефон 095- 125-7623. Вы зарегистрированы там под именем/паролем uufedurp/KLmn10
    В каталоге /etc/uucp редактируем файлы Systems, Devices, Dialers

    Systems: Удаленные машины


    kiae Any modem1 19200 946-9984 "" \n\r\d\r\d\r ogin:-BREAK-ogin:
                                       uufedurp ssword: ABCd8
    fedfond Any modem1 19200 8w095-125-7623 "" \n\r ogin:-BREAK-ogin:
                                       uufedurp ssword: KLmn10
    

    Devices: Описание портов


    modem1 contty03 - 19200 gvc1440
    

    Dialers: Команды модемов


    gvc1440 =,-, "" \M\dATZ\r\c OK\r \EATDP\T\r\c CONNECT \m\c
    

    А дальше идет описание Taylor-uucp. Проблема в том, что в стандартной поставке SVR4/88 _нет_ Taylor-uucp, а есть только т.н. HoneyDanBer-uucp, он же BNU (Basic Networking Utilities). Taylor новее и гибче, к тому же поддерживает два формата конфигурационных файлов - традиционный (Config, Systems, Devices, Dialers, ...) и свой (config, sys, port, dial, ...). Есть конвертер туда-обратно. В Linuxе Taylor-uucp скомпилирован так, чтобы сначала искать Taylor-конфигурацию в /usr/lib/uucp/taylor_config/, если там ничего нет - искать HDB-конфигурацию в /usr/lib/uucp/hdb_config/. IMHO главный изъян HDB - невозможность указывать альтернативные номера телефонов.

    Если вы используете не устаревший BNU-uucp, а Taylor-uucp 1.05: В каталоге /usr/lib/uucp/taylor_config создаем файлы config, sys, port, dial следующего содержания:

    config:


     
    hostname     fedf-uru        #  Наше собственное имя
    

    sys: Удаленные машины


    system kiae          # Узел Релком ############################
    time Any
    port  modem1         # Имя описания порта в файле port
    speed 38400
    chat  "" \r\d ogin:-BREAK-ogin: uufedurp ssword: ABCd8
    phone 946-9984
    alternate            # Второй телефонный номер.
    phone  946-9994
    system fedfond       # Московское отделение ##################
    time Any
    port  modem1         # Имя описания порта в файле port
    speed 38400
    chat  "" \n\r ogin:-BREAK-ogin: uufedurp ssword: KLmn10
    phone 8=095-125-7623
    

    port: Описание портов


    port    modem1       # Обозначение порта  из файла   sys
    type    modem
    device  /dev/modem
    speed   38400
    dialer  gvc1440      # Имя наборщика-модема в файле  dial
    

    dial: Команды модемов


    dialer     gvc1440   # Обозначение наборщика из файла  port
    # Строка инициализации модема.
    # Вместо \T будет подставлен телефонный номер
    chat       "" ATZ OK ATH0E0Q0 OK ATDP\T CONNECT
    # ATZ - загрузить profile 0
    # ATH0 - повесить трубку
    # ATE0 - no echo
    # ATQ0 - выводить код возврата
    chat-fail  BUSY                # Воспринимать как ошибку набора
    chat-fail  ERROR
    chat-fail  NO\sCARRIER
    chat-fail  NO\sDIALTONE
    

    Все. Клиентская часть UUCP сконфигурирована. Теперь, чтобы "протолкнуть" посланные файлы, достаточно периодически выполнять команды:

    uucico -s kiae
    uucico -s fedfond
    

    А еще лучше, добавить эти команды в crontab, чтобы они выполнялись автоматически, по несколько раз в сутки.

    Конфигурирование UUCP с использованием sysadm.

    Все вышеперечисленные настройки можно сделать, используя утилиту системного администратора sysadm. Надо войти в меню network_services / basic_network

    Конфигурирование серверной части UUCP.

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

    1. Иметь описание звонящей нам uucp-системы в файле Systems - для клиента такое же, как и для сервера.
    2. Проверить права доступа для клиента в файле Permitions
    3. Завести для него специальный uucp-login
    4. Убедиться, что модем стоит в "Auto-answer" режиме, и на порт /dev/modem запущена программа getty (или ttymon), позволяющая логиниться по телефону на порт /dev/modem
    1. Описание добавляется в файл Systems, (номер телефона и название порта не обязательны), если мы сами не собираемся туда звонить, но я бы посоветовал их вписать, для единообразия.
    2. В файле /etc/passwd завести строчку вида:

      uupetrov:x:1002:14:UU Petrov:/var/spool/uucp:/usr/lib/uucp/uucico

      выполнить команды:

      pwconv
      passwd uupetrov
      
    3. Любой терминальной программой "войти" в модемный порт и выполнить команды
      atz0         # Загрузить пользовательский profile 0
      ats0=1       # Регистр0=1 - снимать трубку после 1-го звонка
      at&w0        # Сохранить текущий setup в profile 0
      at&y0        # Чтобы при включении питания загружался профайл 0
      # at&f       # загрузить заводские установки, если вы запутались
                   # с профайлами, можно сделать модему "reset"
      

      Ввиду отсутствия коммуникационных программ в SVR4 (за исключением сумасшедшего "cu"), используйте "echo".

           echo atz0   > /dev/modem
           echo ats0=0 > /dev/modem
           echo at&w0  > /dev/modem         # и так далее
      
      А еще лучше gold, там есть режим прямой связи с любым портом.
    4. В файле /etc/inittab иметь строчку вида:

      c3:234:respawn:/usr/lib/saf/ttymon -g -d /dev/modem -l contty

    Что где лежит в системе UUCP.

    • /usr/bin/uucp - переслать файлы с/на удаленную uucp-систему
    • /usr/bin/uux - выполнить команду на удаленной uucp-системе
    • /usr/bin/uustat - статистика по выполненным пересылкам
    • /usr/lib/uucp/uu* - системные утилиты UUCP
    • /etc/uucp - каталог конфигурационных файлов UUCP
    • /usr/lib/uucp/taylor_config - конфигурация UUCP в Linux
    • /usr/lib/uucp/ - конфигурация UUCP в других системах
    • /var/spool/uucppublic - каталог в который можно пересылать файлы с удаленных машин
    • /usr/spool/mqueue - очереди отправляемой электронной почты
    • /usr/ucblib/mqueue - или здесь эта очередь ?
    • /var/spool/uucp/"машина" - очередь файлов на отправку на "машину"
    • /var/spool/uucp/.Log - статистика о работе uucp

    Осталось настроить нашу электронную почту.

    Если у вас самый простейший случай: вся ваша почта проходит через один "знающий" host, с которым вы соединены по uucp, то надо в файле /etc/sendmail.cf иметь такую строку:

    . . .
    # "Smart" relay host (may be null)
    DSuucp-dom:kiae
    . . .
    

    В этом случае вся ваша внешняя почта (т.е. отправляемая за пределы вашей локальной сети) будет переправляться по uucp на uucp-узел "kiae" и дальнейшей ее доставкой будет озабочен именно kiae. Предполагается, что он успешно справится с этой задачей.

    А еще чтобы было описание uucp-dom (ниже в том же файле). Кстати, чтобы всех окончательно запутать, sendmail.cf лежит вовсе не в /etc/, а в /usr/ucblib/.

    Если у вас какой-либо другой случай - то это - тяжелый случай. Дерзайте, успехов вам!

    # И надо сделать, чтоб сендмаил не отрезал 8-й бит у посылаемой почты
    # Если sendmail8.x.x, то в sendmail.cf:
    # strip message body to 7 bits on input?
    O7False
    # А еще бывает, что sendmail не знает, как правильно называется
    # наша машина. Тогда мы пишем что-то в таком стиле:
    Cwsystud.ras.ru
    Cwserver.systud.ras.ru
    Cwlocalhost
    

    Проверка работоспособности и отладка конфигурации.

    Для начала проверим, правильно ли подсоединен модем. Запускаем программу cu - эмулятор терминала.

       cu -l /dev/modem    # Или как там у вас этот порт называется
    
    После этого вы переключитесь на работу со своим модемным портом. Все, что вы будете набирать с клавиатуры, будет перенаправляться в порт /dev/modem , все, что "приходит" с этого порта, будет рисоваться на вашем терминале. Попробуйте модемом набрать телефонный номер
       atdp100
    
    Проверьте, правильно ли сконфигурирован "порт" модема и описание системы в файле Systems.
       cu pulsar
    
    Проверьте права доступа к файлам /dev/modem, /dev/contty*. Должно быть (???):
     crw-rw----   1 root     uucp       ...         /dev/contty0
     crw-rw----   1 root     uucp       ...         /dev/modem
    
    Запустите uucico с максимальным уровнем выдачи отладочной информации. Запускать надо из под пользователя uucp
       /usr/lib/uucp/uucico -r1 -x9 -f -s pulsar
       /usr/lib/uucp/uucico -x all -f -s kiae
    
    А затем посмотрите на содержание файлов со статистикой uucp в каталоге /var/spool/uucp :
       .Admin/audit.local
       .Log/
       .Status/
       ERRLOG
       LOGFILE
       SYSLOG
    
    Например, такой командой
       tail -f /var/uucp/.Admin/audit.local &
       tail -f /var/uucp/.Log/uucico/kiae
    

    По результатам переписки.

      Dmitry Mayorov Compulsory Health Insurance Fund
      Phone: +7 (812) 112-3517                  St. Petersburg, Russia
      > Навешал фильтров на sendmail, rmail,
      > а вот это непонятно. Или они научились все из кои8 в исо переворачивать на лету ?
      Нет, конечно,  потребовалось  лечить.  Дело сильно упростило то
      обстоятельство, что  внутри  сети везде ISO. Перекодировать по-
      этому мне надо только то, что идет через UUCP, то  бишь наружу.
      Для этого пришлось:
      1. Поправить sendmail.cf:
      # RelCom UUCP - with ISO 8859-5 to KOI-8 translation
      Muucp-koi, P=/usr/local/bin/_uux, F=mDFMhu, S=52/31, R=21, M=100000,
                         ^^^^^^^^^^^^^^^^^^^ мой, см. ниже
                 A=_uux - -r -a$f -gC $h!rmail ($u)
      2. Сделать /usr/local/bin/_uux из трех строк:
      #!/bin/sh
      PATH=:/usr/bin:/usr/local/bin:/usr/ucb:/bin:
      /usr/local/bin/iso-koi | /usr/bin/uux $*
      (iso-koi - понятно какой фильтр)
      Это все, на самом деле, весьма грязный hack - вряд ли стоит его
      включать в учебник. Оно, конечно,  работает,  но  вот  надо  по
      крайней  мере еще и правильный код возврата как-то обеспечить -
      с проверкой ошибок и прочими фенечками.
           Чтобы принимаемая почта из KOI превращалась в ISO, достаточно:
      1. Переименовать rmail в /usr/local/bin/__rmail;
      2. Сделать свой rmail, тоже из трех строчек:
      #!/bin/sh
      PATH=:/usr/bin:/usr/local/bin:/usr/ucb:/bin:
      /usr/local/bin/koi-iso | /usr/local/bin/__rmail $*
      Вышеуказанную экзекуцию  надо производить именно над rmail, по-
      тому что rbmail проверяет контрольные суммы.
      А вот rbmail в SVR4/88 совсем нет. Надо искать исходники, собирать...
      А RelCom (по крайней мере  мой  провайдер)  именно  его пользует. 
      Это  третья  причина  (после отсутствия Taylor-uucp и удобного 
      Mail-user агентa),  по которой  я  не  стал  поднимать
      uucp/e-mail на Motorolе.
      --
      Dmitry Mayorov Compulsory Health Insurance Fund
      Phone: +7 (812) 112-3517                 St. Petersburg, Russia
      

    [Назад] [Содержание] [Вперед]


    Copyright © CIT

    Модемы и Motorola (практические рекомендации)

    предполагается, что читатель знаком с администрированием
    в Unix и имеет доступ к справочным материалам, ибо
    в данном руководстве описывается общий ПУТЬ настройки,
    но не дается объяснений почему делается именно так.

    1. Подключение модема к Мотороле 922 (плата в/в MVME 197) берется ТЕРМИНАЛЬНЫЙ КАБЕЛЬ из КОМПЛЕКТА Моторолы (RJ-45 <-> RJ-45 - ОБРАЩЕННЫЙ, 4 скрученные пары) один разъем вставляться в последовательный порт MVME197 (например, SP4/UPS), второй в гнездо RJ-45, распаянное под DB25 (обычное гнездо внешнего модема)
      RJ-45 DB25
      1 DTR 20
      2 CTS 5
      3 Signal Ground 7
      4 RxD 3
      5 TxD 2
      6 Ground 7
      7 RTS 4
      8 CD 8
    2. Подключение модема к персоналке.
      см. руководство по подключению модема
    3. Именование портов в Unix System V/88 4.0
      • SP2/TEL /dev/contty01
      • SP3 /dev/contty02
      • SP4/UPS /dev/contty03
    4. Создание метки описания терминальной линии в /etc/ttydefs
      38400mdm:38400 -clocal hupcl onlcr -igncr icrnl erase ^h:
      38400 -clocal hupcl onlcr -igncr icrnl erase ^h tab3 -istrip echoe::38400mdm
    5. Управление последовательными портами в Unix System V 4.0 (в режиме суперпользователя)
      • pmadm -l -t ttymon не должен выдавать строки относящиеся к выбранному Вами порту
      • если такие строки присутствуют, то удалите этот сервис:
        pmadm -r -p <имя монитора> -s <имя сервиса>
      • добавьте обслуживание данного порта
      • если не было ни одного терминального монитора, то добавьте его:
        sacadm -a -p ttymonbnu -t ttymon -c /usr/lib/saf/ttymon -v `ttyadm -V`
      • добавьте терминальный сервис для исходящих звонков:
        pmadm -a -p ttymonbnu -s tty02 -i root -f u -v `ttyadm -V` -m "`ttyadm -b -p login: -d /dev/contty02 -l 38400mdm -s /usr/bin/login`"
      • добавьте терминальный сервис для входящих звонков (другой порт!):
        pmadm -a -p ttymonbnu -s tty03 -i root -f u -v `ttyadm -V` -m "`ttyadm -p login: -d /dev/contty03 -l 38400mdm -s /usr/bin/login`"
      • если в Вашем /etc/inittab указан respawn для порта contty02 (contty03), то отключите его (поставьте off и выполните команду init q)
    6. Конфигурация UUPC/Relcom для связи с региональным фондом запускаете программу INSTALL (диалог для версии 2.19)
      • если у Вас установлен русификатор экрана, то укажите русский язык
      • цветной дисплей или черно-белый
      • нажмите Enter
      • нажмите Enter
      • укажите "Нет"
      • введите имя Вашей организации (например, Тьмутараканьский региональный фонд)
      • введите полное имя Вашего домена (например, regfond1.tmutar.su)
      • вызываемая система (например, ttregfond)
      • локальная система (например, ttregfond13)
      • имя для входа (обязательно: nuucp)
      • пароль (обязательно: nuucp)
      • временная зона (например, MSK-8MSD)
      • сервер телеконференций (оставьте предлагаемое, все равно его нет)
      • телефоны, вызываемой системы (например, 8W093!1234567)
      • все правильно
      • не надо записывать
      • нажмите Enter
      • диск C, каталог \uupc
      • --- некоторое время расжимаются архивы ---
      • копировать документацию
      • копировать описания стандартов
      • количество модемов (например, 1)
      • номер порта (например, COM2)
      • выберите модем (не знаю, какой у Вас моде...)
      • нажмите Enter
      • не использовать FOSSIL драйвер
      • введите регистрационное имя локального пользователя(например, root)
      • введите Ваше имя, отчество и фамилию
      • введите имя домашнего каталога (например, C:\uupc\root)
      • язык, конечно, русский
      • имя любимого текстового редактора (у меня c:\me\me.exe)
      • не надо кодировки VOLAPJUK
      • нужны ли подтверждения о доставке почты (по вкусу)
      • хватит пока пользователей
      • нажмите Enter
      • имя ответственного за почту (у нас, конечно, root)
      • куда положить исполняемые файлы (например, C:\bin)
      • читаете введение и нажимаете Enter
      • Все! Это, конечно, самый простейший случай
      • Внимание: если у Вас модем ZyXel, то в файле \uupc\conf\dialers в строке zyxel-u1496 замените &S1 на &S0
        В файле \uupc\conf\systems перед словом word и в конце добавьте \n\c между \w15 и \c добавьте \n\d
    7. завести пользователей uucp и nuucp (обычно они уже есть)
      • uucp:x:5:5:0000-uucp(0000):/usr/lib/uucp
      • nuucp:x:10:10:0000uucp(0000):/var/spool/uucppublic:/usr/lib/uucp/uucico
      • не забудьте сказать:
        pwconv
      • задайте пароль для пользователя nuucp
        • passwd nuucp
        • New password: nuucp
        • Re-enter Password: nuucp
    8. Конфигурация UUPC в Unix V/88 4.0 для ожидания вызова (предполагаем, что uname -n установлена в ttregfond)
      • все работы производить под именем uucp:
        su uucp (из-под root)
      • в файле /etc/uucp/Permissions должна быть строка:
        LOGNAME=nuucp READ=/ MACHINE=ttregfond13 REQUEST=yes SENDFILES=yes
      • в файле /etc/uucp/Systems для каждой удаленной системы UUPC/Relcom должна быть строка:
        ttregfond13 Any ACU I38400 номер_телефона_PC
      • в файле /etc/uucp/Dialers:
        имя_модема =<символ ожидания гудка>-<символ паузы при наборе номера>
        \M\d+++\dATH\r\c OK ATZ\r\c OK\r \EATDP\T\r\c CONNECT \r\m\c
        (надеюсь, что всю необходимую настройку модема Вы занесли в профиль конф-и 0)
      • в файле /etc/uucp/Devices:
        ACU contty03,M - I38400 имя_модема
    9. Уберите из crontab для root вызовы uudemon.poll и uudemon.hour (uudemon.admin и uudemon.cleanup можно оставить)
    10. Опробуйте пересылку почты
      • в Unix выдайте команду
        mail root!ttregfond13
        test from Unix
        ^D
      • в UUPC/Relcom пошлите письмо по адресу root!ttregfond
      • в UUPC/Relcom выполните команду uupc

        UUPC/Relcom должен позвонить Unix-у, передать имя пользователя nuucp, пароль nuucp, после чего запустится uucico в MS-DOS и UNIX, они договорятся между собой, обменяются письмами и завершат сеанс связи. Теперь сказав mail в UNIX и bmail в MS-DOS Вы должны получить соответствующие письма.

    [Назад] [Содержание]


    Copyright © CIT

    Порт RS-232C

    Сперва несколько сокращений:

    • UART (Universal Asyncronous Receiver Transiver)
    • CRC (Cyclical Redundancy Check)
    • LCD (Luquid Cristal Display) - Жидкокристаллический дисплей
    • LED (Light Emitting Diode) - Светодиод
    • DTE (Data Terminal Equipment) - Компьютер, терминал
    • DCE (Data Communication Equipment) - Модем
    • Кабели: Модемный (прямой) - соединяет DTE с DCE (Host-модем)
    • Нуль-модемный (перевернутый) - соединяет DTE с DTE (Host-Host)

    Распай модемного кабеля.

    Стандартная PC имеет два последовательных порта RS-232C: COM1 - 9 pin папа, COM2 - 25 pin папа. Внешний модем имеет последовательный порт 25 мама. Для подключения модема используются два вида кабелей:

            Host/DTE(9мама)  >---> Модем/DCE(25папа)
            Host/DTE(25мама) >---> Модем/DCE(25папа)
                                   DB-25       DB-9
                                  12...5      123...13
                                   6..9        14..25
    
    мама
    DTE(Host)
    папа
    DCE(Модем)
    DB-25
    Signal
    DB9DB25
    18<---8CDCarrier Detect"Модем: соединен"
    23<---3RxDReceive Data
    32--->2TxDTransmit Data
    420--->20DTRDТЕ Ready"Host: включен"
    577Signal ground
    66<---6DSRData Set Ready"Модем: включен"
    74--->4RTSRequest To Send"Host: я готов"
    85<---5CTSClear To Send"Модем: я готов"
    922<---22RIRing Indicator"Модем: нам звонят"

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

    Распай нуль-модемного кабеля.

            Host/DTE(25мама) >---< Терминал/DCE(25мама)
            Host/DTE(9мама)  >---< Терминал/DCE(25мама)
    

    Идея 1: все "симметричные" сигналы перекидываем крест-накрест. TXD-RXD, DTR-(DSR,CD), CTS-RTS, GND-GND

    Идея 2: Готов/Готов замыкаем на самом порту, и экономим провод. Если достаточно обнаглеть, то нам хватит 3 проводов.

    Если длина шнура приличная (больше нескольких метров), настоятельно рекомендуется использовать 4 провода - 2 витые пары, по одному земляному проводу в каждой. Кроме того, экономия проводов приведет к тому, что не будет работать Hardware Flow Control (DTR/DSR), придется пользовать Software (XON/XOFF).

    Фактически: 2 провода TxD на RxD, и третий - сигнальная земля. Локально, на самом порту замыкаем RTS-CTS, DSR-DTR и все это на DCD/DTR.

    Альтернативная картинка урезанного нуль-модема

    Виды коннекторов

    • RJ-11 (4pin) 2-х проводной кабель для импортных телефонов;
    • RJ-8 (8pin) 2-х или 4-х проводная выделенная линия;
    • RJ-45 (8pin) витая пара(Ethernet twisted pair) и RS-232;

    Распай нуль-принтерного кабеля "Laplink".

    Распай кабеля под PLIP совпадает с тем, что используется широко известными коммуникационными программами pc-pc для MSDOS, и на- зывается "Laplink". 25папа <---> 25папа
    Pin NameConnectpin - pin
    GROUND25 - 25
    D0ERROR2 - 15
    ERRORD015 - 2
    D1SLCT3 - 13
    SLCTD113 - 3
    D2PAPOUT4 - 12
    PAPOUTD212 - 4
    D3ACK5 - 10
    ACKD310 - 5
    D4BUSY6 - 11
    BUSYD411 - 6
    D57*
    D68*
    D79*
    STROBE?1*
    FEED?14*
    INIT?16*
    SLCTIN?17*

    ЗАМЕЧАНИЕ: Пины, помеченные "*" не подключать.
    Etxra grounds are 18,19,20,21,22,23, and 24. If the cable you are using has a metallic shield, it should be connected to the metallic DB-25 shell at one end only.

    ВНИМАНИЕ: Говорят, что неправильно запаянный "Laplink" кабель может "сжечь" принтерный порт, и вообще весь контроллер ввода-вывода. Не может. Там только обычные TTL или CMOS входы/выходы, к тому же с ограничителями. Хотя кабеля все равно паять надо правильно.


    Copyright © CIT

    Как подключить русские фонты к компьютеру с X11

    1. Создаем каталог cyrfonts. Копируем туда файлы *.bdf
         mkdir cyrfonts
         cp *.bdf cyrfonts
      
    2. В каталоге с фонтами создаем оглавление фонтов для X-server'а : fonts.dir
         cd cyrfonts
         mkfontdir
      
    3. Указываем X-server'у, чтоб он брал фонты из нашего каталога
         xset +fp $HOME/cyfonts
         xset fp rehash
      
    4. Пользуемся русскими фонтами.
         xterm -fn koi9x15
         mailtool -fn koi6x10
      
      и т.д.

      Чтобы русские фонты включались и находились по умолчанию.

    5. До запуска X-Windows установить переменную окружения FONTPATH. Если у вас Bourne Shell /bin/sh или bash или ksh
      FONTPATH=$HOME/cyrfonts:         export FONTPATH
      
      Если судьба угораздила пользоваться C-Shell /bin/csh или tcsh
      setenv FONTPATH $HOME/cyrfonts:
      
    6. Или скопировать фонты в директорию со стандартными фонтами.
         cp *.bdf /usr/lib/X11/fonts/misc
         cd /usr/lib/X11/fonts/misc
         mkfontdir
         xset fp rehash
      
    7. Установить фонт по умолчанию в своем .Xdefaults файле. Добавить в файл .Xdefaults такие строчки:
      font.name:              koi9x15
      icon.font.name:         koi6x10
      XTerm*font:             koi6x10
      XTerm*VT100*font1:      koi6x10
      XTerm*VT100*font2:      koi8x13
      XTerm*VT100*font3:      misc16
      XTerm*VT100*font4:      misc24
      XTerm*VT100*font5:      demos8x14
      XTerm*VT100*font6:      demos8x16
      emacs.font:             koi9x15
      emacs.default_font:     koi9x15
      

    Если у вас SunOs 4.1.1 и, соответственно, NeWS

    Тогда вся вышеописанная процедура не сработает. У NeWS совершенно собственный формат фонтов.

    1. Преобразуем фонты в формат NeWS
      convertfont *.bdf
      
    2. Создаем оглавление для NeWS server'а
      bldfamily
      
    3. Подключаем фонты в точности, как в стандартном X11
      xset +fp `pwd`     # Дополняем каталог, подключаем фонты.
      xset  fp rehash    # Чтоб сервер перезачитал каталоги с фонтами
      
    4. все.

    Еще можно в файл Synonims.list воткнуть строчку с aliaсами. Иначе фонты будут браться только по имени файлов.

    Редактирование фонтов.

    Некоторые комплекты X-Windows имеют редактор фонтов. Он может называться xfed, fontedit, xfd. Если у вас такового нет, попробуйте найти исходники.

    xfed font.bdf
    convertfont -v font    получаем   font.vfp
    fontedit font.vfp
    
    затем convertfont -b ?? font.vfp и получаем font.ff

    ВСЕ. Далее повторить пункт первый.

    Подключение русской клавиатуры в X-Windows

    Достаньте файлы с раскладкой клавиатуры. (Их можно найти во многих местах, в частности здесь). Выполните команду

       xmodmap   файл-с-раскладкой.xmm
    
    Переключатель рус/лат - клавиша CapsLock Чтобы отключить русскую клавиатуру, выполните команду
       xmodmap   default.xmm
    

    Подключение русской клавиатуры в XFree86

     XF86Config:
     Section Keyboard
     LeftAlt      Meta
     AltGr        ModeShift
     Right_Ctl    ModeLock
     ScrollLock   ScrollLock
     EndSection
    

    Вешает переключатель на правый Ctrl, при этом еще и лампочка CapsLock будет загораться.

    Подключение русской клавиатуры в OpenWindows на SUN

    Возьмите файл с раскладкой для SUNа , поместите в своем домашнем каталоге под именем .keytable и запустите openwin. Переключатель рус/лат - клавиша правый AltGraph

    Если что-то не получилось.

    1. Если у вас Solaris 2.3, то:
      Во всех "родных" (которые не X11) Sun'овских программах русских букв не будет. Как то: textedit, cmdtool, mailtool
    2. Поставьте свежий Solaris 2.5 или 2.4. Если не можете, то используйте вместо них emacs, xterm, xedit.
    3. Или разбирайтесь самостоятельно с такими понятиями как ctype, LC_LOCALE, LC_CTYPE, -lc_basic_locale , NLS, and so on. хотя все же можете попробовать:
      LC_LOCALE=iso_8859_1 export LC_LOCALE
      LC_CTYPE=iso_8859_1  export LC_CTYPE
      LANG=iso_8859_1      export LANG
      

    Если все равно что-то не получилось.

    Пишите письма, господа. Но перед этим обратитесь к системному администратору.


    Copyright © CIT

    ПУТЕВОДИТЕЛЬ ПО КОНФИГУРАЦИОННЫМ ФАЙЛАМ Unix

    Корневой каталог "/"

    • bin - каталог наиболее употребительных команд пользователя.
    • sbin - утилиты системного администратора это все, что у него будет в однопользовательском режиме
    • dev - "устройства" - специальные файлы
    • etc - место для конфигурационных файлов
    • tmp - каталог временных файлов - для системы и для пользователей. Чистится при каждой загрузке.
    • lib - библиотеки и файлы, используемые компиляторами, разделяемые библиотеки
    • shlib - разделяемые библиотеки
    • usr - страшно говорить, но чего там только нет
    • mnt - "дежурный" каталог, для подмонтирования файловых систем
    • var - изменяемые конфигурационные и служебные файлы
    • home - здесь живут "userы"
    • export - "экспортируемые" файлы. В частности, содержит файловые системы для бездисковых клиентов, монтирующих их по NFS
    • proc - псевдо-файловая система отображает состояние запущенных процессов
    • stand - раздел с загрузочными файлами (unix, kdebug)
    • tftpboot "загрузчики" для бездисковых клиентов
    • unix - ядро операционной системы. - обыкновенный выполняемый файл. Возможно, что лежит он не в /, и называется по другому (например vmunix, vmlinuz)
    • lost+found - каталог, куда при ремонте файловой системы складываются файлы, "потерявшие" свои имена.

    Каталог "/etc" - место для конфигурационных файлов

    • passwd здесь определены все пользователи
    • shadow их пароли (в закодированном виде)
    • group группы пользователей
    • aliases синонимы почтовых адресов локальных пользователей
    • ftpusers список пользователей, на которых нельзя ftp-иться
    • shells список нормальных "shell'ов"
    • issue файл, содержимое которого выдается на экран перед приглашением к входу в систему.
    • motd файл, содержимое которого выдается на экран после приглашения к входу в систему.
    • ttydefs параметры терминальных линий
    • TIMEZONE файл с информацией о часовом поясе, в котором находится компьютер
    • uucp конфигурационные файлы системы UUCP
    • mail конфигурационные файлы системы mailx/sendmail
    • vfstab таблица монтируемых файловых систем
    • dfs/dfstab таблица экспортируемых в NFS каталогов
    • auto_home карты автоматически монтируемых каталогов для
    • automount
    • auto_master
    • format.dat параметры всех возможных дисков
    • hosts имена и IP адреса локальных host'ов
    • networks задает символические имена IP сетей
    • netmasks net маски IP сетей
    • ethers ethernet'ные адреса бездисковых клиентов
    • hosts.equiv список host'ов, которым позволено делать у нас rsh
    • defaultdomain задает NDS домен
    • resolv.conf кто служит нам DNS сервером
    • inetd.conf конфигурационный файл inetd демона
    • services соответствие номеров TCP портов их символическим именам
    • named.boot стартовая конфигурация сервера DNS
    • inittab схема работы процесса init.
    • rc0.d/ каталоги с командными файлами, которые запускают при переходе на/с соответствующего уровня выполнения
    • rc2.d/
    • rc3.d/
    • init.d/ а этом каталоге лежат копии ВСЕХ таких файлов вместе
    • rc0, rc2, rc3 Командные файлы, которые их запускают
    • magic Таблица с "магическими числами". Используется командой file для определения типа бинарного файла.
    • termcap файл с описаниями терминалов в формате termcap
    • wtmp Файл с информацией о сеансах работы пользователей в системе. Рекомендуется иногда опустошать его.

    Каталог "/usr"

    • sadm - файлы системного администратора
    • adm - накапливаемая информация о работе системы и пользователей
    • bin - утилиты
    • sbin - утилиты системного администратора
    • ucb/bin - утилиты, характерные для BSD Unix
    • mail - каталог почтовой службы.
    • man - документация системы в man формате
    • tmp - временные файлы. Очищается при загрузке
    • include - include файлы для компилятора C
    • lib - библиотеки - системные, пользовательские, разделяемые и статические, а так же многие служебные каталоги начинаются отсюда.
    • /usr/lib/acct утилиты для сбора статистики
    • /usr/lib/terminfo база данных с описаниями терминалов.
    • /usr/lib/lp каталог системы LP спулинга печати
    • /usr/lib/uucp каталог системы UUCP пересылки файлов по модему
    • spool - место для служебных временных файлов
    • /usr/spool/lp каталоги для работы системы спулинга печати
    • /usr/spool/cron/crontabs команды, выполняемые по расписанию
    • /usr/spool/cron/atjobs поставленные на выполнение
    • /usr/spool/uucp спулинг системы uucp
    • /usr/local - GNU-сный каталог
    • /var - локальные служебные файлы
    • /var/yp/Makefile - конфигуратор NIS
    • /var/named - карты описания DNS


    Copyright © CIT

    Не удается создать файл размером больше 16 Мб

    Ядро имеет настраиваемый параметр "ulimit" - максимальный размер создаваемого файла. Для пользовательского процесса его можно явным образом задать (в /etc/profile, например), командой ulimit

        ulimit 1000000000    # максимальный размер файла 1Gb
    

    Однако, по умолчанию ulimit установлен в параметрах конфигурации ядра, и грамотнее будет его заменить, и переконфигурировать ядро. Для этого, будучи суперюзером:

    1. Поправить файл
      SFSZLIM = 0x1000000
                ^^^^^^^ Сделать столько, сколько надо. Просто добавить
                        ещe два нолика - получится 4 Гб.
      {
              description = "process file size soft limit"
              default = 0x1000000
                        ^^^^^^^^^ Здесь поправить точно так же
              range = "-1..0x7fffffff(+1)"
              tunable = true
      }
      
    2. Выполнить команду /sbin/buildsys
    3. Перегрузить машину.
    4. Процедура подробно описана в книжке "Machine Monitoring and Tuning"


Copyright © CIT

Пример конфигурационных файлов DNS для standalone сети

Задача: сконфигурировать DNS-сервис в отдельностоящей локальной сети.

домен:foms.msk.ru
адреса:198.8.3.0
адреса:198.8.2.0
DNS сервер: server.foms.msk.ru

Для этого нужно заполнить файлы:

  /etc/named.boot
  /var/named/named.root
  /var/named/primary/local.reverse
  /var/named/primary/foms.msk.ru
  /var/named/primary/foms-hosts-spisok
  /var/named/primary/198.8.2.reverse
  /var/named/primary/198.8.3.reverse
и запускать при начальной загрузке демона /sbin/in.named

Примерное содержание конфигурационных файлов приведено ниже. Переделайте их под конкретную конфигурацию вашей сети. Приблизительная идеология такова: сервис DNS поддерживается демоном named. Named при старте считывает файл стартовой конфигурации /etc/named.boot . В нем указывается, как зовется наш домен, и в каких файлах лежат описания имен хостов нашего домена (параметр primary). Мы должны локально поддерживать три карты описаний:

  1. foms.msk.ru - все хосты нашего домена.
  2. 3.8.198 - "обращенная" карта нашего домена (просто переворачиваем наши IP-адреса задом наперед)
  3. 0.0.127 - зачем требуется еще карта нашей "local-network" известно только разработчикам DNS, однако ее тоже нужно описать.

в /etc/named.boot записано, в каких файлах лежат описания доменов, named их считывает, и начинает вещать на весь мир.


;##############
; type     domain                source host/file   backup file
;
directory /var/named
cache      .                     named.root
primary    0.0.127.in-addr.arpa  primary/local.reverse
primary    foms.msk.ru           primary/foms.msk.ru
primary    3.8.198.in-addr.arpa  primary/198.8.3.reverse
primary    2.8.198.in-addr.arpa  primary/198.8.2.reverse
; Зоны, для которых мы служим резервным name-сервером
; secondary gatelink.fr          134.214.100.1 s/gatelink.fr
; secondary 214.134.in-addr.arpa 134.214.100.1 s/134.214
;############## конец файла ###################################
;##############
; Initial cache data for root domain servers 11-may-94
;;;;Get it from
.                       99999999 IN  NS    NS.INTERNIC.NET.
NS.INTERNIC.NET.        99999999     A     198.41.0.4
.                       99999999     NS    NS1.ISI.EDU.
NS1.ISI.EDU.            99999999     A     128.9.0.107
.                       99999999     NS    KAVA.NISC.SRI.COM.
KAVA.NISC.SRI.COM.      99999999     A     192.33.33.24
.                       99999999     NS    C.NYSER.NET.
C.NYSER.NET.            99999999     A     192.33.4.12
.                       99999999     NS    TERP.UMD.EDU.
TERP.UMD.EDU.           99999999     A     128.8.10.90
.                       99999999     NS    NS.NASA.GOV.
NS.NASA.GOV.            99999999     A     128.102.16.10
                        99999999     A     192.52.195.10
.                       99999999     NS    NS.NIC.DDN.MIL.
NS.NIC.DDN.MIL.         99999999     A     192.112.36.4
.                       99999999     NS    AOS.ARL.ARMY.MIL.
AOS.ARL.ARMY.MIL.       99999999     A     128.63.4.82
                        99999999     A     192.5.25.82
.                       99999999     NS    NIC.NORDU.NET.
NIC.NORDU.NET.          99999999     A     192.36.148.17
;############## конец файла ###################################
;##############
; local dns file local.reverse 0.0.127.in-addr.arpa
;
@  IN   SOA  server.foms.msk.ru. moshkow.server.foms.msk.ru. (
                94061801        ; Serial (yymmddxx)
                10800           ; Refresh 3 hours
                3600            ; Retry   1 hour
                3600000         ; Expire  1000 hours
                86400 )         ; Minimum 24 hours
   IN   NS      server.foms.msk.ru.
1  IN   PTR     localhost.
;############## конец файла ###################################
;##############
; foms.msk.ru zone hosts file for DNS-server server.foms.msk.ru
;
@  IN  SOA server.foms.msk.ru. moshkow.server.foms.msk.ru. (
                95031802        ; Serial (yymmddxx)
                10800           ; Refresh 3 hours
                3600            ; Retry   1 hour
                3600000         ; Expire  1000 hours
                86400 )         ; Minimum 24 hours
        NS      server.foms.msk.ru.
        MX      0       server.foms.msk.ru.
;       MX      20      ipsun.ac.msk.su.
;       MX      30      mailhost.kiae.su.
;       NS      ipsun.ac.msk.ru.
localhost       A       127.0.0.1
$INCLUDE /var/named/primary/foms-hosts-spisok
;; Если хотите  отпустить свой поддомен   *.develop.foms.msk.ru
;; на выселки, самостоятельно поддерживать свой домен.
;margo.develop  IN      A       193.95.100.4
;develop        IN      NS      margo.develop.foms.msk.ru.
;############## конец файла ###################################
;##############
;;;;;;;;;;;; Hosts in foms.msk.ru zone ;;;;;;;;;;;;;;;;;;;;;;;;
; Our main server with DNS, ftp, gopher, www, mailrelay, NFS,
;
server    A     198.8.2.1         ; e1x70 ethernet
          A     198.8.3.1         ; m3760 ethernet
          A     193.124.158.33    ; sl0   slip link
          MX    0       mailrelay
          HINFO Motorola88/110 "SVR4.1/88"
          WKS   198.8.2.1   UDP ( time domain name )
          WKS   198.8.2.1   TCP ( echo telnet hostnames domain )
mailrelay CNAME server
ftp       CNAME server
fedfond   CNAME server
; Host s20
;
s20     A       198.8.2.20
        MX      0       mailrelay
        MX      20      linux
        HINFO   Besta/31 UNIX-V.3
besta   CNAME   s20
; Host pcat101
;
pcat101 A       198.8.2.101
        MX      0       mailrelay
        HINFO   PC486/66DX2 "MSDOS 6.2"
pc101   CNAME   pcat101
guest   CNAME   pcat101
; Host pcat106
;
pcat107 A       198.8.3.107            ; eth0
        A       193.124.158.34         ; sl0 slip link
        MX      0       pcat107
        MX      10      mailrelay
        HINFO   PC486/66DX2 "Linux 1.2.1"
pc107   CNAME   pcat101
linux   CNAME   pcat101
;############## конец файла ###################################
;##############
@  IN  SOA  server.foms.msk.ru. moshkow.server.foms.msk.ru. (
                94102501        ; Serial
                10800           ; Refresh 3 hours
                3600            ; Retry   1 hour
                3600000         ; Expire  1000 hours
                86400 )         ; Minimum 24 hours
        NS      server.foms.msk.ru.
; Reverse-name   [ttl]          PTR     Real-name-dot
;
1       PTR      server.foms.msk.ru.
20      PTR         s20.foms.msk.ru.
101     PTR     pcat101.foms.msk.ru.
;############## конец файла ###################################
;##############
@  IN  SOA  server.foms.msk.ru. moshkow.server.foms.msk.ru. (
                94102501        ; Serial
                10800           ; Refresh 3 hours
                3600            ; Retry   1 hour
                3600000         ; Expire  1000 hours
                86400 )         ; Minimum 24 hours
        NS      server.foms.msk.ru.
; Reverse-name  [ttl]   PTR     Real-name-dot
;
1       PTR      server.foms.msk.ru.
106     PTR     pcat106.foms.msk.ru.
107     PTR     pcat107.foms.msk.ru.
;############## конец файла ###################################


Copyright © CIT

Книжки про Unix

Рекомендуются любые книги в твердой обложке импортных авторов в переводе на русский, ОСОБЕННО переводы книг издательства O'Raily, все остальные (за редчайшим исключением) - не рекомендуются. Т.е., написанные совками (ибо учебники должны писать профессиональные преподаватели, а не профессиональные программисты) и в мягкой обложке (естественно, не считая издательства O'Raily)

На русском есть:

Керниган, Пайк

Керниган, Пайк, название почему-то перевели как "UNIX - универсальная среда программирования". Warning! При наборе русского издания наляпали ОКЕАН ачипяток и ашипок в части regex и не только. Читать ее imho надо в параллель с manpages, отдавая оным приоритет в стремных ситуациях.

Не смотря на это - отличная книжка. Мне было даже интересно ее читать.

Готье

Готье (в версии перевода, ходившей на лентах для СМ и многократно распечатанной на разных АЦПУ, фамилия автора звучала как "Гаузер" :) "Руководство по операционной системе UNIX". Точнее, SysV.release-unknown. Но тоже ничего для начала.

Баурн

Баурн (название я забыл :( ) очень хорошая книжка и troff описан :) Старая, из серии "со стрелочками" издательства "Мир".

Инмос85

Беляков Рабовер Фридман -- что-то на тему Инмос85. Интересно почитать.
Но сильно устарела

Морис Бах

Бах Морис -- русский перевод его книги ходил в виде 480Кб архива, наверняка где-то лежит, под названием типа bachbook.zip :)

"Мобильная опер. система"

Беляков и Co. "Мобильная опер. система" (оранжевая книжечка в мягкой обложке) -- компиляция из POSIX стандартов времен ок. 1989г. Маленькая такая, хороша как справочник.

и еще довольно много других...

"UNIX/руководство системного администратора"

"UNIX/руководство системного администратора", Эви Немет, Гарт Снайдер, Скотт Сибас, Трент Р.Хент. Киев, bhv, 1997. 830 стр., 50 т.р.
Очень, очень достойная книжка. Помогает почти от всех болезней.


Copyright © CIT

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

(Компиляциия из документации модемов ZyXEL 1496*, GVC-1440)
  • AT&F0 Factory setting. Или на ZyXEL включить модем с нажатой кнопкой Enter или Data/Voice
  • ATZ0 Загрузить profile 0
  • AT&V Распечатать setup
  • AT&W0 Сохранить setup в profile 0
  • AT&Y0 При включении загружать profile 0
  • ATE0 Выключить эхо
  • atdpТЕЛЕФОННЫЙ НОМЕР Пульсовый набор номера
  • +++ Выйти из connect'а в командный режим
  • ATO Вернуться из командного режима в CONNECT
  • ATH Положить трубку
  • ATA Поднять трубку и ответить на звонок
  • ATS0=2 Снимать трубку после 2-го звонка

Команды, которые обычно и сами по себе установлены.

  • AT&P1 Make / break 33/67 (Europe)
  • ATQ0 Возвращать код возврата
  • ATV1 Код возврата текстовый

Команды, которые возможно захочется установить.

  • AT&L1 В режим выделенных линий
  • AT\N5 Запретить соединение БЕЗ сжатия MNP5 или V42bis
  • ATB6 Поставить скорость 2400 и ниже
  • ATL0 Самый тихий звук
  • ATM0 Speaker always off

Команды GVC-1440

  • B_
    - B1 Bell mode (*)
    - B2 Autoscan mode
  • D_
    - R originate call in answer mode
    - W whait for second dialtone
    - , pause
    - @ wait for 5 seconds silence
    - ! flash
    - ; return to command mode after dialing
  • H - 1 make busy
  • I [0-4] info
  • L - 2 medium speacker
  • M
    - 0 internal speacker off
    - 1 internal speacker on until carrier
    - 2
    - 3
  • O
    - 0 return to data mode
    - 1 return to data mode and initiate equaliser retrain

Регистры

  • s0 (autoanswer ring) 0
  • s1 (ring counter) 0
  • s2 (Escape code character) +
  • s3 (CR character) 13
  • s4 (LF character) 10
  • s5 (BS character) 8
  • S6 (dial tone whait time) 2 sec
  • S7 (remote carrier whait time) 45 sec
  • s8 (comma pause time) 2 sec
  • s9 (carrier dettect responce time) 6 - *1/10 sec
  • s10 (carrier loss time) 14 - *1/10 sec
  • s11 (touch tone dialing speed) 95 - ms
  • s12 (esc character detect time) 50 - 1/50 sec
  • s14 (bitmap)
  • s16 (bitmap)
  • s18 (modem test timer) 0
  • s21 (bitmap)
  • s22 (bitmap)
  • s23 (bitmap)
  • s25 (DTR delay) 5 sec
  • s26 (RTS to CTS delay interval) 1 - *1/100 sec
  • s27 (bitmap)
  • s28 (bitmap)


Copyright © CIT

Конфигурирование сервера HTTPD и формат языка HTML

  • index.html Если просят выдать каталог, то выдают index если его нет, выдается просто оглавление каталога
  • HEADER.html Его содержимое добавляется перед началом листинга
  • README.html Его содержимое добавляется к концу листинга
  • .htaccess Управляющий файл с локальными настройками текущей директории

Разобраться стоит с этими характеристиками: Alias - где то должна лежать расшифровка. а сервер будет ее подставлять. Вот только где ?

Нужно задавать так:
           &  -  &
           "  -  "
           >  -  >
           <  -  <
          >>  -  >>
          <<  -  <<
         (C)  -  ╘   или ╘
         (R)  -  ╝
              -  -
              -  -
          <=  -  <=
          >=  -  >=
 Extra space  -   
<title> Заголовок всего документа </title>

Заголовок 2-го уровня


<A HREF="Dokument.html#A1.4.1.1">Ссылка на подраздел в документе</A>
<A HREF="#2" taget=newwindow>Ссылка открываемая в другом окне</A>
<A NAME = "A1.4.1.1">Так это место должно быть помечено в Документе</A>
ПримерИсточник
  • Одна позиция
  • Другая позиция
<ul>
<li> Одна позиция
<li> Другая позиция
</ul>
ПримерИсточник
  1. Одна позиция
  2. Другая позиция
<ol>
<li> Одна позиция
<li> Другая позиция
</ol>
ПримерИсточник
  • Одна позиция
  • Другая позиция
  • <menu>
    <li> Одна позиция
    <li> Другая позиция
    </menu>
  • Одна позиция
  • Другая позиция
  • <dir>
    <li> Одна позиция
    <li> Другая позиция
    </dir>
    ПримерИсточник
    Название пункта
    Текст, расписывающий содержимое пункта
    Название пункта
    Текст, расписывающий содержимое другого пункта
    <dl [compact] >
    <dt> Название пункта
    <dd> Текст, расписывающий содержимое пункта
    <dt> Название пункта
    <dd> Текст, расписывающий содержимое другого пункта
    </dl>

    Пример

            Преформатированный     фрагмент текста
    

    Источник

    <pre>
            Преформатированный     фрагмент текста
    </pre>
    

    Пример

            Преформатированный     фрагмент текста в ширину 80
    

    Источник

    <pre width="80">
            Преформатированный     фрагмент текста в ширину 80
    </pre>
    

    Пример

    Устанавливает общий отступ вправо. Вынесенный вправо фрагмент текста

    Источник
    <BLOCKQUOTE>
    Устанавливает общий отступ вправо.
    Вынесенный вправо фрагмент текста
    </BLOCKQUOTE>

    Горизонтальная черта <hr>


    Окончание параграфа <p>

    Жесткий конец строки <br> Текст между тагами <nobr></nobr> не будет переноситься на новую строку каким бы длинным он не был ............................................................

    <b></b> Bold жирный текст
    <i></i> Itallic курсив текст
    <u></u> Underline подчеркнутый Работает только в Netscape 3
    <tt></tt> Typewriter текст с фонтом фиксированной ширины
    <blink></blink> Blink мигающий текст
    <strike></strike>Strike перечеркнутый текст <dfn></dfn> Definition. Определяемое слово italic
    <em></em> Emphasis. Ударение italic
    <cite></cite> Titles of books. Цитата italic
    <code></code> Programm. Программный текст fixed
    <kbd></kbd> User keyboard entry. bold fixed
    <samp></samp> Status message fixed
    <var></var> Variable. italic
    <strong></strong> Strong emphasis. bold
    <address></address>
    Выделяется адрес italic
    _BODY_ таги срабатывают только если расположены в самом начале документа

    <body bgcolor="#000000" text="#ffffff" link="#FFFF00" vlink="#0000ff">
    А так устанавливают собственные цвета во всем документе

    <BODY bgcolor="#000000" LINK="#ff0000" text="#ffddbb" vlink="#aaaaaa">
    А так делали траурные колера, когда протестовали.

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

    Источник
    <font size=+1 color=red face="Helvetica">
    Текст большего размера, и покрашенный в красный цвет, с заданным типом фонта
    </font>

    <basefont size=3> Дальше пойдет текст с фонтом заданного размера

    <bgsound src=soundfile.au loop=10> а так же background звук

    <A HREF="Lightweight.html">Low impact

    <img src="kartinka.xbm">
    <img src="kartinka.gif" align=top align=middle>
    Если нужен текст сбоку от картинки (text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text)

    <img src="kartinka.jpg" align=left hspace=100>
    Отступ текста от картинки (text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text, text)
    <img src="kartinka.gif" LOWSRC=kartinka_bw.gif АLT="Вверх" height=102 width=50>
    • ALT - что написать, если картинка не читается,
    • LOWRES - перед рисованием большой картинки загрузить эту - маленькую

    Так подкладывают BACKGROUND
    <BODY background="/icons/designer/bk.gif">
    ...
    </BODY>

    Пример
    tr - задает строку СтолбецСтолбец
    Внутри таблицы может быть такой таг, Подзаголовок?

    Источник
    <table border=1 cellspacing=5 cellpadding=5 bgcolor=#00ffff>
    <tr>
    <td> tr - задает строку Столбец</td>
    <td>Столбец</td>
    </tr>
    </table>
    <caption>Внутри таблицы может быть такой таг, Подзаголовок?</caption>

    Пример
    Табличка фиксированной ширины,не зависящая от размеров внутреннего текста

    Источник
    <table width=300>
    <tr>
    <td> Табличка фиксированной ширины,</td>
    <td>не зависящая от размеров внутреннего текста</td>
    </tr>
    </table>


    Back to my home page
    moshkow@ipsun.ras.ru
    <A HREF="/misc/bottom.map">
    <IMG SRC="/images/navigation_bar.gif" WIDTH=468 HEIGHT=32 BORDER=0 USEMAP="#navmap" ISMAP>
    <MAP NAME="navmap">
    <AREA COORDS="0,0,63,31" HREF="/index.html">
    <AREA COORDS="63,0,136,31" HREF="/comprod/mirror/index.html">
    <AREA COORDS="136,0,203,31" HREF="/assist/customer_service">
    <AREA COORDS="203,0,267,31" HREF="/toc.html">
    <AREA COORDS="267,0,329,31" HREF="/search/index.html">
    <AREA COORDS="329,0,415,31" HREF="/ads/index.html">
    <AREA COORDS="415,0,466,31" HREF="http://cgi.netscape.com/cgi-bin/showframes.cgi">
    <AREA COORDS="0,0,467,31" HREF="/index.html">
    </MAP>

    Клиент открывает tcp соединение с хостом www.host.com на порт (обычно 80) и говорит туда GET /local/url/file/name.html HTTP/1.0

    • Host: www.host.com
    • Http_referer: url_документа_на_котором_стоял_клиент
    • Еще некоторое количество заголовков, которые рассказывают серверу, кто с ним имеет дело.
    Все они, кроме GET необязательны
    . . .
    ^M^J - пустая строка - конец заголовков - конец запроса

    Обратно вываливается ответ сервера:

    • http-шные заголовки на нескольких строках
    • ^M^J - пустая строка
    • Собственно запрошенный документ as is
    Упражнение: скажите
    $ telnet www 80
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    GET /index.html HTTP/1.0
    
    И потом два раза нажмите на Enter Полная спецификация лежит, например на www.apache.org
    1. Чтобы SSI выполнялись, необходимо задать в конфигурационных файлах сервера:
      /etc/httpd/conf/access.conf :------------------------
      <Directory /home/httpd/docs>  # "Включить"
      Options All # Options Includes
      /etc/httpd/conf/srm.conf :------------------------
      AddType text/x-server-parsed-html .shtml
      
      или даже
      AddType text/x-server-parsed-html .html
      
    2. SSI отрабатываются только в файлах с расширением .shtml

    Примеры:
    <!--#exec cmd="ls -l" -->
    <!--#include virtual="bottom.html" -->
    <!--#element attribute=value attribute=value ... -->

    The value will often be enclosed in double quotes; many commands only allow a single attribute-value pair.

    The allowed ELEMENTS are:

    • config - параметры парсинга
      • errmsg - сообщение об ошибке, посылаемое клиенту
      • sizefmt - формат размера файла
      • timefmt - формат даты модификации файла
      • var - напечатать имя переменной
    • exec - выполнить shell или CGI-скрипт
      • cgi - (%-encoded) URL relative path to the CGI script.
      • cmd - выполнить shell
    • fsize - напечатать размер файла
      • file - относительное имя файла
      • virtual -(%-encoded) URL-path relative файла
    • flastmod - последнее время модификации файла
    • include - вставить документ
      • file - вставляемый файл
      • virtual - URL - только на этом же хосте
    Include variables These are available for the echo command, and to any program invoked by the document.
    • DATE_GMT The current date in Greenwich Mean Time.
    • DATE_LOCAL The current date in the local time zone.
    • DOCUMENT_NAME The filename (excluding directories) of the document requested by the user.
    • DOCUMENT_URI The (%-decoded) URL path of the document requested by the user. Note that in the case of nested include files, this is not then URL for the current document.
    • LAST_MODIFIED The last modification date of the document requested by the user.
    If server side includes are enabled, you will see data values below:
    The date is:                      <!--#echo var="DATE_LOCAL"-->
    The current version of the server <!--#echo var="SERVER_SOFTWARE"-->
    The CGI gateway version           <!--#echo var="GATEWAY_INTERFACE"-->
    The server name                   <!--#echo var="SERVER_NAME"-->
    This file is called:              <!--#echo var="DOCUMENT_NAME"-->
    This file's URI                   <!--#echo var="DOCUMENT_URI"-->
    The query string                  <!--#echo var="QUERY_STRING_UNESCAPED"-->
    This file was last modified:      <!--#echo var="LAST_MODIFIED" -->
    The size of the unprocessed file  <!--#fsize virtual="httpd.txt"-->
    sample.html was last modified     <!--#flastmod virtual="httpd.txt"-->
    You are using                     <!--#echo var="HTTP_USER_AGENT"-->
    You came from                     <!--#echo var="HTTP_REFERER"-->
    

    и внешними, вызываемыми программами - gateeway'ями. Сам CGI-script должен лежать в /home/httpd/cgi-bin тогда его находят (или в других каталогах, описанных в acces.conf Данные передаются в командной строке, через переменные окружения, и через стандартный ввод. Возвращаются на стандартный вывод, в начале должна стоять "волшебная строка"

    Если добавить в конфигурационный файл

    /etc/httpd/conf/srm.conf :------------------------
    AddType application/x-httpd-cgi .cgi
    

    То CGI-скрипты можно будет клась в любой подкаталог дерева документов - с расширением .cgi

    • Войти в файл, и спозиционироваться на строку с шаблоном "cl"
      http://hoohoo.ncsa.uiuc.edu/file.html#cl
    • Request for a CGI script with no extra path information and no query.
      http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi
    • Request for a script with extra path information, and no query.
      http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi/extra/path
    • Request for a script with no extra path information, and an ISINDEX query.
      http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi?query
    • Request for a script with extra path information as well as an ISINDEX query.
      http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi/extra/path?a+query

    Вызывается одна и та же программа, но ей передается 0,1,1 или 2 аргумента: extra path - "добавочный маршрут", идущий вслед за именем экзешника query - длинная строка после знака "?"

    на extra path работает image map - им передается имя описателя картинки query передается заполненным ISINDEX

    Параметры передаются в переменных окружения.

    REMOTE_ADDR=127.0.0.1
    REMOTE_HOST=localhost
    HTTP_REFERER=http://www.ac.msk.su:80/cgi-bin/html-KOI?KSP/bachurin.txt
    REQUEST_METHOD=GET
    QUERY_STRING=query
    PATH_INFO=/marshrut
    PATH_TRANSLATED=/home/httpd/docs/marshrut
    SCRIPT_NAME=/cgi-bin/proba
    HTTP_USER_AGENT=NCSA Mosaic for the X Window System/2.4  libwww/2.12 modified
    
    А теперь вот как оформляются формы с checkbox'ами:

    Пример

    Press me.

    Источник
    <FORM ACTION="http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi" METHOD="POST">
    <INPUT TYPE="checkbox" NAME="button" VALUE="on">Press me.<p>
    <INPUT TYPE="submit" VALUE="Submit"><p>
    </FORM>

    # ISINDEX - параметр запроса передается программе CGI в $1
    # В форме METHOD=GET - там вызывается команда которой передается
    # аргумент в переменной окружения QUERY_STRING
    # http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi?button1=on&button2=off
    # А вот как работает POST, и PUT. Дополнительная информация проталкивается
    клиентом на сервер. Сервер подает ее cgi-программе на стандартный ввод.
    длина посылаемого файла устанавливается в переменной окружения CONTENT_LENGTH
    а тип данных - в CONTENT_TYPE
    FORM ACTION="http://hoohoo.ncsa.uiuc.edu/cgi-bin/test-cgi" METHOD="POST"
    

    Пример

    Press me.

    Источник

    <FORM ACTION="/cgi-bin/proba" METHOD="GET">
    <INPUT TYPE=hidden   NAME="pg" size=0  VALUE="hidden from user information">
                ^^^^^ поле полезно чтоб хранить информацию о "сеансе"
    <INPUT TYPE=checkbox NAME="button" VALUE="on">Press me.<p>
    <INPUT TYPE=submit                 VALUE="Submit">
    <INPUT TYPE=reset                  VALUE="Clear form">
    <INPUT TYPE=text     NAME=d0       VALUE=""  SIZE=12 MAXLENGTH=32>
    <INPUT TYPE=password NAME=passwd>
    <TEXTAREA  NAME="comments" ROWS=2 COLS=60>Текст внутри формы</TEXTAREA>
       <SELECT NAME=what MULTIPLE>
          <OPTION VALUE=web  SELECTED>the Web
          <OPTION VALUE=news >Usenet
       </SELECT>
    </FORM>
    

    Content-type: text/html
    Содержимое, которое кидается сквозь нашего сервера - клиенту

    Если я генерю не содержимое, а только ссылку, то:

    Location: /path/doc.txt
    или
    Location: gopher://gopher.ncsa.uiuc.edu/

    Генерим текст в чистом серверном виде - он поедет клиенту сразу, без дополнительной фильтрации:

    --- start of output ---
    HTTP/1.0 200 OK
    Date: Tuesday, 26-Dec-95 15:17:10 GMT
    Server: NCSA/1.3
    MIME-version: 1.0
    Content-type: text/html
    Last-modified: Tuesday, 24-Dec-95 15:15:41 GMT
    Content-length: 3132
    This is a plaintext document generated on the fly just for you.
    --- end of output ---
    
    Подставляйте туда соответствующие значения переменных $SERVER_PROTOCOL $SERVER_SOFTWARE Автоподстановка URL с timeout'ом. Подставить в начало документа:
    <META HTTP-EQUIV="Refresh" CONTENT="12; URL=http://www.ras.ru/~moshkow/">
    Дальше идет местный HTML-документ - который через 12 секунд будет автоматически заменен на вышеуказанный URL

    Пример

    I'm entering for the first time from (city, state/country)

    Источник
    <form method=POST action="mailto:rauli@megabaud.fi">
    I'm entering for the first time from (city, state/country) <INPUT size=60 name="From">
    <br><br>
    <input type="submit" value="Click here (only the first time, please)"><p>
    </form>

    Content-type: text/html
    Set-Cookie: cookiename=valueofcookie; expires=Saturday, 28-Feb-96 23:59:59 GMT; path=/cgi-bin/mycgiprogram
    

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

    Если сказать так, то клиент останется на старом мест, и не будет переходить по ссылке
    Status: 204 No Content

    Создаем в каталоге файл .htaccess такого содержания
    order allow,deny
    allow from all
    deny from polimos.ras.ru
    


    Copyright © CIT