Работа с пользователями


Вне зависимости от того, много у вас пользователей или нет, важно понять проблему работы с пользователем Linux. Даже если вы единственный пользователь вы должны иметь различные account для root и для себя. Каждый человек, использующий систему, должен иметь свой собственный account (быть индивидуально зарегистрированным в системе). Редко может быть целесообразно, чтобы несколько человек входили в систему под одним именем. Здесь дело не только в безопасности, но account используется для идентификации пользователя в системе. Необходимо иметь возможность проследить, кто что делает.



Работа в фоне и ликвидация работ


Давайте начнем с простого примера. Команда yes - вроде бы бесполезная команда, посылающая бесконечный поток "y" на стандартный выход. (Но это очень полезно. Если вы направите через конвейер эти "y" на вход другой команды, которая требует ответов yes и "no" на вопросы, поток "y" даст подтверждение на все вопросы). Попробуйте.

/home/larry# yes y y y y y

Это закончится в бесконечности. Вы можете убить процесс, нажав клавиши прерывания; обычно это ctrl-C. Чтобы нас больше не раздражал поток нескончаемых "y", перенаправим его в /dev/null. Как вы помните, /dev/null выступает в качестве "черной дыры" для данных. В ней исчезают бесследно любые данные.

/home/larry# yes > /dev/null

Ох, теперь намного лучше. Ничего не печатается, но и подсказка shell не появляется. Это потому, что программа продолжает работать, посылать "y" в /dev/null. Снова нажмите клавиши прерывания, чтобы прекратить это.

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

Чтобы переместить процесс в фоновый режим, необходимо после команды символ ``&''.

/home/larry# yes > /dev/null &; [1] 164 /home/larry#

Вы видите, что мы вновь получили подсказку. Но что значит ``1 164''? И выполняется ли команда yes на самом деле?

``1'' представляет номер работы для программы yes. Shell приписывает номер каждой выполняемой работе. Поскольку "yes" - одна единственная работа, которая в данный момент выполняется, ей присвоен номер 1. ``164'' - идентификатор процесса (PID); это номер, присвоенный системой работе. Любой из этих номеров можно использовать при обращении к работе, как это будет показано в дальнейшем.

Теперь мы имеем выполняемый процесс yes в фоновом режиме, непрерывно посылающий поток "y"-ков в /dev/null. Чтобы проверить состояние этого процесса, используйте внутреннюю команду shell - jobs.

/home/larry# jobs [1]+ Running yes >/dev/null & /home/larry#

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

Для завершения работы используйте команду kill. Эта команда может брать в качестве аргумента как номер работы, так и идентификатор процесса. Это была работа номер 1, так что используя команду

/home/larry# kill %1

мы ликвидируем работу. При идентификации работы по номеру необходимо впереди ставить символ процента (``%'').

Теперь, после ликвидации, мы можем снова использовать jobs для проверки:

/home/larry# jobs [1]+ Terminated yes >/dev/null /home/larry#

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



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

/home/larry# kill 164 эквивалентна /home/larry# kill %1

Вам не надо использовать ``%'', когда вы обращаетесь к работе по номеру идентификатора процесса.



Работы и процессы


Управление работами (job control) это возможность, которую предоставляют многие оболочки, включая (Bash и Tcsh). Управление работами (прим. переводчика: job - работа в добрые старые времена страшноватых IBM/360 переводилось как "задание", но лучше это не тащить в сегодня) позволяет управлять множеством команд или работ одновременно. Прежде, чем вы закопаетесь значительно глубже, следует поговорить о процессах.

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

/home/larry# ps PID TT STAT TIME COMMAND 24 3 S 0:03 (bash) 161 3 R 0:00 ps /home/larry#

PID (Process IDentificator), перечисленные в первой колонке, это неповторяющиеся числа приписанные всем идущим процессам.

Последний столбец (COMMAND) дает имя выполняемой команды. Здесь мы видим только процессы, которые инициировал Larry. (В системе выполняется и много других процессов. Команда ``ps -aux'' может выдать перечень всех происходящих в данный момент процессов).

В выведенном перечне указаны bash (это оболочка, используемая Larry) и сама команда ps. Как вы видите, bash выполняется параллельно с командой ps. bash выполнит ps, когда Larry введет команду. После окончания ps (после того, как выдана таблица процессов), управление возвращается к процессу bash, который выдает на экран подсказок готовности к приему новых команд.

Выполняемый процесс известен shell как работа. Термины процесс и работа взаимозаменяемы. Однако процесс обычно воспринимается, как "работа", когда речь идет об управлении работами (job control)- свойстве shell, позволяющем уделять внимание нескольким независимым работам.

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



Различия между Linux и другими операционными системами


Важно понимать различия между Linux и другими операционными системами, такими как MS-DOS, OS/2, а также другими реализациями UNIX для персональных компьютеров. Прежде всего, должно быть ясно, что Linux может счастливо сосуществовать с другими операционными системами на той же машине. Как мы увидим, существуют даже способы взаимодействия операционных систем.



Разношерстные задачи


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



Rcфайлы в сети


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

Здесь мы собираемся описать rc-файлы, используемые при настройке TCP/IP. Файлов два: rc.inet1 и rc.inet2. rc.inet1 используется для настройки базовых сетевых параметров (таких как IP адреса и маршрутизация) и rc.inet2 запускает TCP/IP демонов (telnetd, tftpd и т.д.).

Многие системы объединяют оба этих файла в один, обычно называемый rc.inet или rc.net. Имена, данные вашим rc-файлам роли не играют, лишь бы они выполняли нужные функции и выполнялись во время загрузки программой init. Чтобы это обеспечить, возможно вам потребуется подредактировать /etc/inittab , чтобы выполнить соответствующие rc-файлы. В худшем случае вам придется создать rc.inet1 и rc.inet2 файлы заново и добавить информацию из /etc/inittab.

Как мы говорили, rc.inet1 настраивает базовый сетевой интерфейс. Это включает ваше IP, сетевой адрес и таблицу маршрутизации (routing table) для вашей сети. Таблицы маршрутизации используются для маршрутизации входящих и исходящих сетевых дейтаграм (datagrams) на другие машины. Во многих простых настройках вы имеете три маршрута: один - для посылки пакетов своей собственной машине, другой - для посылки пакетов на другие машины вашей сети, третий - для посылки пакетов на машины, находящиеся за пределами вашей сети (через шлюзовую машину). Есть две программы для настройки этих параметров: ifconfig и route. Обе обычно находятся в /etc или /sbin.

ifconfig используется для настройки интерфейса устройств сети с необходимыми для функций параметрами, такими как IP адрес, маска сети, бродкаст адрес и т п. route используется для создания и модификации таблицы маршрутизации.

Для многих случаев файл rc.inet1 подойдет в том виде, в каком он здесь приведен. Вы, разумеется, должны будете отредактировать его под свою систему. Не используйте без изменения IP и сетевой адреса, приведенные здесь в качестве примера, они соответствуют действительной машине в Internet.

#!/bin/sh # This is /etc/rc.d/rc.inet1 -- Configure the TCP/IP interfaces # First, configure the loopback device HOSTNAME=`hostname` /etc/ifconfig lo 127.0.0.1 # uses default netmask 255.0.0.0 /etc/route add 127.0.0.1 # a route to point to the loopback device # Next, configure the ethernet device. If you're only using # loopback or SLIP, comment out the rest of these lines. # Edit for your setup. IPADDR="128.253.154.32" # REPLACE with YOUR IP address NETMASK="255.255.255.0" # REPLACE with YOUR netmask NETWORK="128.253.154.0" # REPLACE with YOUR network address BROADCAST="128.253.154.255" # REPLACE with YOUR broadcast address, # if you have one. If not, leave blank # and edit below. GATEWAY="128.253.154.1" # REPLACE with YOUR gateway address! /etc/ifconfig eth0 ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST} # If you don't have a broadcast address, change the above line to: # /etc/ifconfig eth0 ${IPADDR} netmask ${NETMASK} /etc/route add ${NETWORK} # The following is only necessary if you have a gateway; that is, # your network is connected to the outside world. /etc/route add default gw ${GATEWAY} metric 1 # End of Ethernet Configuration

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

rc.inet2 запускает различные сервера, используемые TCP/IP. Наиболее важный среди них - inetd. inetd сидит в фоне и присматривает за различными сетевыми портами. Когда машина пытается связаться с конкретным портом (например, со входным портом telnet), inetd создает новую копию соответствующего демона для этого порта (в случае порта telnet inetd запускает in.telnetd). Это проще, чем выполнять много независимых демонов (т.е. индивидуальных копий telnetd, ftpd и т.п.) - inetd запускает демонов только при возникновении необходимости.

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

Приведенный ниже пример rc.inet2 запускает лишь самый минимум серверов. Есть и другие серверы - многие из которых обслуживают настройки NFS. Пытаясь установить TCP/IP на вашей системе, обычно лучше всего начать с минимальной конфигурации и добавлять более сложные куски, (такие, как NFS), когда у вас уже что-то работает.

Обратите внимание, что в нижеприведенном файле мы предполагаем, что все сетевые демоны находятся в /etc. Ну и как обычно отредактируйте этот файл под свою конфигурацию.

#! /bin/sh # Sample /etc/rc.d/rc.inet2 # Start syslogd if [ -f /etc/syslogd ] then /etc/syslogd fi # Start inetd if [ -f /etc/inetd ] then /etc/inetd fi # Start routed if [ -f /etc/routed ] then /etc/routed -q fi # Done!

Среди многих дополнительных серверов, которые вы можете запустить в rc.inet2 - named. named - это сервер имен. Он отвечает за перевод (локальных) IP адресов в имена и наоборот. Если у вас где-нибудь в сети нет сервера имен или вы сами хотите снабжать локальными именами машин другие машины вашего домена, использование named необходимо. (Но для большинства случаев в этом нет необходимости). Настройка named достаточно сложна и требует предварительного планирования. Мы отсылаем заинтересованных читателей к хорошим книгам по TCP/IP.



Редактирование еще одного файла


Для того, чтобы отредактировать другой файл, используйте команду :e. Например, чтобы прекратить редактирование файла test и перейти к редактированию файла foo, используйте команду

____________________________________________________________________ |COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY. | |~ | |~ | |~ | |~ | |~ | |:e foo_____________________________________________________________|

Если вы используете :e без предварительного сохранения файла, то сначала вы получите сообщение об ошибке.

____________________________________________________________________ |No_write_since_last_change_(":edit!"_overrides)____________________|

которое просто означает, что vi не желает редактировать другой файл, пока не будет сохранен первый. В этот момент вы можете использовать :w, чтобы сохранить исходный файл, а затем использовать :e или использовать команду

____________________________________________________________________ |COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY. | |~ | |~ | |~ | |~ | |~ | |:e! foo_____________________________________________________________|

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



Руководства проекта LDP (Linux Documentation Project)


В рамках проекта The Linux Documentation Project (LDP) существует и разрабатывается множество руководств и другой документации для Linux, включая Руководство (информация, содержащаяся в команде "man"). Эти руководства находятся в различной стадии готовности и мы с благодарностью принимаем любую помощь по их правке, обновлению, совершенствованию. Если у вас есть вопросы по поводу LDP, пожалуйста свяжитесь с Matt Welsh mdw@sunsite.unc.edu .

Эту книгу на английском языке можно получить через anonymous FTP из многих архивов Linux, включая sunsite.unc.edu в директории /pub/Linux/docs/LDP. Ряд дистрибуторов продает печатные копии этой книги. В будущем вы сможете найти руководства LDP на полках ваших книжных магазинов. (прим. переводчика: за рубежом, в той же Америке, это будущее уже давно наступило).

Linux Installation and Getting Started, by Matt Welsh

Новое руководство пользователя по Linux, содержащее всю необходимую информацию для начала работы. Может так случиться, что вы держите эту книгу в руках.

The Linux System Administrators' Guide, by Lars Wirzenius

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

The Linux Network Administrators' Guide, by Olaf Kirch

Подробное и полное руководство по сетевой работе под Linux, включая TCP/IP, UUCP, SLIP и т.п. Эта книга - очень хорошее чтение. Она содержит много ценной информации по многим аспектам, проясняет многие сложные вопросы настройки и эксплуатауции сети.

The Linux Kernel Hackers' Guide, by Michael Johnson

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

Приведенные ниже документы входят в проект LDP на момент перевода

Programmer's Guide
User's Guide



Сценарии shell


прим. переводчика: применительно к программам этого типа в англоязычной литературе последнее время преимущественно используют слово script - "сценарий", хотя то, что под этим имеется в виду во многих книгах на русском называется "традиционно" как "программа на shell" или "командный файл"

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

/home/larry# cat chapter1 chapter2 chapter3 > book /home/larry# wc -l book /home/larry# lp book

об'единяют файлы, содержащие главы книги: chapter1, chapter2, chapter3 и помещают результат в файл book. Затем подсчитывается число строк в книге (в файле book) и отображается на дисплее и, наконец, печатается командой lp.

Вместо введения каждый раз этих команд, вы можете собрать их в один сценарий (командный файл). Сценарии shell мы кратко опишем в Разделе 3.13.1. А сценарий, который выполнит вышеприведенные команды, будет выглядеть следующим образом

#!/bin/sh # A shell script to create and print the book cat chapter1 chapter2 chapter3 > book wc -l book lp book

Если этот сценарий будет помещен в файл makebook, то вы можете просто использовать далее команду

/home/larry# makebook

которая выполнит все команды сценария. Сценарии shell - это обычные текстовые файлы, которые вы можете создавать с помощью редактора вроде emacs или vi. (vi обсуждался в Разделе 3.12)

Давайте посмотрим на этот сценарий. Первая строка ``#!bin/sh/'' говорит о том, что этот файл есть сценарий и сообщает shell, как выполнить сценарий. В данном случае необходимо передать сценарий для выполнения команде bin/sh/, где bin/sh/ - сама программа shell. Почему это важно? В большинстве систем UNIX bin/sh/ - это shell Баурновского типа, например bash. Инициируя работу сценария shell выполняется, используя bin/sh/, при этом мы гарантируем, что сценарий будет выполняться именно под shell Баурновского типа (а не, скажем, под C shell). Этот сценарий будет выполняться под shell Баурна, даже если вы используете Tcsh (или какой-то другой C shell) как свою рабочую оболочку.

Вторая строка представляет из себя комментарий. Комментарии начинаются символом ``#'' и могут продолжаться до конца строки - они игнорируются shell и могут использоваться программистом для пояснений.

Остальные строки сценария - обычные команды в том виде, в каком бы вы их вводили прямо на выполнение. Shell читает каждую строку сценария и выполняет эту строку, как будто вы ввели эту строку в ответ на подсказку shell.

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

/home/larry# chmod u+x makebook

чтобы дать самому себе разрешение на выполнение shell-сценария makebook.



Сервер Информационных Технологий


www.citforum.ru | www.cit-forum.com

Основные разделы

Новости компаний Желтые страницы Новости сервера Выставки и конференции Финансовые новости Internet-маркетинг Internet-технологии Сетевые технологии Базы данных Операционные системы Программирование Аппаратные платформы Автоматизированные технологии финансовых рынков Автоматизация учрежденческой деятельности FTP-архив Поиск Статистика сервера

Сервер поддерживается Центром Информационных Технологий
E-mail: info@citforum.ru

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



Сетевая работа по протоколу TCP/IP


Linux поддерживает полный набор сетевых протоколов TCP/IP (Transport Control Protocol/Internet Protocol). TCP/IP стал наиболее успешно используемым механизмом работы в компьютерных сетях всего мира. С помощью Linux и карт Ethernet вы можете связать в локальную сеть ваши машины или (при соответствующем подключении) к Internet - всемирной сети TCP/IP.

Сцепить несколько UNIX-машин в небольшую локальную сеть (LAN) просто. Для этого требуется контроллер Ethernet в каждой машине, соответствующие кабели и еще некоторое сопутствующее оборудование. Или, если ваша фирма или университет имеют выход в Internet, вы можете просто к этой сети подцепиться со своей Linux-машиной.

Текущая реализация TCP/IP и соответствующие протоколы для Linux называются ``NET-2''. Это не имеет отношения к так называемому релизу NET-2 для BSD UNIX. В данном контексте ``NET-2'' означает вторую реализацию TCP/IP для Linux.

Linux NET-2 также поддерживает протокол SLIP (Serial Line Internet Protocol). SLIP позволяет вам получить вход в Internet с помощью модема. Если ваша фирма или университет имеет выход по SLIP, вы можете выйти на SLIP-сервер и войти со своей машины в Internet по телефонной линии. И наоборот, если ваша Linux-машина имеет подключение по Ethernet к Internet, ваш Linux может исполнять функции SLIP-сервера.

Для получения более полной информации по установке TCP/IP под Linux, мы настоятельно советуем прочитать Linux NET-2 HOWTO, которое можно получить через FTP с sunsite.unc.edu. NET-2 HOWTO - это полное руководство по конфигурированию TCP/IP, включая связи по Ethernet и SLIP под Linux. The Linux Ethernet HOWTO описывает конфигурирование (настройку) различных драйверов карт Ethernet для Linux. Можно также воспользоваться The Linux Network Administrator's Guide из проекта по документированию Linux - LDP (Linux Documentation Project). Более подробно про эти документы смотрите в Приложении A.

Интересна также книга: Craig Hunt TCPIP Network Administration/. Она содержит исчерпывающую информацию по использованию и настройке TCP/IP для систем UNIX.



Сетевая работа с UUCP


UUCP (UNIX-to-UNIX Copy) - старейший механизм, используемый для передачи информации между системами UNIX. При использовании UUCP, системы UNIX созваниваются друг с другом (используя модем) и передают почтовые сообщения, новости, файлы и т.п. Если у вас нет TCP/IP или SLIP доступа, вы можете использовать для связи с миром UUCP. Большая часть программ, связанных с почтой и новостями (смотрите Разделы 5.5 и 5.6) может быть настроена на использование UUCP для передачи информации на другие машины. Действительно, если поблизости есть узел Internet, вы можете иметь доступ к почте Internet, получая ее с узла по UUCP.

Книга Linux Network Administrator's Guide содержит исчерпывающую информацию по настройке и использованию UUCP под Linux. Кроме того, по anonymous FTP sunsite.unc.edu, доступна Linux UUCP HOWTO, которая может быть весьма полезна. Другой источник информации по UUCP - книга Tim O'Reilly и Grace Todino Managing UUCP and USENET. Дополнительно смотрите Приложение A.



ShellСценарии инициализации


В дополнение к shell-сценариям, которые создаете вы, существует множество сценариев, которые использует сам shell для своих целей. Наиболее важными среди них являются сценарии инициализации, которые автоматически выполняются shell при вашем входе в систему.

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

Как Bash, так и Tcsh делают различие между начальным shell (вызываемым при входе в систему) и прочими вызовами shell. Начальный shell вызывается в момент входа пользователя в систему; часто это единственный экземпляр shell, который вы используете. Но если вы вызываете shell из другой программы, такой какvi, вы тем самым запускаете новый (экземпляр) shell. Кроме того, когда вы запускаете на выполнение shell-сценарии, вы автоматически инициируете новый экземпляр shell.

Файлы инициализации, используемые в Bash: /etc/profile (устанавливается системным администратором, выполняется всеми экземплярами начальных пользовательских bash, вызванными при входе пользователей в систему), $HOME/.bash_profile (выполняется при входе пользователя) и $HOME/.bashrc (выполняемый всеми прочими не начальными экземплярами bash). Если .bash_profile отсутствует, вместо него используется .profile.

Tcsh использует следующие сценарии инициализации: /etc/csh.login (выполняется всеми пользовательскими tcsh в момент входа в систему), $HOME/.tcshrc (выполняется во время входа в систему и всеми новыми экземплярами tcsh) и $HOME/.login (выполняется во время входа после .tcshrc). Если .tcshrc отсутствует, вместо него используется .cshrc.

Для того, чтобы лучше понять функции этих файлов, вам следует больше узнать о shell. Программирование на shell сложный вопрос, далеко выходящий за рамки этой книги. Дополнительную информацию можно получить из Руководства на bash и tcsh.



Символические связи


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

Команда ln -s создаст символическую ссылку на указанный файл. Например, если мы воспользуемся командой

# ln -s foo bar

мы создадим символьную ссылку bar, указывающую на файл foo. Если теперь используем команду ls -i, то увидим, что два файла имеют различные индексы.

# ls -i foo bar 22195 bar 22192 foo #

Однако, используя ls -l, мы видим, что файл bar имеет символический указатель на foo.

# ls -l foo bar lrwxrwxrwx 1 root root 3 Aug 5 16:51 bar -> foo -rw-r--r-- 1 root root 12 Aug 5 16:50 foo #

При символической ссылке не используются биты прав доступа (они всегда отображаются, как rwxrwxrwx). Вместо этого, права доступа к файлу, полученному символической ссылкой, определяются правами доступа к файлу, на который он ссылается (в нашем примере определяется правами файла foo).

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

Ссылки используются во многих местах системы Linux. Символические ссылки особенно важны для образов разделяемых библиотек в /lib. Смотри дополнительную информацию в Разделе 4.7.2.



Системные характеристики


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

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

Linux достаточно хорошо совместим с рядом стандартов для UNIX (насколько можно говорить о стандартизации UNIX) на уровне исходных текстов, включая IEEE POSIX.1, System V и BSD. Он создавался имея в виду такую совместимость. Поэтому, скорее всего, вы найдете в Linux черты, присущие многим UNIX-системам. Большинство свободно распространяемых по сети Internet программ для UNIX может быть откомпилировано для LINUX практически без особых изменений. Кроме того, все исходные тексты для Linux, включая ядро, драйверы устройств, библиотеки, пользовательские программы и инструментальные средства распространяются свободно.

Другие специфические внутренние черты Linux включают контроль работ по стандарту POSIX (используемый оболочками, такими как csh и bash), псевдотерминалы (pty), поддержку национальных и стандартных клавиатур динамически загружаемыми драйверами клавиатур.

Linux также поддерживает виртуальные консоли (virtual consoles), которые позволяют "переключать экраны" на консоли в текстовом режиме. Те, кто пользовался программой "screen", найдут подобное в реализации виртуальной клавиатуры Linux.

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

Linux поддерживает различные типы файловых систем для хранения данных. Некоторые файловые системы, такие как файловая система ext2fs, были созданы специально для Linux. Поддерживаются также другие типы файловых систем, такие как Minix-1 и Xenix. Реализована также файловая система MS-DOS, позволяющая прямо обращаться к файлам MS-DOS на жестком диске. Поддерживается также файловая система ISO 9660 CD-ROM для работы с дисками CD-ROM. Подробнее о файловых системах говорится в Главах 2 и 4.

Linux обеспечивает полный набор протоколов TCP/IP для сетевой работы. Это включает драйверы устройств для многих популярных карт Ethernet, SLIP (Serial Line Internet Protocol, обеспечивающие вам доступ по TCP/IP при последовательном соединении), PLIP (Parallel Line Internet Protocol), PPP (Point-to-Point Protocol), NFS (Network File System), и так далее. Поддерживается весь спектр клиентов и услуг TCP/IP, таких как FTP, telnet, NNTP и SMTP. О сетевых проблемах мы будем говорить в Главе 5.

Ядро Linux сразу создано с учетом специального защищенного режима для процессоров Intel 80386 и 80486. В частности, Linux использует парадигму описания памяти в защищенном режиме и другие новые свойства процессоров. Любой знакомый с защищенным режимом процессора 80386 знает, что этот чип проектировался для многозадачных систем вроде UNIX (или Mulics). Linux использует эти свойства.

Ядро Linux поддерживает загрузку только нужных страниц. То есть с диска в память загружаются те сегменты программы, которые действительно используются. Возможно использование одной страницы, физически один раз загруженной в память, несколькими выполняемыми программами.

Для увеличения объема доступной памяти Linux осуществляет также разбиение диска на страницы: то есть на диске может быть выделено до 256 Мбайт "пространства для свопинга" (swap space). (Swap space не совсем подходящее имя, в Linux в область своппинга выгружается не весь процесс, а только отдельные его части, в которых нет необходимости). Когда системе нужно больше физической памяти, то она с помощью свопинга выводит неактивные страницы на диск. Это позволяет выполнять более объемные программы и обслуживать одновременно больше пользователей. Однако свопинг не исключает наращивания физической памяти, поскольку он снижает быстродействие, увеличивает время доступа.

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

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

Для обеспечения отладки ядро Linux выдает дампы памяти для "посмертного" анализа. Использование дампа и динамических отладчиков позволяет определить причины краха программы.



Скачивание файлов


Перед скачиванием файлов следует обратить внимание на

Включите вывод хэш-меток. Хэш-метки выводятся на экран как передаваемые файлы; они информируют о переданных объемах и что передача не зависла (так что вы не будете сидеть минут 20, полагая, что вы все еще скачиваете файл). В общем случае хэш-метка появляется, как символ решетки (#), который печатается через каждые 1024 или 8192 переданных байт, в зависимости от системы.

Включение хэш-меток осуществляется командой

ftp> hash Hash mark printing on (8192 bytes/hash mark). ftp>

Определите тип файла, который вы скачиваете. FTP различает два типа файлов: бинарные (двоичные) и текстовые. Большинство файлов, которые вы будете скачивать - бинарные. Это программы, скомпрессированные файлы, архивированные файлы и т.п. Но есть немало и текстовых файлов (вроде README).

Почему тип файла имеет значение? Только потому, что на некоторых системах (таких, как MS-DOS), определенные символы текстового файла, вроде возврата каретки, должны быть преобразованы так, чтобы файл был читаем. А при передаче бинарных файлов никаких преобразований не осуществляется - файл просто передается байт за байтом.

Команды bin и ascii используются для перевода соответственно в бинарный режим передачи файлов и текстовый соответственно. Если возникают сомнения - используйте бинарный режим. Если вы попытаетесь передать бинарный файл в текстовом режиме, файл будет испорчен при передаче до полной бесполезности. (Это одна из популярнейших ошибок на начальных этапах использования FTP). Но разумеется, вы можете использовать текстовый режим для передачи нормальных текстовых файлов (чьи имена часто заканчиваются на .txt).

Например, мы скачиваем файл README который, скорее всего, текстовый так что мы используем команду

ftp> ascii 200 Type set to A. ftp>

Установите свой местный каталог. Ваш местный каталог, это каталог вашей системы, куда вы хотите в конечном счете скачать файлы. В то время как команда cd меняет каталог удаленной машины (машины, на которую вы вошли по FTP), команда lcd меняет местный (l-local) каталог.

Например, чтобы установить местный каталог /home/db/mdw/tmp, используйте команду

ftp> lcd /home/db/mdw/tmp Local directory now /home/db/mdw/tmp ftp>

Теперь вы действительно готовы скачивать файлы. Команда

get <remote-name> <local-name>

используется именно для этого, где <remote-name> имя файла на удаленной машине, а <local-name> - имя, которое вы хотите дать файлу на вашей машине. <local-name> - необязательный аргумент; по умолчанию имя местного файла то же, что и у скачиваемого файла. Но, если например вы скачиваете файл README, и у вас уже есть файл с именем README в этом каталоге, вам следует дать другое имя для <local-filename>, чтобы не затереть существующий. Например, для скачивания файла README мы просто используем

ftp> get README 200 PORT command successful. 150 ASCII data connection for README (128.84.181.1,4527) (1433 bytes). # 226 ASCII Transfer complete. local: README remote: README 1493 bytes received in 0.03 seconds (49 Kbytes/s) ftp>



Slackware на CDROM


Slackware можно также получить на CD-ROM. Большинство CD-ROM со Slackware просто содержат копии файлов, которые появляются в архивах FTP-серверов. Поэтому, если у вас есть CD-ROM со Slackware, значит у вас есть все необходимые файлы. Вы должны будете создать boot и root дискеты из файлов, взятых с CD-ROM. Смотрите Раздел 2.1.4.2.1.

Прежде всего следует решить, какие образы дисков boot и root будут использованы. Они должны быть на CD-ROM. Ниже мы опишем, как создавать эти дискеты.



Соединение по dip при динамическом IP адресе


Если ваш SLIP-сервер выдает IP адреса динамически, то вы, разумеется, не знаете заранее свой адрес, поэтому вы не можете включить его в /etc/hosts. (Между тем вы должны включить запись для своего хоста с адресом обратной связи (loopback address) 127.0.0.1.)

Многие SLIP-сервера выдают ваш IP адрес (также как и адрес сервера) во время соединения. Например, один тип SLIP-сервера выдает такое сообщение:

Your IP address is 128.253.154.44. Server address is 128.253.154.2.

dip может перехватить эти номера с выхода сервера и использовать их для настройки SLIP-устройств.

Смотрите выше Раздел 5.3.3.1 относительно информации по настройке различных файлов для TCP/IP при использовании SLIP. Ниже мы объясняем, как настраивать dip для связи со SLIP-сервером.



Соединение по dip при статическом IP адресе


Если вы используете SLIP-сервер, выдающий статические IP адреса, вы можете включить записи о ваших IP адресе и хост-имени в /etc/hosts. А также настроить файлы, перечисленные в предыдущем разделе: rc.inet2, host.conf и resolv.conf. Также настроить rc.inet1, как описано выше. Если вы используете для связи со SLIP-сервером dip, то в файле rc.inet1 для последовательного порта команды ifconfig и route вызывать не надо, dip вызовет эти команды после установления соединения. (Если же вы, используете slattach, вам будет необходимо включить команды ifconfig и route в rc.inet1 для SLIP - смотрите ниже).

dip должен настраивать соответствующим образом таблицы маршрутизации для SLIP когда вы связываетесь. Однако, в некоторых случаях поведение dip может быть неправильным для ваших настроек и вам надо будет вручную выполнять команды ifconfig или route после того, как dip свяжется с сервером (это легче всего сделать из сценария shell, который содержит вызов dip, и немедленно выполнить соответствующие команды настройки). Ваш шлюз, это в большинстве случаев адрес SLIP-сервера. Вы можете знать этот адрес заранее или адрес шлюза будет выведен SLIP-сервером при установлении связи. Сценарий работы dip (описанный ниже) может также получать эту информацию от SLIP-сервера.

ifconfig может потребовать аргумента "pointopoint", если dip не настроил правильно интерфейс. Например, если адрес вашего SLIP-сервера 128.253.154.2, а ваш IP-адрес 128.253.154.32, вам может потребоваться выполнить команду под root

ifconfig sl0 128.253.154.32 pointopoint 128.253.154.2

после связи по dip.

Обратите внимание, что имена SLIP-устройств, используемые командами ifconfig и route - sl0, sl1 и т.д.

В Разделе 5.3.4 мы объясним, как настраивать dip для связи со SLIP-сервером.



Соединение по slattach при статическом IP адресе


Если у вас выделенная линия или кабель, идущий прямо к SLIP-серверу, то нет необходимости использовать dip для инициализации связи. Вместо этого может быть использована команда slattach. В этом случае ваш файл /etc/rc.inet1 должен выглядеть примерно так:

#!/bin/sh IPADDR="128.253.154.32" # Replace with your IP address REMADDR="128.253.154.2" # Replace with your SLIP server address # Modify the following for the appropriate serial device for # the SLIP connection: slattach -p cslip -s 19200 /dev/ttyS0 /etc/ifconfig sl0 $IPADDR pointopoint $REMADDR up /etc/route add default gw $REMADDR

slattach выделяет первое свободное SLIP-устройство (sl0, sl1, и т.д.) определенной последовательной линии.

Обратите внимание, что первый параметр команды slattach - это используемый SLIP-протокол. В настоящее время возможны только значения slip и cslip. slip - это обычный SLIP, как и следовало ожидать, а cslip - это SLIP с компрессией заголовков дейтаграмм. В большинстве случаев вам следует использовать cslip; однако, если у вас с ним возникают проблемы, попробуйте slip.

Если у вас более одного SLIP-интерфейса, то вы должны принять решения относительно маршрутизации. Вы должны решить, какие маршруты добавить, и эти решения могут быть сделаны только на базе действительного протокола связей вашей сети. Здесь вам могут помочь, как книга по TCP/IP, так и Руководство.



Сохранение файлов и выход из vi


Для выхода из vi без внесения изменений в ранее существовавший файл используйте команду :q!.

Когда вы напечатаете ``:'', курсор переместится на последнюю строку экрана, поскольку вы перейдете в режим последней строки.

____________________________________________________________________ |COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY. | |~ | |~ | |~ | |~ | |~ | |:__________________________________________________________________|

В режиме последней строки могут выполняться некоторые расширенные команды. Одна из них - q!, которая позволяет выйти из vi без записи. Команда :wq сохраняет (записывает) файл, а затем выходит из vi. Команда ZZ (в режиме команд, без `:'') эквивалентна :wq. Помните, что вы должны нажать enter после набора команды в режиме последней строки. Если хотите записать файл без выхода из /vi, используйте просто :w.



Список BBS для Linux


Приведенний ниже список перечисляет электронные доски объявлений (bulletin board systems - BBS), содержащих программное обеспечение по Linux.

Этот список поддерживает Zane Healy . Если вы знаете или ведете BBS, не включенные в данный список свяжитесь с ним.

В Linux-сообщество входят не только пользователи Internet. В действительности, большинство Linux пользователей не имеет (пока) доступа к Internet. Так что очень важно, что BBS продолжают поддерживать Linux по всему миру.



Список Linux FTPсерверов


Таблица C.1 - это список наиболее известных архивных FTP-серверов, которые хранят пакеты программ для Linux. Имейте в виду, что многие другие сервера имеют зеркальные отображения многих из этих архивов, так что скорее всего вы найдете нужное вам на серверах, отсутствующих в этом списке.

tsx-11.mit.edu, sunsite.unc.edu и nic.funet.fi - это "дом родной" для Linux, где вы можете найти большинство новых программ. Большинство других серверов из списка зеркально отображают некоторую комбинацию из этих трех. Для уменьшения сетевого трафика выбирайте сервер, который ближе к вам географически.

Имя сервера IP адрес Каталог tsx-11.mit.edu 18.172.1.2 /pub/linux sunsite.unc.edu 152.2.22.81 /pub/Linux nic.funet.fi 128.214.6.100 /pub/OS/Linux ftp.mcc.ac.uk 130.88.200.7 /pub/linux fgb1.fgb.mw.tu-muenchen.de 129.187.200.1 /pub/linux ftp.informatik.tu-muenchen.de 131.159.0.110 /pub/Linux ftp.dfv.rwth-aachen.de 137.226.4.105 /pub/linux ftp.informatik.rwth-aachen.de 137.226.112.172 /pub/Linux ftp.ibp.fr 132.227.60.2 /pub/linux kirk.bu.oz.au 131.244.1.1 /pub/OS/Linux ftp.uu.net 137.39.1.9 /systems/unix/linux wuarchive.wustl.edu 128.252.135.4 /systems/linux ftp.win.tue.nl 131.155.70.100 /pub/linux ftp.ibr.cs.tu-bs.de 134.169.34.15 /pub/os/linux ftp.denet.dk 129.142.6.74 /pub/OS/linux Таблица C.1: FTP-серверы Linux



Список поставщиков Linux


Это приложение содержит информацию для контактов с продавцами Linux на дискетах, ленте и CD-ROM'ах. Многие из них поддерживают документацию по Linux и другой сервис. Без сомнения, этот список не полон. Если вы читаете эту книгу с твердой копии, не исключено что продавец или издательство поддерживают Linux.

Автор не гарантирует полную точность информации, приведенной ниже.


Fintronic Linux Systems
1360 Willow Rd., Suite 205
Menlo Park, CA 94025 USA
Tel: +1 415 325-4474
Fax: +1 415 325-4908
linux@fintronic.com
InfoMagic, Inc.
PO Box 30370
Flagstaff, AZ 86003-0370 USA
Tel: +1 800 800-6613, +1 602 526-9565
Fax: +1 602 526-9573
Orders@InfoMagic.com
Lasermoon Ltd
2a Beaconsfield Road, Fareham,
Hants, England. PO16 0QB.
Tel: +44 (0) 329 826444.
Fax: +44 (0) 329 825936.
info@lasermoon.co.uk
Linux Journal
P.O. Box 85867
Seattle, WA 98145-1867 USA
Tel: +1 206 527-3385
Fax: +1 206 527-2806
linux@ssc.com
Linux Systems Labs
18300 Tara Drive
Clinton Twp, MI 48036 USA
Tel: +1 313 954-2829, +1 800 432-0556
Fax: +1 313 954-2806
info@lsl.com
Morse Telecommunication, Inc.
26 East Park Avenue, Suite 240
Long Beach, NY 11561 USA
Tel: +1 800 60-MORSE
Fax: +1 516 889-8665
Linux@morse.net
Nascent Technology
Linux from Nascent CDROM
P.O. Box 60669
Sunnyvale CA 94088-0669 USA
Tel: +1 408 737-9500
Fax: +1 408 241-9390
nascent@netcom.com
Red Hat Software
P.O. Box 4325
Chapel Hill, NC 27515 USA
Tel: +1 919 309-9560
redhat@redhat.com
SW Technology
251 West Renner Suite 229
Richardson, TX 75080 USA
Tel: +1 214 907-0871
swt@netcom.com
Takelap Systems Ltd.
The Reddings, Court Robin Lane,
Llangwm, Usk, Gwent, United Kingdom NP5 1ET.
Tel: +44 (0)291 650357
Fax: +44 (0)291 650500
info@ddrive.demon.co.uk
Trans-Ameritech Enterprises, Inc.
2342A Walsh Ave
Santa Clara, CA 95051 USA
Tel: +1 408 727-3883
roman@trans-ameritech.com
Unifix Software GmbH
Postfach 4918
D-38039 Braunschweig
Germany
Tel: +49 (0)531 515161
Fax: +49 (0)531 515162
Yggdrasil Computing, Incorporated
4880 Stevens Creek Blvd., Suite 205
San Jose, CA 95129-1034 USA
Tel: +1 800 261-6630, +1 408 261-6630
Fax: +1 408 261-6631
info@yggdrasil.com



США


Citrus Grove Public Access, 916-381-5822. ZyXEL 16.8/14.4 Sacramento, CA. Internet: citrus.sac.ca.us Higher Powered BBS, 408-737-7040. ? CA. RIME ->HIGHER hip-hop, 408-773-0768. 19.2k Sunnyvale, CA. USENET access hip-hop, 408-773-0768. 38.4k Sunnyvale, CA. Unix Online, 707-765-4631. 9600 Petaluma, CA. USENET access The Outer Rim, 805-252-6342. Santa Clarita, CA. Programmer's Exchange, 818-444-3507. El Monte, CA. Fidonet Programmer's Exchange, 818-579-9711. El Monte, CA. Micro Oasis, 510-895-5985. 14.4k San Leandro, CA. Test Engineering, 916-928-0504. Sacramento, CA. Slut Club, 813-975-2603. USR/DS 16.8k HST/14.4K Tampa, FL. Fidonet 1:377/42 Lost City Atlantis, 904-727-9334. 14.4k Jacksonville, FL. FidoNet Aquired Knowledge, 305-720-3669. 14.4k v.32bis Ft. Lauderdale, FL. Internet, UUCP The Computer Mechanic, 813-544-9345. 14.4k v.32bis St. Petersburg, FL. Fidonet, Sailnet, MXBBSnet AVSync, 404-320-6202. Atlanta, GA. Information Overload, 404-471-1549. 19.2k ZyXEL Atlanta, GA. Fidonet 1:133/308 Atlanta Radio Club, 404-850-0546. 9600 Atlanta, GA. Rebel BBS, 208-887-3937. 9600 Boise, ID. Rocky Mountain HUB, 208-232-3405. 38.4k Pocatello, ID. Fionet, SLNet, CinemaNet EchoMania, 618-233-1659. 14.4k HST Belleville, IL. Fidonet 1:2250/1, f'req LINUX UNIX USER, 708-879-8633. 14.4k Batavia, IL. USENET, Internet mail PBS BBS, 309-663-7675. 2400 Bloomington, IL. Third World, 217-356-9512. 9600 v.32 IL. Digital Underground, 812-941-9427. 14.4k v.32bis IN. USENET The OA Southern Star, 504-885-5928. New Orleans, LA. Fidonet 1:396/1 Channel One, 617-354-8873. Boston, MA. RIME ->CHANNEL VWIS Linux Support BBS, 508-793-1570. 9600 Worcester, MA. WayStar BBS, 508-481-7147. 14.4k V.32bis USR/HST Marlborough, MA. Fidonet 1:333/14 WayStar BBS, 508-481-7293. 14.4k V.32bis USR/HST Marlborough, MA. Fidonet 1:333/15 WayStar BBS, 508-480-8371. 9600 V.32bis or 14.4k USR/HST Marlborough, MA. Fidonet 1:333/16 Programmer's Center, 301-596-1180. 9600 Columbia, MD. RIME Brodmann's Place, 301-843-5732. 14.4k Waldorf, MD. RIME ->BRODMANN, Fidonet Main Frame, 301-654-2554. 9600 Gaithersburg, MD. RIME ->MAINFRAME 1 Zero Cybernet BBS, 301-589-4064. MD. WaterDeep BBS, 410-614-2190. 9600 v.32 Baltimore, MD. Harbor Heights BBS, 207-663-0391. 14.4k Boothbay Harbor, ME. Part-Time BBS, 612-544-5552. 14.4k v.32bis Plymouth, MN. The Sole Survivor, 314-846-2702. 14.4k v.32bis St. Louis, MO. WWIVnet, WWIVlink, etc MAC's Place, 919-891-1111. 16.8k, DS modem Dunn, NC. RIME ->MAC Digital Designs, 919-423-4216. 14.4k, 2400 Hope Mills, NC. Flite Line, 402-421-2434. Lincoln, NE. RIME ->FLITE, DS modem Legend, 402-438-2433. Lincoln, NE. DS modem MegaByte Mansion, 402-551-8681. 14.4 V,32bis Omaha, NE. Mycroft QNX, 201-858-3429. 14.4k NJ. Steve Leon's, 201-886-8041. 14.4k Cliffside Park, NJ. Dwight-Englewood BBS, 201-569-3543. 9600 v.42 Englewood, NJ. USENET The Mothership Cnection, 908-940-1012. 38.4k Franklin Park, NJ. The Laboratory, 212-927-4980. 16.8k HST, 14.4k v.32bis NY. FidoNet 1:278/707 Valhalla, 516-321-6819. 14.4k HST v.32 Babylon, NY. Fidonet (1:107/255), UseNet (die.linet.org) Intermittent Connection, 503-344-9838. 14.4k HST v.32bis Eugene, OR. 1:152/35 Horizon Systems, 216-899-1086. USR v.32 Westlake, OH. Horizon Systems, 216-899-1293. 2400 Westlake, OH. Centre Programmers Unit, 814-353-0566. 14.4k V.32bis/HST Bellefonte, PA. Allentown Technical, 215-432-5699. 9600 v.32/v.42bis Allentown, PA. WWIVNet 2578 Tactical-Operations, 814-861-7637. 14.4k V32bis/V42bis State College, PA. Fidonet 1:129/226, tac_ops.UUCP North Shore BBS, 713-251-9757. Houston, TX. The Annex, 512-575-1188. 9600 HST TX. Fidonet 1:3802/217 The Annex, 512-575-0667. 2400 TX. Fidonet 1:3802/216 Walt Fairs, 713-947-9866. Houston, TX. FidoNet 1:106/18 CyberVille, 817-249-6261. 9600 TX. FidoNet 1:130/78 splat-ooh, 512-578-2720. 14.4k Victoria, TX. splat-ooh, 512-578-5436. 14.4k Victoria, TX. alaree, 512-575-5554. 14.4k Victoria, TX. Ronin BBS, 214-938-2840. 14.4 HST/DS Waxahachie (Dallas), TX. RIME, Intelec, Smartnet, etc. VTBBS, 703-231-7498. Blacksburg, VA. MBT, 703-953-0640. Blacksburg, VA. NOVA, 703-323-3321. 9600 Annandale, VA. Fidonet 1:109/305 Rem-Jem, 703-503-9410. 9600 Fairfax, VA. Enlightend, 703-370-9528. 14.4k Alexandria, VA. Fidonet 1:109/615 My UnKnown BBS, 703-690-0669. 14.4k V.32bis VA. Fidonet 1:109/370 Georgia Peach BBS, 804-727-0399. 14.4k Newport News, VA. Top Hat BBS, 206-244-9661. 14.4k WA. Fidonet 1:343/40 victrola.sea.wa.us, 206-838-7456. 19.2k Federal Way, WA. USENET



Terms and Conditions for Copying


0.

This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The ``Program'', below, refers to any such program or work, and a ``work based on the Program'' means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term ``modification''.) Each licensee is addressed as ``you''.

Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.

1.

You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.

You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.

2.

You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:

a.

You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.

b.

You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.

c.

If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

3.

You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:

a.

Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,

b.

Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,

c.

Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.

4.

You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

5.

You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.

6.

Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.

7.

If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.

This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.

8.

If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.

9.

The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and ``any later version'', you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.

10.

If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.

NO WARRANTY

11.

BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

12.

IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

END OF TERMS AND CONDITIONS



Типы оболочек


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

Многие из возможностей, которые мы будем обсуждать в этом разделе, обеспечиваются самой оболочкой (shell). Будьте внимательны, не путайте UNIX (фактическую операционную систему) с оболочкой - оболочка, это лишь интерфейс с находящейся за ней системой. Оболочка обеспечивает выполнение громадного числа функций помимо собственно UNIX.

Оболочка - это не только интерпретатор интерактивных команд, которые вы можете ввести, получив от оболочки подсказку (готовности принимать команды). Это также мощный командный язык, который позволяет писать программы (shell-scripts), объединяющие несколько команд в командный файл. Пользователи MS-DOS почувствуют здесь нечто схожее с ``batch-файлами''. Использование программ на языке оболочки (shell) - это очень мощное средство, которое позволяет автоматизировать и и существенно повысить эффективность использования UNIX. Смотрите дополнительно в Разделе 3.13.1.

Существует несколько типов оболочек в мире UNIX. Две главные - это ``Bourne shell''(shell Баурна) и ``C shell'. Shell Баурна (или просто shell) использует командный синтаксис, похожий на первоначально для UNIX придуманный (вроде UNIX System III). В большинстве UNIX-систем shell Баурна имеет имя /bin/sh (где sh сокращение от ``shell''). C shell использует иной синтаксис, чем-то напоминающий синтаксис языка программирования Си. В большинстве UNIX-систем он имеет имя /bin/csh.

В Linux есть несколько вариаций этих оболочек. Две наиболее часто используемые, это Новый Shell Баурна (Bourne Again Shell) или ``Bash'' (/bin/bash) и Tcsh (/bin/tcsh). Bash - это развитие прежнего shell с добавлением многих полезных возможностей, частично содержащихся в C shell. Поскольку Bash можно рассматривать как надмножество синтаксиса прежнего shell, любая программа, написанная на добром старом shell Баурна должна работать и в Bash. Для тех, кто предпочитает использовать синтаксис C shell, Linux поддерживает Tcsh, который является расширенной версией C shell.

Тип оболочки, которую вы решили использовать - это почти как выбор религии. Некоторые предпочитают синтаксис shell Баурна с дополнительными возможностями, предоставляемыми Bash, а некоторые - более структурированный синтаксис C shell. Для "нормальных" команд, таких как cp и ls, тип используемого вами shell никакой роли не играет. Только когда вы начнете писать командные файлы или использовать некоторые новые свойства оболочек, различия между ними становятся существенными.

При обсуждении далее некоторых свойств оболочек мы будем обращать внимание на различие между Баурновским shell и C shell. (Если вам это действительно очень интересно, почитайте Руководство по поводу bash и tcsh).



Требования к оборудованию


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

Имейте в виду, что Linux был создан самими пользователями. Это означает, что большая часть поддерживаемого Linux оборудования - это то, что пользователи реально у себя имеют. Как в результате оказалось - большая часть популярной периферии для 80386/80486 поддерживается (действительно, Linux поддерживает оборудование, которое в ряде случаев не поддерживают некоторые коммерческие UNIX). Хотя некоторые достаточно экзотические устройства пока не поддерживаются. Если какое-то из облюбованных вами устройств пока не поддерживается в Linux, есть смысл надеяться, что оно скоро будет поддерживаться.

Многие компании лицензируют интерфейс устройств, поэтому добровольные разработчики Linux просто не могут написать эти драйверы. Иначе это будет нарушением авторских прав соответствующей компании.

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

В следующем разделе мы попытаемся дать резюме технических требований Linux. Linux Hardware HOWTO (смотрите Раздел 1.9) содержит более полный перечень оборудования, поддерживаемого Linux.

Большая часть драйверов Linux в настоящее время находится в стадии разработки. Различные дистрибутивы могут содержать разные наборы драйверов. Здесь прежде всего перечисляются те драйверы, которые уже поддерживаются определенное время и зарекомендовали себя как достаточно стабильные. (Дополнительную информацию по дистрибутивам смотрите в Разделе 2.1).



"Уайлдкард" "дикая карта"


Ключевое свойство большинства оболочек Unix - это способность ссылаться сразу более, чем на один файл, используя для этого специальные символы. Эти, так называемые "дикие карты" (wildcards), позволяют ссылаться, скажем, на все файлы, содержащие символ "n". (прим. переводчика: Мне не известен хороший перевод этой идиомы (wildcards), наиболее часто у нас встречается "генераторы" и "расширители" символов - но это тяжеловато. Чтобы далее не испытывать мучений - буду использовать слово "уайлдкард". Кстати, и оболочку удобнее далее именовать как shell, так легче воспринимается то, что это язык программирования).

Уайлдкард ``*'' относится к любому символу или строке символов в имени файла. Например, когда вы используете символ ``*'' в имени файла shell заменяет ее всеми возможными именами файлов из каталога, на который вы ссылаетесь. Вот простенький пример. Предположим, что Larry имеет файлы frog, joe и stuff в своем текущем каталоге:

/home/larry# ls frog joe stuff /home/larry#

Для обращения сразу ко всем файлам с буквой ``o'' в имени, мы можем использовать команду

/home/larry# ls *o* frog joe /home/larry#

Как видите, ``*'' уайлдкард была заменена всеми возможными именами файлов из имевшихся в текущем каталоге.

Использование просто ``*''даст совпадение со всеми именами, поскольку все символы совпадают с уайлдкард.

/home/larry# ls * frog joe stuff /home/larry#

Вот еще несколько примеров.

/home/larry# ls f* frog /home/larry# ls *ff stuff /home/larry# ls *f* frog stuff /home/larry# ls s*f stuff /home/larry#

Процесс замены ``*'' на имена файлов называется расширением уайлдкард и выполняется shell. Это важно: конкретные команды, вроде ls, никогда не видят ``*'' в своем списке параметров. Shell, расширяя уайлдкард, включает в список параметров все имена, прошедшие сравнение с шаблоном. Так что команда

/home/larry# ls *o* расширяется shell до фактической /home/larry# ls frog joe

Одно важное замечание относительно ``*'' уайлдкард. Использование этой уайлдкард не даст совпадения с именами файлов, которые начинаются с точки (``.''). Эти файлы воспринимаются как "спрятанные", хотя на самом деле их никуда не прятали. Они не показываются в списке, выдаваемом нормальной командой ls и не выбираются при использовании ``*'' уайлдкард.

Вот пример. Мы уже упоминали, что каждый каталог имеет два специальных файла: ``.'' - указание на текущий каталог и ``..'' - указание на родительский каталог. Однако, если вы используете команду ls, эти два файла не будут отображены.

/home/larry# ls frog joe stuff /home/larry#

Если вы используете опцию -a в команде ls, то вы сможете отобразить имена, начинающиеся на ``.'':

/home/larry# ls -a . .. .bash_profile .bashrc frog joe stuff /home/larry#

Как видим, два специальных файла ``.'' и ``..'', также, как два других "спрятанных" файла - .bash_profile и .bashrc. Эти два файла используются при входе larry в систему. Более подробно о них в Разделе 3.13.3.

Обратите внимание, что когда мы используем ``*'' уайлдкард, ни один из файлов, с именами, начинающимися на ``.'' не отображается.

/home/larry# ls * frog joe stuff /home/larry#

Это мера предосторожности: если ``*'' уайлдкард выбирала бы имена файлов, начинающиеся на ``.'', она бы также выбрала имена ``.'' и ``..''. Но это может быть опасно при выполнении ряда команд.

Другой уайлдкард является ``?''. ``?'' уайлдкард позволяет подставить строго один символ. Так ``ls ?'' выдаст на только имена файлов, состоящие из одного символа, а ``ls termca?'' выдаст ``termcap'', но не выдаст на экран ``termcap.backup''. Вот еще один пример:

/home/larry# ls j?e joe /home/larry# ls f??g frog /home/larry# ls ????f stuff /home/larry#

Как видите, уайлдкард позволяет описывать много файлов за один раз. При обзоре простейших команд в Разделе 3.4 мы говорили, что команды cp и mv могут копировать или перемещать множества файлов за один раз. Например,

/home/larry# cp /etc/s* /home/larry

скопирует все файлы в /etc , начиная с ``s''в каталог /home/larry. Формат команды cp на самом деле

cp <file1> ... <fileN> <destination>

где <file1> ... <fileN> - список копируемых файлов, а <destination> это файл или каталог, в который производится копирование. mv имеет аналогичный синтаксис.

Обратите внимание, что если производится копирование или перемещение более, чем одного файла, <destination> должен быть каталогом. В файл скопировать или переместить можно только один файл.



Учебные материалы по FTP и список серверов


FTP (``File Transfer Protocol'') - Протокол Передачи Файлов, это множество программ, используемых для передачи файлов между системами в Internet. Большинство систем UNIX, VMS и MS-DOS в Internet имеют программу, называемую ftp, которая используется для передачи этих файлов и, если у вас есть выход в Internet, лучший способ скачать программы для Linux, это с помощью ftp. Это приложение рассматривает основы использования ftp. Разумеется, ftp имеет значительно больше функциональных возможностей, чем рассмотрено здесь.

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

Если вы используете системы MS-DOS, UNIX или VMS для скачивания файлов из Internet, то для вас ftp - это программа, управляемая командами. В то время как в других реализациях ftp, таких как версия для Macintosh (называемая Fetch), имеются для этого чудесные меню, которые самопонятны. Даже если вы не используете командно-управляемое ftp, информация, приводимая здесь, все равно может быть полезной.

ftp можно использовать как для посылки файлов (upload), так и для их получения (download) с других узлов (sites) Internet. (прим. переводчика: нет общепринятого перевода слова "site", которое, следуя скорее традиции Relcom, мы в зависимости от контекста переводим, то как "узел", то как "(сетевой, архивный) сервер"; по этой же причине, часто для "download" используется (в том числе и нами) термин "скачать", что, видимо, следует признать (техническим) жаргоном).

В большинстве случаев вы все-таки будете скачивать программы. В Internet большое количество общедоступных архивных FTP-серверов, т.е. машин, позволяющих любому войти на них по ftp и скачать свободнораспространяемое (free) (прим. переводчика: сравните два последних слова и простите переводчику использование небольшой дозы жаргона) программное обеспечение. Один из таких архивных серверов sunsite.unc.edu, который состоит из множества Санов (Sun Microsystems), работает как (единый) один из самых мощных серверов Linux. Кроме того, архивные FTP-сервера осуществляют "зеркальное" отображение друг на друга, то есть, размещенное на одном сервере, автоматически копируется на ряд других серверов. так что не удивляйтесь, если увидите один и тот же файл на многих различных архивных серверах.



Удаление текста


В командном режиме команда "x" удаляет символ перед курсором. Если вы нажмете x пять раз, вы закончите в ситуации:

____________________________________________________________________ |Now is the time for all good women to come to the aid of the party.| |Afterwards, we'll go out for pizza and _ | |~ | |~ | |~ | |~__________________________________________________________________|

Теперь нажмите a, вставьте некоторый текст, а затем нажмите esc:

____________________________________________________________________ |Now is the time for all good women to come to the aid of the party.| |Afterwards, we'll go out for pizza and Diet Coke._ | |~ | |~ | |~ | |~__________________________________________________________________|

Вы можете удалять целые строки, набирая команду dd (т.е. нажимая d дважды). Если ваш курсор на второй строке, и вы напечатали dd,

____________________________________________________________________ |Now is the time for all good women to come to the aid of the party.| |~ | |~ | |~ | |~ | |~__________________________________________________________________|

Чтобы удалить слово, на котором находится курсор, используйте команду dw. Поместите курсор на слово ``good'' и напечатайте dw.

____________________________________________________________________ |Now is the time for all women to come to the aid of the party. | |~ | |~ | |~ | |~ | |~__________________________________________________________________|



Управление файловыми системами


Другая задача системного администратора - забота о файловой системе. Большая часть этой работы состоит в проверке файловой системы на наличие поврежденных или испорченных файлов; многие системы делают такие проверки во время загрузки.



Условия копирования распространения и модификации


0.

Эта лицензия применима к любой программе или другой работе, содержащей уведомление о владельце copyright и о том, что она может распространяться в соответсвии с требованиями Генеральной Общедоступной Лицензии. "Программа", употребляемый далее термин, относится к любой программе или работе, а также "работе основанной на Программе". Это означает, что Программа или производная работа находятся под охраной copyright: то есть работа, содержит Программу или ее часть либо дословно, либо с модификациями и/или переводами на другой язык. (Далее перевод включается без дополнительных оговорок в термин "модификация"). Далее под обращением "вы" будем понимать владельца лицензии.

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

1.

Вы можете копировать и распространять точные копии исходных текстов Программы, как вы их получили, на любом носителе, снабженном заметным и подобающим образом представленным уведомлением о copyright и уведомлением об отсутствии гарантии; сохраняйте без изменений записи, относящиеся к этой Лицензии и отсутствию гарантии и передавайте другим вместе с копией Программы копию этой Лицензии.

Вы можете получать плату за саму физическую процедуру передачи копии и вы можете за плату под свою ответственность предложить (от своего имени) гарантии.

2.

Вы можете модифицировать свою копию Программы или ее части, таким образом реализуя работы, основанные на Программе, а далее копировать и распределять эти модификации и другие работы в терминах Раздела 1, обеспечив выполнение всех условий:

a.

Модифицированные файлы вы должны снабдить на видном месте в начале уведомлением, что вы изменили файлы, и датой изменений.

b.

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

c.

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

Эти требования применимы к работам, связанным с модификацией в целом. Если выделенная часть этой работы не является производной от Программы, и может обоснованно рассматриваться как независимая и отдельная работа, тогда эта Лицензия и ее составляющие не применимы к этим частям, когда они распространяются как независимые работы. Но когда вы распространяете эти части внутри целого, что можно определить, как работу на основе Программы, распространение целого должно попадать под требования этой Лицензии, чьи ограничения для получателей лицензии будут распространяться на целое, и таким образом все части, вне зависимости от того, кто что написал.

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

В дополнение, простое объединение другой работы, не основанной на Программе с Программой (или работой, основанной на Программе) на одном томе хранения или средстве распространения не переносит действие Лицензии на (эту) другую работу.

3.

Вы можете копировать и распространять Программу (или работу, основанную на программе из Раздела 2) в объектных кодах или выполняемой форме с учетом требований Разделов 1 и 2, при условии, что вы также выполните одно из следующего:

a.

Сопроводите ее полными машинно-читаемыми исходными текстами, которые должны распространяться с учетом требований Разделов 1 и 2, на средстве кастомизации, используемом для обмена программами; или

b.

Сопроводите ее письменным предложением, действительным не менее, чем в течение трех лет, продать любой третьей стороне по стоимости, не большей, чем стоимость физического копирования дистрибутива, полную машинно-читаемую копию соответствующего исходного кода, который можно распространять с учетом ограничений Разделов 1 и 2, на средствах кастомизации, используемых для обмена программами; или

c.

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

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

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

4.

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

5.

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

6.

Каждый раз, когда вы передаете Программу (или работу, основанную на Программе), получатель автоматически получает лицензию от первого владельца лицензии на копирование, распространение или модификацию Программы с учетом требований и условий. Вы не имеете права накладывать дополнительные ограничения на использование Программы теми, кому вы ее передаете. Вы не отвечаете по претензиям, предъявляемым третьими сторонами к этой Лицензии.

7.

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

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

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

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

8.

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

9.

The Free Software Foundation (FSF) может публиковать и/или изменять время от времени Генеральную Общедоступную Лицензию. Эти новые версии будут аналогичны по духу данной версии, но могут отличаться в деталях, связанных с вновь возникшими проблемами.

Каждая версия имеет уникальный номер. Если Программа указывает номер версии данной Лицензии, которая включает и "любую более раннюю версию", вы можете следовать требованиям либо данной версии, либо любой более ранней версией, опубликованной Free Software Foundation. Если Программа не указывает номер версии Лицензии, вы можете выбрать любую когда-либо опубликованную Free Software Foundation версию.

10.

Если вы хотите вставить части Программы в другие свободно распространяемые программы, чьи условия распространения отличаются, напишите автору и спросите его разрешения. Для программ, защищенных copyright Free Software Foundation, напишите в Free Software Foundation; мы иногда делаем для этого исключения. Наше решение следует двум целям сохранения статуса свободно распространяемых программ для всех производных из этих программ, и вообще, поощрение распространения программ.

ОТКАЗ В ГАРАНТИИ

11.

ПОСКОЛЬКУ ПРОГРАММА ИМЕЕТ ЛИЦЕНЗИЮ БЕСПЛАТНО РАСПРОСТРАНЯЕМОЙ ПРОГРАММЫ, НА ПРОГРАММУ ОТСУТСТВУЕТ ГАРАНТИЯ (В ПРЕДЕЛАХ ДОПУСКАЕМЫХ ЗАКОНОМ). ЗА ИСКЛЮЧЕНИЕМ ТЕХ СЛУЧАЕВ, КОГДА ПИСЬМЕННО УКАЗАНО ОБРАТНОЕ, ВЛАДЕЛЬЦЫ COPYRIGHT И/ИЛИ ДРУГИЕ ПОСТАВЛЮТ ПРОГРАММУ "КАК ЕСТЬ" БЕЗ КАКОЙ БЫ ТО НИ БЫЛО ГАРАНТИИ, ЯВНОЙ ИЛИ ПОДРАЗУМЕВАЕМОЙ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯ ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ, НЕОБХОДИМЫЕ ПРИ ТОРГОВЛЕ И ОБЯЗАТЕЛЬНЫЕ ДЛЯ ДРУГИХ КОНКРЕТНЫХ ЦЕЛЕЙ. ВЫ БЕРЕТЕ НА СЕБЯ ВЕСЬ РИСК ЗА КАЧЕСТВО И РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРММЫ. ЕСЛИ ПРОГРАММА ОКАЖЕТСЯ НЕИСПРАВНОЙ, ВЫ НЕСЕТЕ ВСЕ РАСХОДЫ ПО НЕОБХОДИМОМУ ОБСЛУЖИВАНИЮ, РЕМОНТУ ИЛИ КОРРЕКТИРОВКЕ.

12.

НИ В КАКИХ СЛУЧАЯХ, КРОМЕ СЛЕДУЮЩИХ ИЗ ЗАКОНОВ ПО ИСПОЛЬЗОВАНИЮ ИЛИ СОГЛАСИЯ В ПИСЬМЕННОЙ ФОРМЕ, НЕ БУДЕТ НИ ОДИН ВЛАДЕЛЕЦ COPYRIGHT ИЛИ ДРУГОЕ ЛИЦО, КОТОРОЕ МОГЛО МОДИФИЦИРОВАТЬ ПРОГРАММУ И/ИЛИ ДАЛЕЕ РАСПРОСТРАНЯТЬ ЕЕ В СООТВЕТСТВИИ С УСТАНОВЛЕННЫМИ РАЗРЕШЕНИЯМИ, НЕ БУДЕТ НЕСТИ ОТВЕТСТВЕННОСТЬ ЗА НАНЕСЕННЫЙ ПРОГРАММОЙ УЩЕРБ, ВКЛЮЧАЯ ЛЮБОЙ УЩЕРБ ОБЩЕГО ХАРАКТЕРА, СПЕЦИАЛЬНЫЙ, СЛУЧАЙНЫЙ ИЛИ ЯВЛЯЮЩИЙСЯ СЛЕДСТВИЕМ ПОВРЕЖДЕНИЯ, ВЫЯВЛЕННОГО ПРИ ИСПОЛЬЗОВАНИИ ПРОГРАММЫ ИЛИ НЕВОЗМОЖНОСТИ ИСПОЛЬЗОВАТЬ ПРОГРАММУ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ПОТЕРЮ ДАННЫХ ИЛИ ИХ НЕПРАВИЛЬНУЮ ПЕРЕДАЧУ ИЛИ ПОТЕРИ, КОТОРЫЕ ПОНЕСЛИ ВЫ ИЛИ ТРЕТЬЯ СТОРОНА, ИЛИ НЕСПОСОБНОСТЬ ПРОГРАММЫ ВЗАИМОДЕЙСТВОВАТЬ С ДРУГИМИ ПРОГРАММАМИ), ДАЖЕ ЕСЛИ У ВЛАДЕЛЬЦЕВ ИЛИ ТРЕТЬЕЙ СТОРОНЫ КОНСУЛЬТИРОВАЛИСЬ ПО ПОВОДУ ВОЗМОЖНОСТИ ТАКОГО УЩЕРБА.

КОНЕЦ ТРЕБОВАНИЙ И УСЛОВИЙ



Установка хостимени (hostname)


Хост-имя устанавливается с помощью команды hostname. Она обычно вызывается из /etc/rc или /etc/rc.local; просто просмотрите свои системные rc-файлы, откуда вызывается. Например, если ваше (полное) хост-имя loomer.vpizza.com, отредактируйте соответствующий rc-файл, выполнив команду:

/bin/hostname loomer.vpizza.com

Обратите внимание, что команды hostname может не оказаться в /bin.




Дистрибутив Xfree86 в выполняемых кодах можно найти на целом ряде FTP-серверов. На sunsite.unc.edu он находится в каталоге /pub/Linux/X11. (На момент написания текущая версия была 3.1; периодически появляются новые версии).

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

Если же вы собираетесь скачать XFree с FTP-сервера, следующая таблица содержит список файлов в дистрибутиве XFree86-3.1.

Вам потребуется один из серверов:

Файл Описание XF86-3.1-8514.tar.gz Сервер для 8514 видеокарт. XF86-3.1-AGX.tar.gz Сервер для AGX видеокарт. XF86-3.1-Mach32.tar.gz Сервер для Mach32 видеокарт. XF86-3.1-Mach8.tar.gz Сервер для Mach8 видеокарт. XF86-3.1-Mono.tar.gz Сервер для монохромного режима. XF86-3.1-P9000.tar.gz Сервер для P9000 видеокарт. XF86-3.1-S3.tar.gz Сервер для S3 видеокарт. XF86-3.1-SVGA.tar.gz Сервер для Super VGA видеокарт. XF86-3.1-VGA16.tar.gz Сервер для VGA/EGA видеокарт. XF86-3.1-W32.tar.gz Сервер для ET4000/W32 видеокарт. все нижеперечисленные файлы: Файл Описание XF86-3.1-bin.tar.gz Остальные программы X11R6. XF86-3.1-cfg.tar.gz Конфигурационные файлы для xdm, xinit и fs. XF86-3.1-doc.tar.gz Документация и руководства. XF86-3.1-inc.tar.gz Include файлы. (?) XF86-3.1-lib.tar.gz Разделяемые библиотеки. XF86-3.1-fnt.tar.gz Основные фонты. следующие файлы не являются обязательными: Файл Описание XF86-3.1-ctrb.tar.gz Выбранные дополнительные программы (?). XF86-3.1-extra.tar.gz Дополнительные сервера для XFree86. XF86-3.1-lkit.tar.gz Инструментарий для компиляции серверов. XF86-3.1-fnt75.tar.gz Фонты 75-dpi. XF86-3.1-fnt100.tar.gz Фонты 100-dpi. XF86-3.1-fntbig.tar.gz Large Kanji и другие фонты. XF86-3.1-fntscl.tar.gz Масштабируемые фонты (Speedo, Type1). XF86-3.1-man.tar.gz Руководства. XF86-3.1-pex.tar.gz Выполняемые файлы, include-файлы, библиотеки для PEX. XF86-3.1-slib.tar.gz Статические библиотеки. XF86-3.1-usrbin.tar.gz Программы-демоны, размещающиеся в /usr/bin. XF86-3.1-xdmshdw.tar.gz Версия программы xdm с поддержкой теневых паролей.

Каталог XFree должен содержать файлы README и замечания по инсталляции текущей версии.

Все что вам требуется для инсталляции XFree86, это получить указанные файлы, создать каталог /usr/X11R6 (пользователем root), перейти в этот каталог и распаковать файлы. Например:

# gzip -dc XF86-3.1-bin.tar.gz | tar xfB -

Имейте в виду, что эти файлы упакованы относительно каталога /usr/X11R6, так что необходимо распаковывать их находясь в этом каталоге.

После распаковки файлов, вам необходимо связать файл /usr/X11R6/bin/X с тем сервером, который вы намереваетесь использовать. Например, если вы желаете работать с SVGA сервером, файл /usr/bin/X11/X необходимо связать с файлом /usr/X11R6/bin/XF86_SVGA. Если же вы собираетесь использовать монохромный сервер, переустановите связь командой:

# ln -sf /usr/X11R6/bin/XF86_MONO /usr/X11R6/bin/X

Это же справедливо и для серверов других видеокарт.

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

Вам следует убедиться, что каталог /usr/bin/X11R6 находится в переменной среды PATH. Это может быть сделано редактированием файлов /etc/profile или /etc/csh.login (в зависимости от оболочек (shell) которые вы или другие пользователи используют). Вы также можете просто добавить этот каталог с вашей переменной PATH, корректируя в вашем домашнем каталоге файлы .bashrc или .cshrc, в зависимости от типа вашей оболочки.

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

/usr/X11R6/lib в файл /etc/ld.so.conf и запустите команду /sbin/ldconfig как суперпользователь.

Вход на сервер


Когда запускается ftp, мы можем увидеть что-то вроде

Connected to shoop.vpizza.com. 220 Shoop.vpizza.com FTPD ready at 15 Dec 1992 08:20:42 EDT Name (shoop.vpizza.com:mdw):

Здесь ftp просит нас ввести имя (Name) пользователя, под которым мы хотим войти на сервер shoop.vpizza.com. По умолчанию здесь "mdw", что служит моим именем пользователя для FTP-входа. Поскольку у меня нет account (прим. переводчика: не открыт счет, а точнее (но дальше от текста) - не зарегистрирован в качестве пользователя) на shoop.vpizza.com, я не могу войти под своим именем. Вместо этого, чтобы войти на общедоступный FTP-сервер вы входите как anonymous (аноним) и сообщаете свой адрес e-mail (если он у вас есть) в качестве пароля. То есть нам следует ввести

Name (shoop.vpizza.com:mdw): anonymous 331-Guest login ok, send e-mail address as password. Password: mdw@sunsite.unc.edu 230- Welcome to shoop.vpizza.com. 230- Virtual Pizza Delivery[tm]: Download pizza in 30 cycles or less 230- or you get it FREE! ftp>

Разумеется, вам следует сообщать свой e-mail адрес вместо моего, он не будет отображаться на экране при вашем вводе (поскольку он вводится под "вывеской" пароля). ftp должен позволить нам войти и мы будем иметь возможность скачивать программы.



Включение других файлов


Если вы используете команду :r, вы можете включить содержимое другого файла в текущий файл. Например, команда

:r foo.txt

вставит содержимое файла foo.txt в данное место текста.



Вне США


Galaktische Archive, 0043-2228303804. 16.8 ZYX Wien, Austria. Fidonet 2:310/77 (19:00-7:00) Linux-Support-Oz, +61-2-418-8750. v.32bis 14.4k Sydney, NSW, Austrailia. Internet/Usenet, E-Mail/News 500cc Formula 1 BBS, +61-2-550-4317. V.32bis Sydney, NSW, Australia. Magic BBS, 403-569-2882. 14.4k HST/Telebit/MNP Calgary, AB, Canada. Internet/Usenet Logical Solutions, 299-9900 through 9911. 2400 AB, Canada. Logical Solutions, 299-9912, 299-9913. 14.4k Canada. Logical Solutions, 299-9914 through 9917. 16.8k v.32bis Canada. V.A.L.I.S., 403-478-1281. 14.4k v.32bis Edmonton, AB, Canada. USENET The Windsor Download, (519)-973-9330. v32bis 14.4 ON, Canada. r-node, 416-249-5366. 2400 Toronto, ON, Canada. USENET Synapse, 819-246-2344. 819-561-5268 Gatineau, QC, Canada. RIME->SYNAPSE Radio Free Nyongwa, 514-524-0829. v.32bis ZyXEL Montreal, QC, Canada. USENET, Fidonet DataComm1, +49.531.132-16. 14.4 HST Braunschweig, NDS, Germany. Fido 2:240/550, LinuxNet DataComm2, +49.531.132-17. 14.4 HST Braunschweig, NDS, Germany. Fido 2:240/551, LinuxNet Linux Server /Braukmann, +49.441.592-963. 16.8 ZYX Oldenburg, NDS, Germany. Fido 2:241/2012, LinuxNet MM's Spielebox, +49.5323.3515. 14.4 ZYX Clausthal-Zfd., NDS, Germany. Fido 2:241/3420 MM's Spielebox, +49.5323.3516. 16.8 ZYX Clausthal-Zfd., NDS, Germany. Fido 2:241/3421 MM's Spielebox, +49.5323.3540. 9600 Clausthal-Zfd., NDS, Germany. Fido 2:241/3422 Bit-Company / J. Bartz, +49.5323.2539. 16.8 ZYX MO Clausthal-Zfd., NDS, Germany. Fido 2:241/3430 Fractal Zone BBS /Maass, +49.721.863-066. 16.8 ZYX Karlsruhe, BW, Germany. Fido 2:241/7462 Hipposoft /M. Junius, +49.241.875-090. 14.4 HST Aachen, NRW, Germany. Fido 2:242/6, 4:30-7,8-23:30 UB-HOFF /A. Hoffmann, +49.203.584-155. 19.2 ZYX+ Duisburg, Germany. Fido 2:242/37 FORMEL-Box, +49.4191.2846. 16.8 ZYX Kaltenkirchen, SHL, Germany. Fido 2:242/329, LinuxNet (6:00-20:00) BOX/2, +49.89.601-96-77. 16.8 ZYX Muenchen, BAY, Germany. Fido 2:246/147, info magic: LINUX (22-24,0:30-2,5-8) Die Box Passau 2+1, +49.851.555-96. 14.4 V32b Passau, BAY, Germany. Fido 2:246/200 (8:00-3:30) Die Box Passau Line 1, +49.851.753-789. 16.8 ZYX Passau, BAY, Germany. Fido 2:246/2000 (8:00-3:30) Die Box Passau Line 3, +49.851.732-73. 14.4 HST Passau, BAY, Germany. Fido 2:246/202 (5:00-3:30) Die Box Passau ISDN, +49.851.950-464. 38.4/64k V.110/X.75 Passau, BAY, Germany. Fido 2:246/201 (8:00-24:00,1:00-3:30) Public Domain Kiste, +49.30.686-62-50. 16.8 ZYX BLN, Germany. Fido 2:2403/17 CS-Port / C. Schmidt, +49.30.491-34-18. 19.2 Z19 Berlin, BLN, Germany. Fido 2:2403/13 BigBrother / R. Gmelch, +49.30.335-63-28. 16.8 Z16 Berlin, BLN, Germany. Fido 2:2403/36.4 (16-23:00) CRYSTAL BBS, +49.7152.240-86. 14.4 HST Leonberg, BW, Germany. Fido 2:2407/3, LinuxNet Echoblaster BBS #1, +49.7142.213-92. HST/V32b Bietigheim, BW, Germany. Fido 2:2407/4, LinuxNet (7-19,23-01h Echoblaster BBS #2, +49.7142.212-35. V32b Bietigheim, BW, Germany. Fido 2:2407/40, LinuxNet (20h-6h) LinuxServer / P. Berger, +49.711.756-275. 16.8 HST Stuttgart, BW, Germany. Fido 2:2407/34, LinuxNet (8:3-17:5,19-2) Rising Sun BBS, +49.7147.3845. 16.8 ZYX Sachsenheim, BW, Germany. Fido 2:2407/41, LinuxNet (5:30-2:30) bakunin.north.de, +49.421.870-532. 14.4 D 2800 Bremen, HB, Germany. kraehe@bakunin.north.de oytix.north.de, +49.421.396-57-62. ZYX HB, Germany. mike@oytix.north.de, login as gast Fiffis Inn BBS, +49-89-5701353. 14.4-19.2 Munich, Germany. FidoNet 2:246/69,Internet,USENET,LinuxNet The Field of Inverse Chaos, +358 0 506 1836. 14.4k v32bis/HST Helsinki, Finland. USENET; ichaos.nullnet.fi Modula BBS, +33-1 4043 0124. HST 14.4 v.32bis Paris, France. Modula BBS, +33-1 4530 1248. HST 14.4 V.32bis Paris, France. STDIN BBS, +33-72375139. v.32bis Lyon, Laurent Cas, France. FidoNet 2:323/8 Le Lien, +33-72089879. HST 14.4/V32bis Lyon, Pascal Valette, France. FidoNet 2:323/5 Basil, +33-1-44670844. v.32bis Paris, Laurent Chemla, France. Cafard Naum, +33-51701632. v.32bis Nantes, Yann Dupont, France. DUBBS, +353-1-6789000. 19.2 ZyXEL Dublin, Ireland. Fidonet 2:263/167 Galway Online, +353-91-27454. 14.4k v32b Galway, Ireland. RIME, @iol.ie Nemesis' Dungeon, +353-1-324755 or 326900. 14.4k v32bis Dublin, Ireland. Fidonet 2:263/150 nonsolosoftware, +39 51 6140772. v.32bis, v.42bis Italy. Fidonet 2:332/407 nonsolosoftware, +39 51 432904. ZyXEL 19.2k Italy. Fidonet 2:332/417 Advanced Systems, +64-9-379-3365. ZyXEL 16.8k Auckland, New Zealand. Singet, INTLnet, Fidonet Thunderball Cave, 472567018. Norway. RIME ->CAVE DownTown BBS Lelystad, +31-3200-48852. 14.4k Lelystad, Netherlands. Fido 2:512/155, UUCP MUGNET Intl-Cistron BBS, +31-1720-42580. 38.4k Alphen a/d Rijn, Netherlands. UUCP The Controversy, (65)560-6040. 14.4k V.32bis/HST Singapore. Fidonet 6:600/201 Pats System, +27-12-333-2049. 14.4k v.32bis/HST Pretoria, South Africa. Fidonet 5:71-1/36 Gunship BBS, +46-31-693306. 14.4k HST DS Gothenburg Sweden. Baboon BBS, +41-62-511726. 19.2k Switzerland. Fido 2:301/580 and /581 The Purple Tentacle, +44-734-590990. HST/V32bis Reading, UK. Fidonet 2:252/305 A6 BBS, +44-582-460273. 14.4k Herts, UK. Fidonet 2:440/111 On the Beach, +444-273-600996. 14.4k/16.8k Brighton, UK. Fidonet 2:441/122



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


Если у вас каким-то образом грохнулась файловая система, вы можете использовать e2fsck (это в случае, если вы используете файловую систему типа ext2fs) для исправления попорченых данных файловой системы с дискет. Другие файловые системы используют другие формы команды fsck; детали смотрите в Разделе 4.8.

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

Частая причина неисправности файловой системы - порча суперблока. Суперблок, это "голова" (``header')'файловой системы, которая содержит информацию о статусе файловой системы, размере, свободных блоках и т.д. Если вы попортили ваш суперблок (например, случайно прямо в него записали какие-то данные) операционная система может вообще не распознать файловую систему. Все попытки примонтировать файловую систему потерпят неудачу, и e2fsck не поможет решить проблему.

К счастью, файловая система типа ext2fs сохраняет копии суперблока в границах "группы блоков" (``block group'') на диске, обычно через каждые 8K блоков. Для того, чтобы приказать e2fsck использовать копию суперблока, вы можете использовать команду

# e2fsck -b 8193 <partition>

где <partition> - это раздел, на которой располагается файловая система. Опция -b 8193 приказывает e2fsck использовать копию суперблока, хранящуюся в блоке 8193 файловой системы.



Восстановление пароля для root


Если вы забыли пароль вашего root - нет проблем. Просто загрузитесь с boot/root disk, примонтируйте вашу корневую файловую систему под /mnt и сотрите поле пароля для root в /mnt/etc/passwd, как например:

root::0:0:root:/:/bin/sh

Теперь root без пароля; когда вы перезагрузитесь с жесткого диска, вы сможете войти как root и снова установить пароль, используя команду passwd. Не правда ли, вы счастливы, что научились работать с vi? На вашей boot/root disk, редакторов, вроде Emacs наверняка нет, а vi должен быть. (прим. переводчика: администратор должен отдавать себе отчет, что процедуру снятия пароля root умеет запросто выполнять не он один).



Восстановление потерянных библиотек


Если вы случайно потеряли свои библиотеки или символические связи в /lib, скорее всего команды, которые зависят от этих библиотек, больше не будут выполняться (смотрите Раздел 4.7.2). Простейшее решение - загрузиться с дискеты boot/root, примонтировать вашу корневую файловую систему и восстановить библиотеки в /mnt/lib.



Восстановление потерянных файлов


Если вы случайно удалили важные файлы, нет способа их "разудалить" обратно. Однако, вы можете скопировать соответствующие файлы с дискеты себе на жесткий диск. Например, если вы удалите /bin/login в своей системе (который обеспечивает вход в систему), просто загрузите boot/root дискету, примонтируйте корневую файловую систему на /mnt и используйте команду

# cp -a /bin/login /mnt/bin/login

Опция -a приказывает cp сохранить права доступа копируемых файлов. Разумеется, если удаленные файлы не столь существенны, что они не были удостоены копирования на дискету boot/root floppy, значит вам не повезло. Если вы создавали резервные копии, вы можете скопировать файлы оттуда.



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


Одно незаменимое средство для администратора системы - это так называемый ``boot/root disk'' - дискета, которая может загрузить полный Linux, вне зависимости от вашего жесткого диска. Boot/root disks в действительности очень прост - вы создаете корневую файловую систему на дискете, помещая на нее все необходимые утилиты, инсталлируя на дискете LILO и загружаемое ядро. Другой способ, это использовать одну дискету для ядра и другую для корневой файловой системы. В любом случае результат одинаков: Вы запускаете Linux полностью с дискет.

Канонический пример boot/root disk - это загрузочный диск Slackware. (Смотрите Раздел 2.1.1 относительно информации по перекачке его по Internet. Для этого вам не надо скачивать полностью - только boot и root дискеты). Эти дискеты содержат загрузочную таблицу и корневую файловую систему. Предполагается, что они используются при инсталляции дистрибутивов Slackware, но бывают очень полезны для сопровождения системы.

boot/root disk, созданный H.J Lu, который можно взять в /pub/Linux/GCC/rootdisk на sunsite.unc.edu - другой пример такого рода диска сопровождения.

Или, если вы достаточно амбициозны, можете создать свой. Хотя, в большинстве случаев, использовать готовый boot/root disk - значительно легче и надежнее.

Использовать boot/root disk очень легко. Просто загрузите диск на вашей системе и войдите под root (обычно без пароля). Чтобы получить доступ к файлам вашего жесткого диска, необходимо примонтировать ваши файловые системы вручную. Например, команда

# mount -t ext2 /dev/hda2 /mnt

примонтирует файловую систему ext2fs на /dev/hda2 под /mnt. Помните, что / теперь находится на boot/root disk; вам необходимо примонтировать файловую систему вашего жесткого диска под каким-то каталогом, чтобы получить доступ к файлам. Так что /etc/passwd вашего жесткого диска теперь в /mnt/etc/passwd, если вы примонтировали вашу корневую файловую систему на /mnt.



Вставка текста


Вы находитесь в командном режиме; для того, чтобы вставлять текст в файл, нажмите i (что переведет вас в режим вставки) и начинайте печатать.

____________________________________________________________________ |Now is the time for all good men to come to the aid of the party._ | |~ | |~ | |~ | |~ | |~__________________________________________________________________|

При вставке текста вы можете напечатать столько строк, сколько пожелаете (нажимая return после каждой строки), и можете корректировать ошибки используя клавишу возврата (backspace).

Для завершения режима вставки и возврата в командный режим нажмите esc.

В командном режиме вы можете использовать клавиши со стрелками для перемещения по файлу. Здесь, поскольку мы имеем только одну строку текста, попытки использовать стрелки "вверх" и "вниз" приведут лишь к тому, что vi на вас загудит.

Есть несколько способов вставки текста, отличных от использования команды i. Например, команда a вставляет в текст, начиная после текущего положения курсора, вместо текущей позиции курсора. Используйте левую стрелку для перемещения курсора между словами ``good'' и ``men''.

____________________________________________________________________ |Now is the time for all good_men to come to the aid of the party. | |~ | |~ | |~ | |~ | |~__________________________________________________________________|

Нажмите a, для начала режима вставки, напечатайте ``wo'', а затем нажмите esc для возврата в командный режим.

____________________________________________________________________ |Now is the time for all good women to come to the aid of the party.| |~ | |~ | |~ | |~ | |~__________________________________________________________________|

Для того, чтобы начать вставку текста в строку ниже текущей, используйте команду ``о''. Например, нажмите o и напечатайте строчку или две

____________________________________________________________________ |Now is the time for all good women to come to the aid of the party.| |Afterwards, we'll go out for pizza and beer._ | |~ | |~ | |~ | |~__________________________________________________________________|

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



и Linux могут быть ошеломлены


Новые пользователи UNIX и Linux могут быть ошеломлены размерами и очевидной сложностью системы, которая предстала перед ними. Существует много хороших книг по использованию UNIX для всех уровней подготовки: от новичка до эксперта. Но ни одна из этих книг не обсуждает особенности Linux. Хотя 95% всего связанного с использованием Linux абсолютно аналогично другим UNIX-системам, наиболее прямой путь освоения этой системы - это по учебнику, написанному применительно к Linux. Вот эта книга и есть такой учебник.
Эта глава не заводит в дебри деталей и не обсуждает наиболее сложные прим. переводчика: они (и уже у нас тоже) говорят - продвинутые аспекты Linux. Вместо этого делается попытка поставить новичка крепко на ноги, чтобы он мог в дальнейшем читать и более общие книги по UNIX, понимая базовые различия других UNIX-систем и Linux.
Здесь не предполагается каких-то предварительных знаний, за исключением первоначального знакомства с персональным компьютером и MS-DOS. Но даже если вы не успели побывать пользователем MS-DOS, вы все равно все здесь поймете. На первый взгляд UNIX очень похож на MS-DOS (в конце концов фрагменты MS-DOS были спроектированы с оглядкой на операционную систему CP/M, которая, в свою очередь, проектировалась с оглядкой на UNIX). Но только при очень уж поверхностном взгляде можно говорить о похожести UNIX и MS-DOS. Если вы абсолютный новичок в мире персональных компьютеров, этот учебник вам поможет.
И прежде, чем начать, призываем: не бойтесь экспериментировать. Система вас не укусит. Работая на ней вы ничего не сможете сломать. UNIX имеет встроенные средства защиты, чтобы не дать "нормальным" пользователям (это теперь и вы) возможность испортить важные для системы файлы. Самое плохое, что вы можете натворить - это уничтожить все свои файлы, а тогда, может быть придется и переинсталлировать заново систему прим. переводчика: как правило, чтобы довести систему до переинсталляции, надо иметь прав больше, чем у "нормального" пользователя.

Введение в LINUX


Linux, возможно, является наиболее значительным достижением в области свободно распространяемых программ со времен Space War, или более позднего Emacs. Он превратился в операционную систему для бизнеса, образования и индивидуального программирования. Linux перестал быть системой для фанатиков-программистов, которые часами сидят перед мерцающими экранами (хотя таких и немало). Эта книга поможет вам извлечь из Linux максимальную пользу.

Linux (произносится "лИнукс") принадлежит семейству UNIX-подобных операционных систем, которая может работать на компьютерах Intel 80386 и 80486. Он поддерживает широкий спектр программных пакетов от TeX до X Windows, компиляторов GNU C/C++, протоколов TCP/IP. Это гибкая реализация ОС UNIX, свободно распространяемая под генеральной лицензией GNU (см. приложение E).

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

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

Что делает Linux столь отличным от других ОС - это его создание версии UNIX "на общественных началах" (free implementation).. Он был создан и продолжает совершенствоваться и развиваться группой добровольцев, первоначально в кругу пользователей сети Internet, которые обменивались кодами, информацией об обнаруженных ошибках, выявлением проблем, возникавших при расширении сферы применения. Все желающие приглашаются подключиться к этой работе. Единственное, что требуется - это интерес к семейству UNIX и желание совершенствовать свои навыки в этой сфере. Данная книга - ваш путеводитель.



Выключение системы


Выключение Linux - это немножко акробатика. Не забывайте, что никогда нельзя просто выключить питание или нажать кнопку "reset" во время работы системы. Ядро отслеживает диск при вводе- выводе с помощью буферов. Если вы перезагружаете систему, не дав шанса ядру переписать буфера на диск, вы можете попортить файловые системы.

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

Простейший способ выключения, это использование команды shutdown. Формат команды

shutdown <time> <warning-message>

<time> - время выключения системы (в формате hh:mm:ss - чч:мм:сс) и <warning-message> - сообщение, выдаваемое на терминалы всех пользователей перед выключением. Вы можете просто указать время (<time>) как ``now'', что приведет к безотлагательному выключению. Опция -r приведет к перезагрузке после выключения.

Например, выключить систему в 8:00 вечера можно командой

# shutdown -r 20:00

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

ВНИМАНИЕ! На выключайте электропитание и не перезагружайте ее, пока не увидите на консоли сообщение:

The system is halted

Важно cделать выключение "чисто", используя команды shutdown или halt. В некоторых системах нажатие ctrl-alt-del будет перехвачено системой и приведет к ее выключению, но в других системах использование "затычки для вулкана" приведет к немедленной перезагрузке системы и может быть причиной неприятностей.



Выполнение работ на переднем плане и в фоне


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

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

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

Имейте в виду, что приостановка работы, это не прерывание работы. Когда вы прерываете идущий процесс (нажимая клавиши прерывания, обычно это ctrl-C), то убиваете процесс насовсем. (Клавиши прерывания можно переустанавливать командой stty. По умолчанию прерывание находится под ctrl-C, но мы не можем это гарантировать для всех систем). Если работа убита, то уж убита, и нет другого способа возобновить ее, как вновь запустить сначала, используя прежнюю команду. Заметим также, что некоторые программы могут перехватывать прерывания, тогда нажатие ctrl-C не приведет к немедленному прекращению работы. Это позволит программе выполнить необходимые операции аккуратного завершения. Некоторые программы вообще не позволят вам их прервать.



X Window


X-Window является большой, мощной (и отчасти сложной) графической средой для UNIX систем. Система X-Window была разработана в Массачусетстком технологическом институте (MIT), которая стала затем стандартом для всех UNIX систем. Практически каждая рабочая станция UNIX в мире работает на одном из вариантов X-Window.

Группа программистов, возглавляемая Дэвидом Вексельблатом (David Wexelblat ), (Вы можете связаться с Девидом по E-Mail: dwex@XFree86.org ) произвела перенос MIT X Window System версия 11, релиз 6 (X11R6) для 80386/80486/Pentium UNIX систем как свободно распространяемого программного продукта. Эта версия, известная как XFree86 TM, (XFree86 является торговой маркой XFree86 Project, Inc.) доступна для System V/386, 386BSD и других реализаций UNIX для процессоров x86, включая Linux. Она включает в себя все требуемые выполняемые коды, конфигурационные файлы, библиотеки и инструментарий.

Полная настройка и использование X Window выходит за пределы этой книги. Вам следует обратиться к книге : The X Window System: A User's Guide (см. Приложение A) В этой главе мы опишем шаг за шагом установку и настройку XFree86 для Linux. Для более детального ознакомления вы можете обратиться к документации, поставляемой вместе с XFree86 (она обсуждается ниже). Другим полезным источником информации является THE LINUX XFree86 HOWTO.



Загрузка системы


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



Жесткие связи


Команда ln используется для создания множества связей для одного файла. Например, скажем, что у вас есть файл foo. Используя ls -i можно посмотреть индекс этого файла.

# ls -i foo 22192 foo #

Здесь файл foo имеет в файловой системе индекс 22192. Мы можем создать новую связь для этого файла под именем bar:

# ln foo bar

С помощью ls -i можно убедиться, что оба файла имеют один и тот же индекс.

# ls -i foo bar 22192 bar 22192 foo #

Теперь, обращаясь к foo или bar мы фактически обратимся к одном у тому же файлу. Поэтому, если мы меняем что-то в файле foo, эти же самые изменения произойдут в файле bar.

Эти связи известны, как жесткие связи (hard links), поскольку они реализуются прямой ссылкой на индекс файла. Обратите внимание, что в рамках одной файловой системы вы можете организовать только жесткие связи; символические связи (смотрите ниже) не имеют этого ограничения.

Когда вы удаляете файл командой rm, на самом деле вы удаляете только одну ссылку на файл. Если вы введете команду

# rm foo

Удаляется только связь, имеющая имя foo; bar будет как и прежде существовать. Файл только тогда действительно удаляется, когда на него больше нет связей. Обычно файлы имеют только одну связь, так что команда rm действительно приведет к удалению файла. Однако, если файл имеет много ссылок, применение rm приведет только к удалению одной связи; для того, чтобы удалить файл, вы должны удалить все связи на этот файл.

Команда ls -l покажет число ссылок на файл (кроме прочей информации)

# ls -l foo bar -rw-r--r-- 2 root root 12 Aug 5 16:51 bar -rw-r--r-- 2 root root 12 Aug 5 16:50 foo #

Вторая колонка с цифрой ``2'' показывает число связей файла.

Самом деле оказывается, что каталоги представляют из себя справочник типа "имена-индексы". Кроме прочего, каждый каталог имеет минимум две жесткие ссылки: ``.'' (ссылка, указывающая на самого себя) и ``..'' (ссылка, указывающая на родительский каталог). В корневом каталоге (/) ссылка ``..'' указывает на сам же каталог /.