Оглавление
НИИ Системных Исследований РАН,
Инф.сектор Отделения Математики Президиума РАН
956-2155, 274-6329, 938-1902
moshkow@ipsun.ras.ru
www.ras.ru/~moshkow/
Включите системный дисплей, или (при отсутствии такового), консольный терминал, включите питание на системном блоке. Загрузка операционной системы начнется автоматически. Осталось немного подождать, пока загрузится операционная система и отработают все положенные утилиты инициализации системы, и вот на консоли появляется приглашение
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-серверов, мне не известно.
Если вам в руки попалась свежеустановленная машина, то на ней еще не зарегистрировано никаких пользователей за исключением суперпользователя "root" - системного администратора. Пароля у него нет. Входите в него.
В суперпользователя можно превратиться. Для этого выполните команду
su # Super User
Каждый пользователь в системе Unix предварительно должен быть зарегистрирован. Пользователю полагается иметь: имя, пароль, номер пользователя, номер группы, к которой он принадлежит, домашний каталог, командный интерпретатор. У пароля могут быть дополнительные параметры - как часто его можно менять, время действия, и прочие секретные штучки.
Comment | Familiq Imya Otchestwo |
logname | входное имя пользователя |
passwd | пароль |
UID | User Identification Descriptor |
GID | Group 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
Примечание. В различных операционных системах эта утилита может называться по разному.
admintool | Solaris 2 |
sysadmsh | SCO UNIX |
smit, msmit | AIX |
sam | HP/UX |
setup | Linux |
sysadm | UnixWare, ISC, SVR4 |
Команда регистрации нового пользователя.
adduser | Linux |
useradd | SunOS 4.1 |
vipw | BSD/OS, FreeBSD |
Как зарегистрировать нового пользователя "вручную".
moshkow:x:555:1:Maksim E. Moshkow:/home/moshkow:/bin/ksh
pwconv
mkdir /home/moshkow chown moshkow /home/moshkow
passwd moshkow
На экране терминала появится строка
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 / ^N | PREVIOUS / NEXT команда |
^F / ^B | FORWARD / 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
Первоначальная версия этого текста
подготовлена НПО "КЛОТО"
Система 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
| 1
| moshkow
| sys
| 17
| Oct 18 16:13
| ../jean |
Описание прав - строка из 10 символов 1 символ - "-" - значит файл, "d" - директория 2 символ - права "владельца" файла 5 символ - права пользователей одной с "владельцем" группы 7 символ - права всех "прочих" пользователей по отношению к файлу Права:
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 | - сообщит все возможные команды, которыми можно узнать, кто и что делает в системе |
По не знаю какой уж там исторической традиции "честные" (канонические) системы Unix не имеют в своем базовом комплекте ни одного нормального (еще раз подчеркну это слово - НОРМАЛЬНОГО) текстового редактора. Поэтому системный администратор обязан уметь пользоваться тем, что ему дают. А дают ему несравненный "Визуальный" экранный редактор файлов - Редактор VI.
Редактор VI имеет три режима:
Прочитайте предыдущий абзац еще раз. Вы еще не испугались? Хорошо. Поехали. Итак:
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, которым, не смотря на это, рекомендую пользоваться впредь.
РЕЖИМЫ Переходы из режима в режим:
Ввод | Командный | ESC |
Командный | Ввод | aAiIcCrRs |
Командный | Редактор ed | :Q |
Редактор ed | Командный | vi |
РЕДАКТОР_ED. ВХОД : / (НАДОЛГО Q) ВЫХОД CR / (VI)
Почти сразу после рождения Unix раскололся на две ветви - ветвь как бы "прародительская", которой владеет "официальный" хозяин торговой марки Unix - Unix System Laboratory - фактически ветвь коммерческая. И проект Исследовательского института Беркли - ветвь в основном свободных - бесплатных Unixов.
System III System 6 | |
---|---|
USL | Berkeley |
System 7 | BSD 4.0 |
Unix V 3.1 | |
Unix V 3.2 | BSD 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 |
386bsd | BSD 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.1 | SVR4.2 от SCO. Совместима с Windows и Netware. До сих пор не доведена до ума сеть. Поддерживает мультипроцессорные PC. После того как ее у Novell перекупило SCO, будущее этой системы перестало для меня казаться столь уж заманчивым. |
Solaris 2.5 | SVR4.0 от SunSoft. Совсем как на Sun'е. В принципе, это должно говорить само за себя. Начиная с 5-й версии в Solaris наконец пришел Motif. |
SCO Unix 4.0 | SVR3.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 (естественно).
Команда 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, которая будет выполняться для всех таких найденных файлов. Вместо значка "{}" будет подставляться каждый раз имя найденного файла. Естественно, что таким образом мы их все и уничтожим.
В 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 | добавить файл к архиву |
Ключи:
Команда 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
Начинается все с 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 | - ничего не делать (просто игнорировать эту строку) |
Если посмотреть внимательно на таблицу, то можно разобраться, что же в действительности происходит при загрузке, и откуда бе- рутся все эти загадочные сообщения.
Специфика Slackware Linux
/etc/rc.d/rc.
из которого запускаются файлы
/etc/rc.d/rc.inet1
устанавливающий сетевые интерфейсы
/etc/rc.d/rc.inet2
запускающий сетевые сервисы
/etc/rc.d/rc.local
запускающий несколько полезных программ и демонов - например поддержка мыши, httpd, русификация консоля, и т.п.
В 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/cua | Dial-out модемные порты |
/dev/pts | Псевдо-терминалы |
/dev/fbs | Frame buffers - видео адаптеры |
Распечатать информацию о конфигурации станции.
prtconf sysdef -i dmesg STOP+A ok banner ok probe-scsi ok printenv ok devalias ok setenv
Переконфигурация системы.
После подключения дополнительных устройств (дисков, лент, контроллеров) нужно "подтолкнуть" систему, чтобы она ими "заинтересовалась", опознала, настроилась на них, и создала для них соответствующие специальные файлы.
ok boot -r
/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,раздел) имя_загружаемого_файла параметры
где
device | st стриммер, sd SCSI-диск/cdrom, le ethernet |
---|---|
контроллер | обычно 0 |
dev | 6 cdrom, 3 внутренний диск, ... |
раздел | 0 "/", 2 корень cdrom'а, номер файла на ленте, ... |
параметры | |
-a | интерактивная загрузка (спросит дополнительные параметры) |
-r | после загрузки заняться переконфигурацией |
-s | загрузиться в однопользовательский режим |
-v | verbose (подробно) |
-w | makes filesystem writeable |
У станций SS20 установлени boot-prom новой версии. Там команда загрузки выглядит примерно так:
ok boot disk1:0 -sa
Загрузиться со 2-го жесткого диска (SCSI Taget 1), в однопользовательский режим. Все параметры загрузки запросить интерактивно, с клавиатуры.
Все системные действия выполняет ядро операционной системы 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 . . .
Чтобы получить доступ к файлу по имени, операционная система
Формат индексного описателя файла.
Область инодов разбита на 64-х байтные структуры - inod'ы. В inod'е хранится:
Точный формат структуры файловой системы см. man fs
В 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 ). |
Специальные файлы бывают двух типов:
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
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 показывает для таких файлов два числа: "мажорный" и "минорный" номера устройств. Будем считать для ясности, что "мажор" это порядковый номер драйвера устройства, а "минор" - внутренний номер устройства в таблице обслуживающего его драйвера.
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_c0d0s1 | SCSI контроллер m197 номер 0, SCSI устройство 0 логический раздел (slice) 1 |
/dev/dsk/m328_c0d0s0 | SCSI контроллер m328 номер 0, SCSI устройство 0 логический раздел (slice) 0 |
Физический диск (целиком)
/dev/rdsk/m328_c0d0s7 | Условное обозначение всего жесткого диска, целиком |
Бесструктурные (сырые) разделы
/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 | Controller | 0 | (обычно 0) |
Taget | 2 | (SCSI ID) | |
Disk | 0 | (LUN Logical Unit Number - обычно 0) | |
Slice | 3 | (Номер раздела) |
Физический диск (целиком)
/dev/rdsk/c0t3d0s2 | Весь жесткий диск представляется разделом 2 Загрузочный внутренний жесткий диск SPARC station имеет 3-й SCSI номер. |
CD-ROM (целиком)
/dev/dsk/c0t6d0s2 | CD обычно вешают на 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: Создание файловой системы.
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: виды файловых систем.
ufs | Unix File System основной тип файловых систем для жестких дисков |
---|---|
s5 | System V. Устарелый тип файловой системы, использовался в старых версиях SV 3.1. Более медленная, но занимает меньше места под служебную информацию |
bfs | Boot File System Служебная "очень простая" файловая система. В ней лежат файлы начальной загрузки boot и unix |
cdfs | CD 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.
Любое действие по администрированию системы 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, и первыми буквами команд меню.
На рабочих станциях Sun, IBM RS/6000 утилиты для администрирования работают в графическом режиме, под X Windows, с использованием мышки.
Sun | Solaris 2.3 | - admintool |
IBM RS/6000 | AIX | - msmit |
Для инсталляции операционной системы на 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.
Программа инсталляции имеет три основных режима:
Вторым своим вопросом программа инсталляции предложит выбрать один из них.
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", которая и проведет инсталляцию.
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
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-С .
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
Обычный 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
Протокол TCP/IP (Transmission Control Protocol/Internet Protocol) является базовым транспортным сетевым протоколом в UNIX'е. В заголовке TCP/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 чисел, разделенных точками. Например:
Каждое десятичное число здесь представляет на самом деле два шестнадцатеричных разряда. Может принимать значения от 0 до 255. Допустима также шестнадцатеричная запись:
В условиях корректно сконфигуренной локальной сети, и при условии подключения ее к всемирной сети 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' число^^ ^^ битовкоторую тоже принято записывать в десятично-побайтной записи, например:
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'а
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 - содержит помимо имен хостов несколько других информационных баз, но зато поддерживается только в рамках сети одной организации.
Протокол TCP/IP не обязательно требует наличия ethernet'ной се- ти. Вполне допустимы и другие физические носители, например:
Эти возможности обеспечиваются специализированными реализациями протоколы IP:
TCP/IP по спутниковой связи.
Теоретических трудностей организация связи TCP/IP через спутниковую антенну нет - все выглядит также, как при модемной связи по телефону. Технология примерно следующая: с антенны выходит высокочастотный сигнал, сигнал прогоняется сквозь спутниковый модем, из модема выходит поток данных по формату High Speed Interface - завести в компьютер его можно через скоростной порт, например V.435 (логически он ведет себя приблизительно как обычный последовательный порт), и со стороны хоста - поднимается протокол PPP. Естественно, на "том конце" предполагается та же схема подключения.
Вместо Хоста со скоростным портом, модем можно подключить к специализированному устройству - "Роутеру", внутри которого "зашит" протокол TCP/IP (PPP, Ether), и имеются порты Ethernet, и High Speed Interface. Достаточно популярны для таких целей роутеры "Cisco router", "NetBlaser".
Скорость, которую можно получить.
Скорость главным образом зависит от типа и качества линии связи, используемых модемов, и типа порта, в который этот модем воткнут.
Практические ограничения на скорость:
В итоге реальная скорость пересылки данных:
Конфигурирование 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
Стандартной сетевой файловой системой для 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)mountd
- обслуживание команд монтирования (он решает - разрешить/ не разрешить)
nfsd
- непосредственное обслуживание протокола NFS
biod
- кэширование NFS-чтений на клиенте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 раскомментируйте строки, запускающие демонов
Sun Solaris 1.1
В файл /etc/exports вставьте строки...
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. Тоже сетевая файловая система. Вот и все, что я могу про нее сказать.
Авто-монтировщик - демон, запущенный на NFS-клиенте. Этот демон монтирует удаленные каталоги "ПО ТРЕБОВАНИЮ" - т.е., когда к ним происходит обращение. Если к автоматически смонтированному каталогу долго не было обращений, автомонтировщик его автоматически отмонтирует.
Авто-монтирование поддерживается демоном automountd. Этот демон запускается при начальной загрузке операционной системы. Запускается он в командном файле /etc/rc2.d/S20nfs.client automountd (если все карты будут браться из NIS) или automountd -m -f /etc/auto.master (брать только локальные карты
Управляется automountd несколькими "картами" - файлами с описанием кого и куда надо монтировать. В простейшем случае нужно иметь три файла:
/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
Мастер-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
Конфигурирование 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:
Конфигурирование 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.
Подключите терминал к компьютеру с помощью нуль-модемного кабеля. Предполагается, что он у вас имеется, и разъемы на нем подходят. В большинстве случаев терминал подключается стандартным нульмодемным кабелем с разъемами 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 |
А также характеристики терминальной эмуляции:
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" - функции этой библиотеки позволяют работать с экраном безотносительно от типа терминала.
Для настройки на терминалы 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 знать необходимо, а какие необязательны.
Вот какие характеристики имеет смысл, и следует, задавать (А остальные, скорее всего, вообще необязательно указывать):
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:\
например, для vt100:
:up=\E[A:do=\E[B:nd=\E[C:le=\E[D:\
Например, для терминала d211-132:
:ti=^^FK:\ Включить 132 символьный экран
:te=^^FJ:\ Включить 80 символьный экран
Например, для терминала d460:
:gb=1324;\::\
:gs=^^FS11:ge=^^FS00:\
Если характеристики 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 | (есть или нет) |
Стек-машина понимает такие команды:
Условный оператор %? %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.
Для настройки на терминалы 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/xoff | xon |
xn | перевод строки после 80 колонок игнорируется | xenl |
bs | CTRL-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 |
te | cap завершение Дравер терминала 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 | переустановить терминал полностью в sane | rs3 |
УПРАВЛЕНИЕ АТРИБУТАМИ обеспечение атрибутовых возможностей.(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 | соответствующие им псевдорамочки > | |
mp | в режим защищенных символов | prot |
us | в режим UNDERLINE | smul |
ue | конец UNDERLINE | rmul |
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 | конец режима DELETE | rmdc |
РЕЖИМЫ КУРСОРА | ||
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 | убрать statusline | dsl |
ts | войти в statusline, в столбец # | tsl |
fs | вернуться из statusline | fsl |
ПРИНТЕР | ||
ps | распечатать экран | mc0 |
ff | (*) распечатать экран eject | ff |
pO | переключить на принтер # символов | mc5p |
po | включить принтер | mc5 |
pf | выключить принтер | mc4 |
РЕЖИМЫ ПЕРЕДАЧИ | ||
mm | в "meta" режим (8 й бит) | smm |
mo | конец "meta" режима | rmm |
ks | в режим "keypad-transmit" | smkx |
ke | конец режима "keypad-transmit" | rmkx |
cA | Enable alternate_ char set | |
SA | Start alternate_ char set | smam |
АВТОМАТИЧЕСКИЕ ГРАНИЦЫ | ||
MC | очистить левые и правые soft границы | mgc |
RA | выключить автоматические границы | |
ML | установить программную левую границу | smgl |
MR | установить программную правую границу | smgr |
wi | текущее окно в позициях #1 - 4 | wind |
Xonoff протокол | ||
SX | Turn on xon/xoff handshaking | smxon |
RX | Turn off xon/xoff handshaking | rmxon |
XF | X-off символ | xoffc |
XN | X-on символ | xonc |
ПРОГРАММИРОВАНИЕ | ||
LF | выключить программируемые метки | rmln |
LO | включить программируемые метки | smln |
pk | программировать фклавишу # в строку # | pfkey |
pl | программировать фклавишу # в выполнение строки # | pfloc |
px | программировать фклав # в xmit строки # | pfx |
pn | прогр метку # показать стр # | pln |
КОМАНДЫ НЕОПОЗНАНЫ | ||
eA | ||
cA | ||
rP | lp в режиме замены | rmp |
CC | Term. settable cmd char in prototype | cmdch |
ip | заполнители, вставляемые после ins-char | ip |
pc | символ-заполнитель (если не \0) | pad |
RF | послать следующий введенный символ (для ptys) | rfi |
КЛЮЧИ | ||
kb =\b | ключ BACKSPACE (забой) | kbs |
kh | ключ HOME | khome |
ku | ключ стрелка вверх | kcuu1 |
kr | ключ стрелка вправо | kcuf1 |
kl | ключ стрелка влево | kcub1 |
kd | ключ стрелка вниз | kcud1 |
КЛЮЧИ ДОПОЛНИТЕЛЬНОЙ КЛАВИАТУРЫ | ||
K1 | лев.верхн C1 | ka1 |
K2 | центр Home | kb2 |
K3 | прав.верхн C2 | ka3 |
K4 | лев.нижн. C3 | kc1 |
K5 | прав.нижн. C4 | kc3 |
ko=nd,up | доп.функц. клавиши, сверх {0-9},{.},{-} (см kn#) | |
КЛЮЧИ ФУНКЦИОНАЛЬНЫХ КЛАВИШ | ||
k0 | F1 | kf0 |
k1 | F2 | kf1 |
. . . и т.д. | ||
k9 | F10 | kf9 |
kA | F11 | kil1 |
kB | F12 | kcbt |
kC | F13 | kclr |
kD | F14 | kdch1 |
kE | F15 | kel |
k; | ключ f10 | km |
F1 | ключ f11 | kf11 |
F2 | ключ f12 | kf13 |
. . . и т.д. | ||
F9 | ключ f19 | kf19 |
FA | ключ f20 | kf21 |
. . . и т.д. | ||
FZ | ключ f45 | kf45 |
Fa | ключ f46 | kf46 |
. . . и т.д. | ||
Fr | ключ f63 | kf63 |
l1 | f1 если на ней написано не f1 | lf1 |
l2 | f2 если на ней написано не f2 | lf2 |
. . . и т.д. | ||
l7 | lf7 | |
la | f10 если нет f10 | lf10 |
ka | ключ CLEAR_ALL_TABS | ktbc |
kt | ключ CLEAR_TAB | kctab |
@0 | ключ FIND | |
@1 | ключ BEGINING | |
@2 | ключ CANCEL | |
@3 | ключ CLOSE | |
@4 | ключ CMD | |
@5 | ключ COPY | |
@6 | ключ CREATE | |
@7 | ключ END | |
@8 | ключ ENTER/SEND | |
@9 | ключ EXIT | |
kL | ключ DELETE_LINE | kdl1 |
kD | ключ DELETE_CHAR | kdch1 |
kM | ключ smlr или rmrl в режиме вставки | krmir |
kЕ | ключ END_OF_LINE | |
kS | ключ CLEAR_TO_END_OF_SCREEN | ked |
kH | HOME_DOWN | kll |
kN | NEXT_PAGE | knp |
kP | PREVIOUS_PAGE | kpp |
kF | SCROLL_FORWARD/DOWN | kind |
kR | SCROLL_BACKWARD/UP | kri |
kT | ключ SET TAB | khts |
%1 | HELP | |
%2 | MARK | |
%3 | MESSAGE | |
%4 | MOVE | |
%5 | NEXT_OBJECT | |
%6 | OPEN | |
%7 | OPTIONS | |
%8 | PREVIOUS_OBJECT | |
%9 | ||
%0 | REDO | |
&1 | REFERENCE | |
&2 | REFRESH | |
&3 | REPLACE | |
&4 | RESTART | |
&5 | RESUME | |
&6 | SAVE | |
&7 | SUSPEND | |
&8 | UNDO | |
&9 | SHIFT_BEGIN | |
&0 | SHIFT_CANCEL | |
*1 | SHIFT_COMMAND | |
*2 | SHIFT_COPY | |
*3 | SHIFT_CREATE | |
*4 | SHIFT_DELETE | |
*5 | SHIFT_DEL_LINE | |
*6 | SHIFT_SELECT | |
*7 | SHIFT_END | |
*8 | SHIFT_CLEAR_LINE | |
*9 | SHIFT_EXIT | |
*0 | SHIFT_FIND | |
#1 | SHIFT_HELP | |
#2 | SHIFT_HOME | |
#3 | SHIFT_INPUT | |
#4 | SHIFT_LEFT_ARROW | |
#5 | SHIFT_MESSAGE | |
%a | SHIFT... | |
. . . и т.д. | ||
%j | SHIFT_RESUME | |
!1 | SHIFT_SAVE | |
!2 | SHIFT_SUSPEND | |
!3 | SHIFT_UNDO |
Печатать, конечно, можно и так: 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
Вместе с системой накопления вывода на принтеры поставляются образцы интерфейсных программ. Они представляют собой 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 #Образцы интерфейсных программ
Для начала немного истории и общих мест. Представим, что нам нужно написать программу, которая будет работать в графическом режиме. Нам потребуется: опрашивать клавиатуру, снимать события и координаты мыши, рисовать на экране, ... Как это делалось на 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:
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
openwin
"Нормальные" Unix'ы:
PATH=/usr/bin/X11:$PATH XAPPLERESDIR=/usr/lib/X11/app-defaults
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
Если 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 поддерживается на двух уровнях:
Предполагается, что системные администраторы на нашей и на удаленной машине не забыли правильно описать и проконфигурировать систему UUCP.
Конфигурация нашей машины как UUCP клиента.
После этого наша машина сможет звонить на удаленные машины и посылать/забирать оттуда файлы. Для этого мы должны задать:
Эти данные задаются в нескольких конфигурационных файлах, которые должны лежать в каталоге /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-узлам:
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: sys: Удаленные машины port: Описание портов dial: Команды модемов
hostname fedf-uru # Наше собственное имя
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 modem1 # Обозначение порта из файла sys
type modem
device /dev/modem
speed 38400
dialer gvc1440 # Имя наборщика-модема в файле 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.
Итак, мы уже можем звонить на чужие машины, и пересылать на них файлы. Теперь нужно сделать, чтобы чужие машины (клиенты) могли звонить нам. Для этого нужно:
uupetrov:x:1002:14:UU Petrov:/var/spool/uucp:/usr/lib/uucp/uucico
выполнить команды:
pwconv passwd uupetrov
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, там есть режим прямой связи с любым портом.
c3:234:respawn:/usr/lib/saf/ttymon -g -d /dev/modem -l contty
Что где лежит в системе 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
предполагается, что читатель знаком с администрированием
в Unix и имеет доступ к справочным материалам, ибо
в данном руководстве описывается общий ПУТЬ настройки,
но не дается объяснений почему делается именно так.
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 |
UUPC/Relcom должен позвонить Unix-у, передать имя пользователя nuucp, пароль nuucp, после чего запустится uucico в MS-DOS и UNIX, они договорятся между собой, обменяются письмами и завершат сеанс связи. Теперь сказав mail в UNIX и bmail в MS-DOS Вы должны получить соответствующие письма.
Сперва несколько сокращений:
Распай модемного кабеля.
Стандартная 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 | ||||
---|---|---|---|---|---|---|
DB9 | DB25 | |||||
1 | 8 | <--- | 8 | CD | Carrier Detect | "Модем: соединен" |
2 | 3 | <--- | 3 | RxD | Receive Data | |
3 | 2 | ---> | 2 | TxD | Transmit Data | |
4 | 20 | ---> | 20 | DTR | DТЕ Ready | "Host: включен" |
5 | 7 | 7 | Signal ground | |||
6 | 6 | <--- | 6 | DSR | Data Set Ready | "Модем: включен" |
7 | 4 | ---> | 4 | RTS | Request To Send | "Host: я готов" |
8 | 5 | <--- | 5 | CTS | Clear To Send | "Модем: я готов" |
9 | 22 | <--- | 22 | RI | Ring 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.
Альтернативная картинка урезанного нуль-модема
Виды коннекторов
Распай нуль-принтерного кабеля "Laplink".
Распай кабеля под PLIP совпадает с тем, что используется широко известными коммуникационными программами pc-pc для MSDOS, и на- зывается "Laplink". 25папа <---> 25папа
Pin Name | Connect | pin - pin |
---|---|---|
GROUND | 25 - 25 | |
D0 | ERROR | 2 - 15 |
ERROR | D0 | 15 - 2 |
D1 | SLCT | 3 - 13 |
SLCT | D1 | 13 - 3 |
D2 | PAPOUT | 4 - 12 |
PAPOUT | D2 | 12 - 4 |
D3 | ACK | 5 - 10 |
ACK | D3 | 10 - 5 |
D4 | BUSY | 6 - 11 |
BUSY | D4 | 11 - 6 |
D5 | 7* | |
D6 | 8* | |
D7 | 9* | |
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 входы/выходы, к тому же с ограничителями. Хотя кабеля все равно паять надо правильно.
mkdir cyrfonts cp *.bdf cyrfonts
cd cyrfonts mkfontdir
xset +fp $HOME/cyfonts xset fp rehash
xterm -fn koi9x15 mailtool -fn koi6x10и т.д.
Чтобы русские фонты включались и находились по умолчанию.
FONTPATH=$HOME/cyrfonts: export FONTPATHЕсли судьба угораздила пользоваться C-Shell /bin/csh или tcsh
setenv FONTPATH $HOME/cyrfonts:
cp *.bdf /usr/lib/X11/fonts/misc cd /usr/lib/X11/fonts/misc mkfontdir xset fp rehash
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 совершенно собственный формат фонтов.
convertfont *.bdf
bldfamily
xset +fp `pwd` # Дополняем каталог, подключаем фонты. xset fp rehash # Чтоб сервер перезачитал каталоги с фонтами
Еще можно в файл 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
Если что-то не получилось.
LC_LOCALE=iso_8859_1 export LC_LOCALE LC_CTYPE=iso_8859_1 export LC_CTYPE LANG=iso_8859_1 export LANG
Если все равно что-то не получилось.
Пишите письма, господа. Но перед этим обратитесь к системному администратору.
Корневой каталог "/"
Каталог "/etc" - место для конфигурационных файлов
Каталог "/usr"
Ядро имеет настраиваемый параметр "ulimit" - максимальный размер создаваемого файла. Для пользовательского процесса его можно явным образом задать (в /etc/profile, например), командой ulimit
ulimit 1000000000 # максимальный размер файла 1Gb
Однако, по умолчанию ulimit установлен в параметрах конфигурации ядра, и грамотнее будет его заменить, и переконфигурировать ядро. Для этого, будучи суперюзером:
SFSZLIM = 0x1000000 ^^^^^^^ Сделать столько, сколько надо. Просто добавить ещe два нолика - получится 4 Гб. { description = "process file size soft limit" default = 0x1000000 ^^^^^^^^^ Здесь поправить точно так же range = "-1..0x7fffffff(+1)" tunable = true }
Задача: сконфигурировать 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). Мы должны локально поддерживать три карты описаний:
в /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. ;############## конец файла ###################################
Рекомендуются любые книги в твердой обложке импортных авторов в переводе на русский, ОСОБЕННО переводы книг издательства 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 т.р.
Очень, очень достойная книжка. Помогает почти от всех
болезней.
Команды, которые обычно и сами по себе установлены.
Команды, которые возможно захочется установить.
Команды GVC-1440
Регистры
Разобраться стоит с этими характеристиками: Alias - где то должна лежать расшифровка. а сервер будет ее подставлять. Вот только где ?
Нужно задавать так:& - & " - " > - > < - < >> - >> << - << (C) - ╘ или ╘ (R) - ╝ - - - - <= - <= >= - >= Extra space -<title> Заголовок всего документа </title>
Пример | Источник |
---|---|
|
<ul> <li> Одна позиция <li> Другая позиция </ul> |
Пример | Источник |
---|---|
|
<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>
Programm. Программный текст fixed
<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
Так подкладывают 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 |
![]() |
Клиент открывает tcp соединение с хостом www.host.com на порт (обычно 80) и говорит туда GET /local/url/file/name.html HTTP/1.0
Обратно вываливается ответ сервера:
$ telnet www 80 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. GET /index.html HTTP/1.0И потом два раза нажмите на Enter
/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
Примеры:
<!--#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:
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
Вызывается одна и та же программа, но ей передается 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'ами:
Пример
Источник
<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"
Пример
Источник
<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
Пример
Источник
<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
order allow,deny allow from all deny from polimos.ras.ru