Рейтинг@Mail.ru

Наши друзья и партнеры

купить дешевый 
компьютер родом из Dhgate.com



http://www.asca2014.com/

  • Типография
  • Типография окажет весь комплекс полиграфических услуг
  • print-magazin.ru

Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Обновленные главы самоучителя "Slackware/MOPSLinux для пользователя"

Уважаемые читатели!

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

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

Коллектив разработчиков MOPSLinux.

 

Оглавление

 

Глава 1. Введение в MPOSLinux. 5

Основные сведения об операционной системе MOPSLinux.. 6

Структура системы MOPSLinux.. 6

Состав и основные возможности дистрибутива MOPSLinux.. 7

Порядок установки.. 9

Контрольные вопросы... 10

Глава 2. Файловые системы.. 11

Основные сведения о файлах.. 11

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

Типы файловых систем... 12

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

Подключение и отключение файловых систем... 14

Проверка целостности ФС.. 16

Поиск дисковых ошибок командой badblocks. 16

Устранение фрагментации.. 17

Вспомогательные средства для файловых систем... 17

Другие вспомогательные средства для файловой системы ext2. 17

Диски без файловых систем... 18

Контрольные вопросы... 19

Глава 3. Использование жесткого диска. 20

Общие сведения о дисках.. 20

MBR, boot-секторы и таблица разделов. 20

Расширенные и логические разделы... 21

Деление жесткого диска на разделы... 21

Схемы разделения на разделы... 25

Файлы устройств и разделы - > в файловую систему:... 25

Контрольные вопросы... 25

Литература.. 25

Глава 4. Описание каталогов MOPSLinux. 26

Общие сведения.. 26

Корневая файловая система.. 27

Каталог /etc.. 28

Каталог /dev.. 29

Каталог /usr.. 30

Каталог /var.. 30

Каталог /proc.. 31

Контрольные вопросы... 32

Глава 5. Сценарии инициализации системы.. 33

Начальная загрузка системы... 33

Уровни выполнения системы... 33

Инициализационные сценарии уровней загрузки.. 34

Инициализация сети.. 34

Совместимость с SystemV.. 35

Другие файлы... 35

Процесс init.. 35

Процесс init запускается первым.. 35

Настройка init для запуска getty: файл настроек /etc/inittab. 35

Специальные настройки в файле /etc/inittab. 36

Загрузка в однопользовательском режиме. 36

Контрольные вопросы... 37

Глава 6. Управление учетными записями. 38

Общие сведения об учетных записях.. 38

Работа с учетными записями.. 38

Создание учетной записи.. 39

Удаление учетной записи.. 40

Создание и удаление групп.. 40

Корректировка конфигурационных файлов пользователей и групп   40

Изменение паролей.. 42

Изменение информации пользователя.. 42

Временное отключение учетной записи.. 43

Контрольные вопросы... 43

Глава 7. Управление файлами и каталогами. 44

Права собственности.. 44

Права доступа.. 45

Создание и удаление ссылок на файлы... 46

Просмотр каталогов.. 47

Смена рабочего каталога.. 47

Постраничный просмотр вывода.. 48

Объединение файлов.. 48

Корректировка атрибутов файла.. 48

Вывод текста на экран.. 49

Создание и удаление каталогов.. 49

Копирование и перемещение файлов.. 50

Управление файлами и каталогами с помощью программы Midnight Commander   50

Функциональные клавиши.. 52

Отображение списка файлов.. 53

Маски файлов для операций копирования/переименования.. 54

Меню Команды... 56

Настройка программы Midnight Commander.. 59

Получение помощи.. 61

Контрольные вопросы... 62

Глава 8. Управление процессами. 64

Перевод в фоновый режим... 64

Вывод из фонового режима.. 64

Список выполняемых программ... 65

Принудительное завершение процессов.. 67

Динамическая информация о процессах.. 67

Контрольные вопросы... 68

Глава 9. Настройка сетевых служб. 69

Практически в каждом компьютере имеются сетевые устройства. Для их нормальной работы необходимо правильно  установить и настроить программное обеспечение поддержки сети. В этой главе описана работа со следующими сетевыми утилитами: 69

Сетевое оборудование. 69

Сетевые утилиты... 69

Утилита ifconfig. 69

Утилита route. 70

Утилита netconfig. 70

Конфигурационные файлы... 70

Файл /etc/inetd.conf 70

Файл /etc/resolv.conf 70

Файл /etc/hosts. 71

Сценарии инициализации сетевых интерфейсов.. 71

/etc/rc.d/rc.inet1. 71

/etc/rc.d/rc.inet2. 71

Сетевая файловая система.. 71

Система безопасности tcp_wrappers. 72

Контрольные вопросы... 72

Глава 10. Настройка графического сервера X Window.. 73

Утилита xorgsetup. 73

Утилита xorgcfg. 73

Утилита xorgconfig.. 73

Сессионные файлы настроек.. 79

/etc/X11/xinit/xinitrc и ~/.xinitrc. 79

.Xresources и .Xdefaults. 80

Серверы и оконные менеджеры... 80

Выбор рабочего стола.. 80

Экспортирование экрана.. 81

Контрольные вопросы... 82

Глава 11. Управление пакетами системы.. 83

Обзор формата пакетов.. 83

Утилиты управления пакетами.. 83

Утилита pkgtool 83

Утилита installpkg. 84

Утилита removepkg. 85

Утилита upgradepkg. 85

Утилита rpm2tgz/rpm2targz. 86

Создание пакетов.. 86

Утилита explodepkg. 86

Утилита makepkg. 86

Контрольные вопросы... 86

Глава 12. Использование WEBMIN для настройки служб и сервисов ОС.. 87

Глава 13. Подключение принтеров и настройка систем печати. 88

Общие сведения о принтерах и системах печати.. 88

Настройка печати.. 88

Общие сведения о CUPS. 89

Структура.. 89

Планировщик. 90

Конфигурационные файлы.. 90

CUPS API 91

Berkeley and System V Commands. 91

Фильтры.. 91

Обработка изображений (CUPS Imaging). 91

Программа передачи. 91

Сетевая печать. 91

Общие сведения о возможностях в системы печати CUPS 1.1. 92

1. Программы передачи. 92

2. Поддержка баннерной страницы.. 92

3. Комплексная (digest) идентификация. 92

4. Служба каталогов. 92

5. Изменения в структуре каталогов. 92

6. Документация. 92

7. Драйверы.. 93

8. Фильтры.. 93

9. Поддержка протокола IPP.. 93

10. Сохранение задания. 93

11. Поддержка LPD-клиентов. 93

12. Принтеры и опции, определяемые пользователем.. 93

13. Интерфейс администрирования сети. 93

Применение службы печати CUPS. 94

Использование службы печати CUPS. 94

Передача файлов на печать. 94

Выбор принтера. 94

Настройка принтера. 95

Вывод на печать нескольких копий. 95

Проверка статуса принтера из командной строки. 95

Проверка статуса принтера из сети. 95

Отмена печати документа. 96

Стандартные свойства печати.. 96

Основные свойства. 96

1) Выбор размера листа, типа и источника. 96

2) Настройка ориентации. 96

3) Двусторонняя печать. 96

Свойства для баннеров. 97

1) Выбор баннерной страницы (страниц) 97

Свойства документов. 97

1) Выбор страниц. 97

2) Выбор четных или нечетных страниц. 98

3) Порядок вывода страниц. 98

4) Несколько страниц на листе. 98

5) Зеркальное копирование документа. 98

6) Настройка яркости. 99

7) Гамма-коррекция. 99

Свойства текста. 99

1) Количество символов на дюйм.. 99

2) Количество строк на дюйм.. 99

3) Количество колонок. 99

4) Поля страницы.. 100

5) Использование колонтитула. 100

Свойства изображений. 100

1) Позиционирование изображения. 100

2) Масштабирование изображения. 100

3) Изменение цвета (оттенка) изображения. 101

4) Изменение насыщенности (цвета) изображения. 101

Свойства HP-GL/2. 101

1) Черно-белая печать. 101

2) Размещение изображения (чертежа) на листе. 102

3) Толщина <пера> при печати. 102

Необработанные (или не отфильтрованные) выходные данные. 102

Сохранение свойств и стандартных настроек принтера.. 102

Свойства принтера. 102

Настройки для определенного принтера. 103

Удаление настроек. 103

Просмотр стандартных настроек. 103

Просмотр настроек определенного принтера. 103

Настройка принтера по умолчанию.. 103

Образцы принтеров. 103

Удаление образцов. 104

Добавление нового принтера в систему печати CUPS. 104

Контрольные вопросы... 113

Глава 14. Подключение и настройка модемов. 114

Общие сведения о модемах.. 114

Файлы устройств. 114

Настройка параметров последовательного порта. 114

Конфигурирование программного обеспечения. 115

Программа дозвона KPPP. 115

Введение. 115

Простое подключение. 115

Мастер подключения KPPP. 116

Диалоговая настройка соединения. 117

Общие настройки KPPP. 126

KPPP и безопасность. 130

PAP и CHAP. 131

Тонкости работы с модемом... 132

Настройка KPPP на режим обратного звонка.. 134

Программа дозвона minicom... 136

Параметры командной строки. 136

Использование. 138

Каталог набора номера. 139

Конфигурация. 140

Строка состояния. 144

Местная специфика. 144

Проблемы безопасности. 144

MISC.. 144

Файлы.. 145

Контрольные вопросы... 145

Глава 15. Подключение сканера и настройка системы сканирования. 146

Поддержка сканеров в Linux.. 146

Настройка системы сканирования.. 146

Общие сведения по интерфейсам сканеров. 146

Поддержка сканеров.. 147

Поддержка интерфейса SCSI 147

Поддержка интерфейса USB.. 147

Поддержка параллельного порта. 148

Группы и права.. 148

SANE. 148

Конфигурирование SANE. 148

Работа по сети. 148

Использование SANE с устройством Video4linux. 149

Тестирование сканера.. 149

Интерфейсы (frontends) SANE. 150

Контрольные вопросы... 150

Глава 16. Подключение и настройка USB-устройств. 151

Глава 17. Особенности работы с Bluetooth-устройствами. 152

Введение. 152

О протоколах.. 152

Bluetooth в Linux.. 152

Компоненты... 153

Kbluetoothd: сердце оболочки KDE Bluetooth. 153

Запуск kbluetoothd. 153

Работа kbluetoothd. 153

Метасервер. 153

Сервис обнаружения устройств. 154

Список "недавно использованных сервисов". 155

Проверка соединения. 155

Конфигурирование программы kbluetoothd. 155

Подтверждение входящих соединений. 155

Локальные сервисы.. 155

Средства bluetooth/SDP-kioslaves: поиск устройств и сервисов.. 156

Использование средств Bluetooth/SDP-kioslves. 156

Для продвинутых пользователей. 156

Средство OBEX-kioslave: просмотр папок через Bluetooth.. 156

Краткие сведения. 156

Формат URL. 156

Подсказки. 157

Клиент передачи OBEX: отправка файлов.. 157

Сервер передачи OBEX: получение файлов.. 157

Использование сервера передачи OBEX.. 157

Сервисная программа kbtserialchat: простое средство общения.. 158

Использование средства общения. 158

Дополнительные средства.. 158

kioclient: доступ к оболочке KIO с помощью скриптов. 158

kbtsearch: поиск устройств посредством скриптов. 158

kbtfax: отправка факса посредством приложений KDE.. 159

Безопасность Bluetooth: объединение (pairing) устройств.. 159

Что такое <объединение>?. 159

Как это происходит?. 159

PIN-код. 159

Работа с объединенными устройствами. 159

Программа KBluetoothD.. 160

Кэш имен. 160

Мета сервер. 160

Сервис обнаружения устройств. 161

Контрольные вопросы... 161

Глава 18. Добавление новых дисков (HDD, CD, DVD) 162

Добавление жесткого диска.. 162

Введение. 162

Основные сведения. 162

Типичные ситуации. 163

Добавление жесткого диска с данными. 163

Добавление нового (пустого) жесткого диска. 164

Форматирование диска. 166

Контрольные вопросы... 167

Глава 19. Настройка Web-сервера Apache. 168

Введение. 168

Настройка.. 169

Http-акселерация.. 170

SSL для Apache HTTP Server.. 172

Полезные советы... 174

 

 

Глава 1. Введение в MPOSLinux

Основные сведения об операционной системе MOPSLinux

 

Операционная система MOPSLinux - это операционная система общего назначения на базе ядра Linux для компьютеров, имеющих архитектуру совместимую с IBM PC. Она может функционировать на персональном компьютере или рабочей станции, а также совместно используемом компьютере в сети.

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

 

Рисунок 1.1. Основные компоненты компьютерной системы

 

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

 

Структура системы MOPSLinux

Основным компонентом системы MOPSLinux является ядро Linux, отвечающее за управление устройствами, планирование доступа к ресурсам, а также за обеспечение защиты процессов друг от друга. Обобщенная структура Linux-системы приведена на рис. 1.2.

Ниже перечислены основные процессы системы и модули ядра:

-         процесс init - системный процесс, отвечающий за инициализацию системы;

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

-         приложения - обычные процессы, выполняющие приложения от имени пользователей;

-         интерфейс системного вызова - позволяет процессам обращаться к сервисам операционной системы;

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

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

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

-         модуль управления памятью - поддерживает виртуальную память Linux;

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

 

Рисунок 1.2. Основные компоненты компьютерной системы

 

Более подробно о принципах функционирования операционных систем можно найти в [1].

 

Состав и основные возможности дистрибутива MOPSLinux

 

MOPSLinux - это универсальный русскоязычный дистрибутив операционной системы Linux для серверов, рабочих станций и домашних персональных компьютеров. MOPSLinux создан на базе дистрибутива Slackware Linux. По сравнению со Slackware Linux, дистрибутив MOPSLinux имеет ряд улучшений и дополнений. Так, переработана программа установки: процесс установки системы стал более простым и наглядным, многие процессы в нем автоматизированы. В состав дистрибутива включено дополнительное программное обеспечение, такое как библиотеки работы с геоданными, СУБД PostgreSQL, прокси-сервер SQUID, почтовый сервер XMail, средства администрирования системы Webmin, библиотеки поддержки SOCKS Dante, инструментальные средства разработки программ на языке PASCAL, утилиты и библиотеки поддержки протоколов Bluetooth, IrDA, IPX и OBEX, утилиты для подключения устройств через инфракрасный порт и офисный пакет OpenOffice.org.

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

-         ядро Linux;

-         графический сервер X11;

-         WEB-сервер Apache;

-         файл-сервер Samba;

-         языки программирования С++, Pascal, Perl, PHP, Python;

-         среды программирования KDevelop, FP;

-         серверы электронной почты Sendmail, Postfix, XMail;

-         оконная среда KDE;

-         оконная среда Xfce;

-         браузеры Mozilla Firefox, Konqueror;

-         интернет-пейджеры Licq, Kopete;

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

-         мультимедиа-плееры;

-         текстовые редакторы;

-         офисный пакет OpenOffice Professional;

-         серверы баз данных PostgreSQL, MySQL;

-         и другие пакеты.

MOPSLinux поддерживает:

-         все компьютерные платформы, совместимые с IBM PC;

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

-         технологию Plug&Play;

-         шины E-PCI и SATA;

-         оперативное подключение и работу USB-устройств;

-         оперативную работу с Bluetooth-устройствами и ИК-портом.

MOPSLinux поддерживает следующие файловые системы:

-         EXT2, EXT3;

-         REISERFS 3.x;

-         XFS (IBM system);

-         NFS (UNIX);

-         PROCFS (используется в Linux для контроля и отображения текущего состояния ОС);

-         NTFS (Windows NT/2000/XP только чтение);

-         FAT12, FAT16, FAT32 (Windows 9x);

-         SMBFS (Windows NT/9x);

-         HPFS (OS/2);

-         UFS (BSD-UNIX, Solaris);

-         System V (Xenix);

-         ISO9660 c MSJE (CD-ROM);

-         MinixFS (Minix);

-         AFS (Macintosh, UNIX);

-         NCPFS (Novell Netware);

MOPSLinux обеспечивает возможность функционирования в качестве контроллера домена, сервера печати, почтового сервера, WEB-сервера, FTP-сервера, DNS-сервера, межсетевого экрана и обеспечивает поддержку следующих сетевых протоколов:

-         стек TCP/IP, FTP, Telnet, DHCP, DNS;

-         POP3, SMTP, IMAP, MIME, PGP;

-         SLIP, PPP, CHAP, PAP;

-         HTTPS, SSL, SSH.

В MOPSLinux  реализована поддержка русского языка:

-         в программе установки;

-         в консоли;

-         русскоязычный интерфейс KDE, Xfce и практически всех программ с GUI;

-         русскоязычная система помощи KDE;

-         набор рускоязычных man-страниц.

MOPSLinux  поддерживает следующие антивирусные системы:

-         Trend Micro InterScanT VirusWallT for Unix.

 

Порядок установки

 

Дистрибутив MOPSLinux разработан и распространяется в соответствии с лицензией GNU GPL.

Дистрибутив MOPSLinux поставляется на DVD или CD-дисках. Если дистрибутив также может поставляться на СD-дисках, то среди них имеются установочные диски и диски с исходными кодами программ. В состав дистрибутива также входят купон для технической поддержки, инструкция по установке и конфигурированию системы, контейнер для хранения дисков.

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

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

Для установки системы необходимо загрузить компьютер с первого установочного диска MOPSLinux. После загрузки системы необходимо с помощью утилиты cfdisk создать на жестком диске Linux-разделы. Подробнее читайте об этом в [2].

Установка выполняется с помощью программы setup. Программа setup - управляемый с помощью системы меню программный комплекс для установки пакетов MOPSLinux на компьютер и настройки системы.

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

После загрузки программы setup на экране появляется главное окно программы установки.

Выбор пункта меню производится при помощи кнопок-стрелок вверх и вниз, а выбор кнопок ''Ok'' или ''Cancel'' производится при помощи стрелок вправо и влево. Опции-флаги или, иначе, переключатели (те которые отмечены [X]) выбираются при помощи клавиши пробела.

Для начала процесса установки необходимо выбрать пункт SETUP. После завершения этого этапа программа установки автоматически перейдет к конфигурированию системы (пункт CONFIGURE).

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

Конфигурирование раздела подкачки

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

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

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

Выбор варианта установки системы

Необходимо выбрать носитель информации, с которого будет устанавливаться MOPSLinux: CD-ROM, NFS, раздел жесткого диска или предварительно подмонтированный каталог.

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

Необходимо выбрать один из двух режимов установки пакетов программ: AUTO или EXPERT. В режиме AUTO серии пакетов A, AP, D, L, N и Y устанавливаются автоматически. Остальные серии пакетов пользователь может отметить для установки самостоятельно. В режиме EXPERT программа установки будет запрашивать разрешение на установку каждого пакета программ из предварительно выбранных серий пакетов.

Выбранные пакеты программ будут установлены в выбранный ранее раздел жёсткого диска.

Важно помнить, что если объем пакетов программ для установки превысит объем свободного пространства на жестком диске, процесс установки будет прерван и потребуется повторная установка системы. Для полной установки системы потребуется не менее 7Гб свободного пространства на жестком диске.

Конфигурирование системы

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

В процессе конфигурирования системы выполняются следующие действия:

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

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

Установка поддержки системы HOTPLUG

Необходимо определить, будет ли система hotplug запускаться при загрузке компьютера.

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

Установка загрузчика LILO

Необходимо указать способ установки загрузчика LILO (LInux LOader - загрузчик Linux). Самым простым и безопасным способом является "simple" - автоматическая установка загрузчика. Пункт "skip" ("Не устанавливать") не рекомендован, до тех пор, пока не имеется весьма серьёзных оснований так поступить. Пункт "expert" предназначен для опытных пользователей.

Установка <мыши>

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

Настройка сети

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

Выбор сервисов, запускаемых при загрузке системы

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

Установка часового пояса

Необходимо указать метод установки системных часов и выбрать часовой пояс.

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

Для конфигурирования Х-сервера загружается программа xorgsetup. Описание этой программы приведено в [2].

 

 

Контрольные вопросы

1.        Какие требования предъявляются к современным операционным системам и их функциям?

2.        Что такое MOPSLinux?

3.        К какому классу операционных систем относится MOPSLinux?

4.        Какие основные сервисы и компоненты входят в состав операционной системы на базе ядра Linux?

5.        Что входит в состав дистрибутива MOPSLinux?

6.        Как можно использовать дистрибутив MOPSLinux?

7.        Какие основные этапы установки дистрибутива MOPSLinux?

 

Литература

1. Операционные системы / Д.Бэкон, Т.Харрис. - СПб.: Питер; Киев: Издательская группа BHV, 2004

2. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005


Глава 2. Файловые системы

Основные сведения о файлах

Данные в операционной системе Linux представляются в виде наборов данных, или, иначе, в виде файлов. Файл - ключевое понятие Linux и применяется не только к данным, но и к устройствам. Существует шесть типов файлов:

-   файл - набор данных в некотором формате, содержание которых интерпретируется прикладными программами. Для операционной системы - это набор байтов;

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

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

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

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

-   сокет - файл, в котором содержится IP-адрес процесса.

 

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

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

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

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

Несмотря на некоторые различия, файловые системы Linux имеют похожую структуру. Основными понятиями файловой системы являются: суперблок (suрerblock), индексный дескриптор (inode), блок данных (data block), блок каталога (directory block) и косвенный блок (indirection block). В суперблоке содержатся сведения о файловой системе в целом, например, ее размер. Конкретные сведения определяются типом файловой системы. В индексном дескрипторе хранится вся информация о файле, кроме его имени. Имя файла хранится в блоке каталога, вместе с номером дескриптора. Запись каталога содержит имя файла и номер индексного дескриптора соответствующего файла. В этом дескрипторе хранятся номера нескольких блоков данных, которые используются для хранения самого файла. В inode есть место только для нескольких номеров блоков данных, однако, если требуется большее количество, то пространство для указателей на блоки данных динамически выделяется. Такие блоки называются косвенными. Для того чтобы найти блок данных, нужно сначала найти его номер в косвенном блоке.

В файловых системах имеется возможность создания дыр (hole) в файлах (команда lseek, см. man-руководство). Это означает, что файловая система предоставляет ложную информацию о том, что в каком-то месте в файле содержатся нулевые байты, но в действительности для этого не выделяются сектора (это означает, что файл будет занимать несколько меньше места на диске). Это часто используется особенно в небольших двоичных программах, библиотеках Linux, в некоторых базах данных и в других отдельных случаях. Дыры реализуются хранением специального значения в косвенном блоке или индексном дескрипторе вместо адреса блока данных. Это специальное значение показывает, что для данной части файла блоки данных не размещены и, следовательно, что в файле есть дыра. Таким способом в Linux реализовано довольно примитивное сжатие данных непосредственно на уровне файловой системы.

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

Типы файловых систем

Системы Slackware/MOPSLinux поддерживают несколько типов файловых систем. Наиболее важные из них рассмотрены ниже.

Ext2

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

Ext3

Модернизированная и журналируемая версия файловой системы ext2.

Ext

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

ReiserFS

Журналируемая файловая система. Одна из самых популярных журналируемых файловых систем для Linux.

 

Minix

Считается самой старой и самой надежной файловой системой, но достаточно ограниченной в своих возможностях, так у файлов отсутствуют некоторые временные параметры, длина имени файла ограничена
30-ю символами, а объем доступных данных не превышает 64 Мб на одну файловую систему.

Xia

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

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

msdos

Обеспечивается совместимость с системой MS-DOS (а также OS/2 и Windows NT) по файловым системам FAT12, FAT16, FAT32 и VFAT.

ntfs

Основная файловая система Windows NT.

usmdos

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

iso9660

Стандартная файловая система для CD-ROM. Довольно популярное развитие стандарта CD-ROM, выполненное Rock Ridge, которое обеспечивает автоматическую поддержку имен файлов нестандартной длины.

nfs

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

hpfs и hрfs386

Файловые системы OS/2.

hfs и hfs+

Файловые системы Apple MacOS.

dfs

Файловая система для дисков DVD.

sysv

Файловые системы SystemV/386, Coherent и Xenix.

Есть поддержка множества других файловых систем, например, Atari или Amiga. На текущий момент MOPSLinux поддерживает порядка 50 файловых систем. Такое возможно благодаря применению технологии IFS (Installable File System), которая позволяет подключать новые системы с помощью драйверов. Набор используемых файловых систем зависит от конкретной ситуации. Для MOPSLinux лучшим выбором является система ext3.

Также существует файловая система proc, которая обычно доступна через каталог /proc. В действительности, она не является файловой системой, хотя по ее структуре сложно обнаружить разницу. Эта система позволяет получить доступ к определенным структурам данных ядра, к таким, как список процессов (process list, отсюда и название) или сведения об аппаратуре. Все эти структуры выглядят как файловая система из каталогов и обычных текстовых файлов и ими можно оперировать обычными средствами работы с файловой системой. Например, для получения списка всех процессов, используется следующая команда:

$ ls -l /proc

total 0

dr-xr-xr-x   4 root     root            0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> 1

dr-xr-xr-x   4 liw      users           0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> 63

dr-xr-xr-x   4 liw      users           0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> 94

dr-xr-xr-x   4 liw      users           0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> 95

dr-xr-xr-x   4 root     users           0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> 98

dr-xr-xr-x   4 liw      users           0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> 99

-r--r--r--   1 root     root            0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> devices

-r--r--r--   1 root     root            0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> dma

-r--r--r--   1 root     root            0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> filesystems

-r--r--r--   1 root     root            0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> interrupts

-r--------   1 root     root      8654848 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> kcore

-r--r--r--   1 root     root            0 Jan 31 <st1:time minute="50" hour="11">11:50<st1:time> kmsg

-r--r--r--   1 root     root            0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> ksyms

-r--r--r--   1 root     root            0 Jan 31 <st1:time minute="51" hour="11">11:51<st1:time> loadavg

-r--r--r--   1 root     root            0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> meminfo

-r--r--r--   1 root     root            0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> modules

dr-xr-xr-x   2 root     root            0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> net

dr-xr-xr-x   4 root     root            0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> self

-r--r--r--   1 root     root            0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> stat

-r--r--r--   1 root     root            0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> uptime

-r--r--r--   1 root     root            0 Jan 31 <st1:time minute="37" hour="20">20:37<st1:time> version

Хотя система /proc и называется файловой, ни одна ее часть не взаимодействует с диском. Она существует только в представлении ядра. Даже если существует файл /proc/kcore, то он не занимает места на диске.

 

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

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

-t fstype

Указывается тип файловой системы.

-c

Производится поиск плохих блоков и, соответственно, инициализация списка плохих блоков.

-l filename

Считывается начальный список плохих блоков из файла filename.

 

Для установки файловой системы ext2 на дискету, используется следующая последовательность команд:

$ fdformat -n /dev/fd0H1440

Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB.

Formatting ... done

 

$ badblocks /dev/fd0H1440 1440 > bad-blocks

 

$ mkfs -t ext2 -l bad-blocks /dev/fd0H1440

mke2fs 0.5a, <st1:date year="1994" day="5" month="4">5-Apr-94<st1:date> for EXT2 FS 0.5, 94/03/10

360 inodes, 1440 blocks

72 blocks (5.00%) reserved for the super user

First data block=1

Block size=1024 (log=0)

Fragment size=1024 (log=0)

1 block group

8192 blocks per group, 8192 fragments per group

360 inodes per group

Writing inode tables: done

Writing superblocks and filesystem accounting information: done

 

Первая команда форматирует дискету, параметр "-n" предотвращает проверку на наличие сбойных блоков. Вторая команда осуществляет поиск сбойных блоков, вывод результатов перенаправлен в файл bad-blocks. Третья команда устанавливает файловую систему с инициализацией списка найденных сбойных блоков.

Вместо использования badblocks, в команде mkfs может быть указан параметр "-c":

$ mkfs -t ext2 -c /dev/fd0H1440

mke2fs 0.5a, <st1:date year="1994" day="5" month="4">5-Apr-94<st1:date> for EXT2 FS 0.5, 94/03/10

360 inodes, 1440 blocks

72 blocks (5.00%) reserved for the super user

First data block=1

Block size=1024 (log=0)

Fragment size=1024 (log=0)

1 block group

8192 blocks per group, 8192 fragments per group

360 inodes per group

Checking for bad blocks (read-only test): done

Writing inode tables: done

Writing superblocks and filesystem accounting information: done

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

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

 

Подключение и отключение файловых систем

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

Рассмотрим пример:

$ mount /dev/hda2 /home

$ mount /dev/hda3 /usr

Команде mount передаются два параметра: файл устройства, соответствующий диску или разделу, на котором расположена файловая система и имя каталога, к которому будет монтироваться система. После выполнения этих команд содержимое файловых систем отображается в каталогах /home и /usr соответственно. Также можно сказать, что раздел /dev/hda2 смонтирован к каталогу /home, а /dev/hda3 к каталогу /usr. Существует различие между файлом устройства /dev/hda2 и монтируемым каталогом /home. Файл устройства предоставляет доступ непосредственно к данным, расположенным на диске, а монтируемый каталог к файлам. Такой каталог называется узлом или точкой монтирования (mount point).

Команда mount пытается сама определить тип монтируемой файловой системы. В случаях, когда тип файловой системы не определяется, нужно указать параметр "-t fstype", который задает тип файловой системы однозначно. Например, чтобы смонтировать дискету MS-DOS необходимо выполнить команду:

$ mount -t msdos /dev/fd0 /floppy

Монтируемый каталог должен существовать. После монтирования файловой системы все расположенные в нем файлы будут доступны. Открытые ранее файлы также будут доступны, а файлы, являющиеся жесткими ссылками из других каталогов, будут доступны с использованием имен ссылок. Таким образом, никакого ущерба не наносится и это даже может быть полезно. Например, некоторые делают каталог /tmр символической ссылкой на каталог /var/tmр. При загрузке системы, когда файловая система /var не смонтирована, каталог /tmр размещается в системе root. После того, как /var смонтирована, каталог /var/tmp, расположенный в файловой системе root, становится недоступным. Если же /var/tmp не существует в системе root, то перед монтированием /var создание и работа с временными файлами будет невозможна.

Для защиты файловой системы от записи, команда mount запускается с опцией "-r", после чего монтирование производится в режиме <только чтение> (read-only). После этого ядро пресекает любые попытки записи, включая модификацию времени доступа к файлам в индексном дескрипторе. Монтирование с защитой от записи всегда используется при работе с CD-ROM.

Очевидно, что корневая файловая система (система root) не может быть смонтирована на какую-либо другую систему. И поэтому она монтируется во время загрузки. Считается, что система root всегда установлена: если бы она не была установлена, то компьютер не смог бы загрузиться. Название файловой системы, используемой для монтирования root, либо встроено в ядро, либо устанавливается при помощи программ LILO или rdev.

Обычно система root сначала монтируется в режиме read-only. Затем запускается программа fsck для проверки ее целостности и если все в порядке, то система перемонтируется (re-mount) в режиме <чтение-запись> (read-write). Программу fsck не следует запускать на смонтированной файловой системе, потому что изменения, произведенные при ее выполнении, могут привести к повреждению системы. Так как система root сначала монтируется в режиме read-only, то после ее проверки все неполадки могут быть полностью устранены при повторном монтировании.

Во многих системах существуют и другие файловые системы, которые должны быть смонтированы во время загрузки. Их список содержится в файле /etc/fstab.

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

$ umount /dev/hda2

$ umount /usr

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

Для выполнения операций монтирования и демонтирования требуется наличие прав доступа пользователя root. Причин к тому много, но главное то, что разрешение монтировать кому угодно что-угодно приведет к появлению ловушек для администратора. Например, загрузки с дискеты программы /bin/sh с правами root. Однако, многие пользователи довольно часто работают с дисководом и для решения этой проблемы существует несколько способов:

q      Сообщить всем пароль пользователя root. Это самый простой, но далеко не лучший выход. Он может использоваться на некоторых системах, не нуждающихся в защите (обычно не подключенных к какой-либо сети).

q      Применять какую-либо программу (например, sudo), позволяющую всем использовать команду mount. Это также не лучший способ по причине плохой защиты, хотя его применение не предоставляет напрямую права root каждому пользователю.

q      Применение пакета mtools, используемого только для работы с файловой системой MS-DOS без выполнения операции монтирования. Используется только в тех случаях, когда дисковод применяется для работы с дисками системы MS-DOS.

q      Поместить список файлов устройств, используемых при работе с гибкими дисками, и доступных узлов монтирования вместе с нужными опциями в файл /etc/fstab.

Последний метод может быть реализован путем добавления в файл /etc/fstab следующей строки:

/dev/fd0 /floppy  msdos  user,noauto 0 0

При этом указываются файл устройства для монтирования, каталог в который монтируется устройство, тип файловой системы и опции: частота резервирования командой dumр и очередность проверки командой fsck (для указания порядка в котором файловые системы проверяются после загрузки, 0 указывает не проводить проверку).

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

$ mount /floppy

Для демонтирования системы используется команда umount с соответствующими параметрами.

Если нужно работать с дискетами, имеющими различные типы файловой системы, нужно создать разные точки монтирования. Опции для каждой точки будут своими. Например, для обеспечения работы с дискетами в форматах MS-DOS и ext2 нужно внести в /etc/fstab строки:

/dev/fd0    /dosfloppy    msdos   user,noauto  0  0

/dev/fd0    /ext2floppy   ext2    user,noauto  0  0

 

Проверка целостности ФС

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

Работа с поврежденной файловой системой может привести к потерям данных и другим неполадкам. Большинство систем сконфигурировано таким образом, что команда fsck запускается автоматически при загрузке системы, поэтому возможные неполадки будут обнаружены и, возможно, исправлены перед тем, как система начнет использоваться. Если файловая система довольно большая по объему, то ее проверка может занять некоторое время, что создает определенные неудобства. Для того чтобы избежать проверки всей файловой системы, применяются различные способы контроля правильности ее отключении. Первый из них связан с тем, что если существует файл /etc/fastboot, то никаких проверок не производится. Второй способ заключается в том, что в файловой системе ext2 существует специальный флажок, расположенный в суперблоке, который используется для выявления корректности демонтирования файловой системы при последнем выключении компьютера. Эта возможность используется в программе e2fsck (версия команды fsck для файловой системы ext2fs) для избежания излишней проверки файловой системы, если флажок ее целостности установлен, то система была корректно демонтирована. Использование способа, связанного с файлом /etc/fastboot, зависит от программ, запускаемых при загрузке системы, а применение команды e2fsck работает в любом случае. Для более подробной информации о такой проверке см. man-руководство по e2fsck.

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

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

Команда fsck должна использоваться только для демонтированных систем (за исключением системы root, смонтированной в режиме read-only во время загрузки), так как при ее работе используется прямой доступ к диску и информация о внесении каких-либо изменений в файловую систему может быть недоступна операционной системе, что, обычно, приводит к нарушению ее работы.

 

Поиск дисковых ошибок командой badblocks

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

$ badblocks /dev/fd0H1440 1440 > bad-blocks

$ fsck -t ext2 -l bad-blocks /dev/fd0H1440

Parallelizing fsck version 0.5a (<st1:date year="1994" day="5" month="4">5-Apr-94<st1:date>)

e2fsck 0.5a, <st1:date year="1994" day="5" month="4">5-Apr-94<st1:date> for EXT2 FS 0.5, 94/03/10

Pass 1: Checking inodes, blocks, and sizes

Pass 2: Checking directory structure

Pass 3: Checking directory connectivity

Pass 4: Check reference counts.

Pass 5: Checking group summary information.

/dev/fd0H1440: ***** FILE SYSTEM WAS MODIFIED *****

/dev/fd0H1440: 11/360 files, 63/1440 blocks

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

 

Устранение фрагментации

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

Файловая система ext2 пытается уменьшить фрагментацию, храня все блоки в файле близко друг к другу, даже если они не могут быть сохранены в последовательных секторах. Ext2 действительно всегда распределяет свободный блок, который является самым близким к другим блокам в файле. Для ext2, следовательно, редко нужно беспокоиться относительно фрагментации.

 

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

Есть ряд простых утилит для управления файловыми системами. Утилита df показывает свободное место на диске для одной или нескольких файловых систем. Она показывает, как именно используется диск (размеры файлов и каталогов).

Утилита sync принудительно записывает все оставшиеся в буфере блоки на диск. Процесс-демон update вызывает его автоматически. Утилита sync часто помогает избежать крупных проблем, например, если update или его вспомогательный процесс bdflush завис.

 

Другие вспомогательные средства для файловой системы ext2

В дополнение к программе создания файловой системы (mke2fs) и программе для ее проверки (e2fsck) файловая система ext2 имеет еще ряд полезных утилит.

Утилита tune2fs позволяет выполнить <тонкую> настройку параметров файловой системы. Наиболее часто используются следующие настройки:

q      Максимальный счетчик монтирования. Утилита e2fsck выполняет проверку файловой системы после исчерпания данного счетчика, даже если установлен флажок целостности файловой системы.

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

q      Число блоков, зарезервированных для root. В файловой системе ext2 резервируется несколько блоков для root так, что если файловая система заполняется, все еще возможно администрирование без удаления чего-нибудь. Зарезервированное количество блоков по умолчанию составляет 5 процентов, что на большинстве дисков не является расточительным. Однако для дискет нет никакого смысла в резервировании  даже одного блока.

Утилита dumрe2fs выводит сведения о файловой системе ext2, обычно из суперблока. Ниже показан типовой вывод. Часть информации в выводе техническая, и требует понимания того, как работает файловая система.

dumрe2fs 0.5b, <st1:date year="1995" day="11" month="3">11-Mar-95<st1:date> for EXT2 FS 0.5a, 94/10/23

Filesystem magic number:  0xEF53

Filesystem state:         clean

Errors behavior:          Continue

Inode count:              360

Block count:              1440

Reserved block count:     72

Free blocks:              1133

Free inodes:              326

First block:              1

Block size:               1024

Fragment size:            1024

Blocks per group:         8192

Fragments per group:      8192

Inodes per group:         360

Last mount time:          Tue Aug  8 <st1:time minute="52" hour="1">01:52:52<st1:time> 1995

Last write time:          Tue Aug  8 <st1:time minute="53" hour="1">01:53:28<st1:time> 1995

Mount count:              3

Maximum mount count:      20

Last checked:             Tue Aug  8 <st1:time minute="6" hour="1">01:06:31<st1:time> 1995

Check interval:           0

Reserved blocks uid:      0 (user root)

Reserved blocks gid:      0 (group root)

Group 0:

  Block bitmap at 3, Inode bitmap at 4, Inode table at 5

  1133 free blocks, 326 free inodes, 2 directories

  Free blocks: 307-1439

  Free inodes: 35-360

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

Утилиты dump и restore могут использоваться для резервирования и восстановления файловой системы ext2. Они являются специфическими версиями для ext2 традиционных для UNIX инструментальных средств.

 

Диски без файловых систем

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

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

Одна из причин использования прямого доступа к диску (без применения файловой системы) - это создание копий. Например, если диск содержит частично поврежденную файловую систему, то при возможности следует создать его копию перед тем, как пытаться что-либо сделать. Для этого можно использовать программу dd:

$ dd if=/dev/fd0H1440 of=floppy-image

2880+0 records in

2880+0 records out

$ dd if=floppy-image of=/dev/fd0H1440

2880+0 records in

2880+0 records out

            Сначала dd выполняет точную копию дискеты в файл floppy-image, а затем записывает копию обратно на диск (предполагается, что перед выполнением последней команды была вставлена другая дискета).

 

 

Контрольные вопросы

1.        Какие типы файлов используются в операционной системе Linux?

2.        Какие типы файловых систем поддерживает ОС MOPSLinux?

3.        Для чего необходимо смонтировать файловую систему?

4.        Для каких файловых систем используется команда fsck и почему?

5.        Что такое фрагментация? Каким образом можно ее уменьшить?

6.        Какие утилиты используются для управления файловыми системами?

7.        Возможен ли уход от применения файловых систем? Если да, то какие преимущества он дает?

 

Литература

1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005

2. ??


Глава 3. Использование жесткого диска

 

Общие сведения о дисках

Жесткий диск - одно из основных устройств компьютера. Он используется для хранения программ и данных. Для работы с жестким диском на нем должен быть создан один или несколько разделов (partitions), причем каждый раздел представляется так, как если бы это был отдельный диск. Разделение используется, например, для раздельного хранения системных и пользовательских программ и данных или при работе с двумя и более операционными системами на одном компьютере. При этом каждая операционная система использует для работы отдельный раздел и не обращается к другим. Таким образом, на одном жестком диске может быть установлено несколько систем. Без использования разделов возникла бы необходимость в приобретении и установке дополнительных жестких дисков.

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

Жесткий диск (HDD - harddisk drive) представляет собой блок из нескольких дисков (disks) по поверхностям (sides) которых перемещаются головки (heads). Позиционируются головки по концентрическим дорожкам, или иначе трекам (tracks), каждый из которых разделен на сектора (sectors). Сектор является минимальным адресуемым блоком данных для диска и его размер равен 512 байтам. Дорожки, равноудаленные от центра диска и образующие как бы цилиндрическую поверхность, называют цилиндрами (cilinders).
Как правило, современные диски (в режиме адресации LBA) представляют собой несколько сот цилиндров имеющих 63-254 поверхностей по 63 сектора данных на каждой.

 

MBR, boot-секторы и таблица разделов

Информация о разделах жесткого диска находится в первом секторе (т.е. в первом секторе первой дорожки первого диска) и хранится в виде таблицы разделов (partition table). В этом секторе также хранится и главная загрузочная запись (master boot record). Часто первую дорожку называют MBR, т.к. в секторах этой дорожки записываются коды различных загрузчиков. При загрузке компьютера базовая система ввода-вывода или BIOS (сокращение от Basic Input/Output System) загружает его в оперативную память и инициирует выполнение записанной в него программы-загрузчика. Эта программа считывает таблицу разделов, находит активный раздел (т.е. раздел, отмеченный как загрузочный) и считывает первый сектор этого раздела, который называется загрузочным сектором (boot sector) раздела. Этот сектор содержит другую небольшую программу, которая, в свою очередь, считывает начальную часть операционной системы, расположенной в этом разделе и выполняет ее.

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

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

$ fdisk -l /dev/hda

Disk /dev/hda: 15 heads, 57 sectors, 790 cylinders

Units = cylinders of 855 * 512 bytes

Device Boot     Begin   Start     End  Blocks   Id  System

/dev/hda1           1       1      24   10231+  82  Linux swap

/dev/hda2          25      25      48   10260   83  Linux native

/dev/hda3          49      49     408  153900   83  Linux native

/dev/hda4         409     409     790  163305    5  Extended

/dev/hda5         409     409     744  143611+  83  Linux native

/dev/hda6         745     745     790   19636+  83  Linux native

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

 

Расширенные и логические разделы

Изначально, в схеме разделения жесткого диска в персональных компьютерах допускалось использование только четырех разделов. Но вскоре этого оказалось недостаточно, частично по причине того, что многим пользователям для работы требуется более четырех операционных систем (например, Linux, MS-DOS, OS/2, Minix, FreeBSD, NetBSD, Windows/NT и т.д.), но в основном из-за того, что одной системой используется несколько разделов. Например, в системе Linux область подкачки (swap-область) чаще всего размещается в отдельном разделе, а не в основном разделе Linux.

Для решения этой проблемы была разработана схема, использующая расширенные разделы (extended partitions). Она позволяет разбивать основной раздел (primary partition) на подразделы. Основной раздел, разбитый таким образом, называется расширенным разделом (extended рartition), а подразделы называются логическими разделами (logical рartitions). Они используются так же, как и основные разделы, различие состоит только в схеме их создания.

Ниже приведен пример деления жесткого диска на разделы (табл. 4.1). Диск разделен на три основных раздела. Второй раздел при этом разделен на два логических раздела. Часть диска не используется вообще. Весь диск, как целое, и каждый основной раздел имеют свой загрузочный сектор. 

Таблица 1.1. Пример разбиения жесткого диска



MBR   

Загрузочный сектор

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

Область данных раздела 

Загрузочный сектор

Логический раздел

Расширенный раздел

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

Область данных раздела

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

Логический раздел

Область данных раздела

Неиспользуемое дисковое пространство

 

Загрузочный сектор

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

Область данных раздела

 

Деление жесткого диска на разделы

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

Деление жесткого диска на разделы производится с помощью программ fdisk или cfdisk.

В связи с тем, что в системе Linux используются блоки размером в 1 Кб, т.е. в два сектора, каждый раздел должен содержать четное число секторов. Нечетное число секторов приведет к тому, что последний из них не будет использоваться. Это ни на что не влияет, но при запуске программы fdisk будет выдано предупреждение.

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

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

Для разметки жесткого диска в приглашении командной строки необходимо ввести следующую команду:

#cfdisk

 

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

ВНИМАНИЕ:
Перед тем, как удалять разделы очень важно сохранить на резервных носителях все программы и наборы данных, которые могут понадобиться в дальнейшем.

Для создания раздела необходимо с помощью клавиш ↑ ↓ выбрать Free Space, а клавишами ← → выбрать команду New и нажать Enter.

Рисунок 1.3.

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

Рисунок 1.4.

затем ввести размер раздела в мегабайтах (MB)

Рисунок 1.5.

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

По-умолчанию все созданные разделы имеют тип 83 (Linux),

Рисунок 1.6.

поэтому для одного из разделов необходимо изменить тип на 82 (Linux swap). Для изменения типа раздела необходимо с помощью клавиш ↑ ↓ выбрать требуемый раздел, а клавишами ← → выбрать команду Type и ввести 82.

Рисунок 1.7.

 

Рисунок 1.8.

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

Рисунок 1.9.

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

Рисунок 1.10.

Чтобы выйти из программы необходимо выбрать команду Quit.

Рисунок 1.11.

 

Схемы разделения на разделы

Для жестких дисков небольшого объема достаточно использовать один раздел. При использовании диска большого объема (боле 10 Гбайт) обычно его разбивают на несколько разделов.

Обычно используется отдельный раздел или диск для корневой файловой системы, которая содержит каталоги /bin, /etc, /dev, /lib, /tmp /root и некоторые другие, требуемые для нормальной загрузки и запуска системы. Для личных каталогов пользователей (каталог /home) и для swap-области рекомендуется использовать отдельные разделы или диски. Также в отдельном разделе может быть размещен и каталог /usr. Разделение каталогов с системными и пользовательскими файлами облегчает создание резервных копий, восстановление и обновление программ.

Для установки операционной системы MOPSLinux рекомендуется создать как минимум два раздела: один для корневой файловой системы (не менее 7Гб для полной установки) и один для подкачки (100-200Мб). Желательно создать ещё один раздел (1-3Гб) для каталога /home. В этом случае при переустановке системы личная информация и настройки пользователей сохранятся.

Файлы устройств и разделы - > в файловую систему:

Каждому основному и расширенному разделу соответствует отдельный файл устройства. Существует соглашение для имен подобных файлов, которое состоит в добавлении номера раздела к имени файла самого диска. 1-4 разделы являются основными (вне зависимости от того, сколько существует основных разделов), а 5-8 - логическими (вне зависимости от того, к какому основному разделу они относятся). Например, /dev/hda1 соответствует первому основному разделу первого IDE-диска, а /dev/sdb7 третьему расширенному разделу второго SCSI-диска.

 

 

Контрольные вопросы

1.        Для чего на жестком диске создаются разделы?

2.        Где хранится информация о разделах жесткого диска?

3.        Какую информацию хранит таблица разделов? К чему может привести ее искажение?

4.        Что такое расширенный раздел?

5.        Какие команды используются для деления жесткого диска на разделы?

6.        Когда становится целесообразным создание разделов на жестком диске?

 

Литература

1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005

2. ??


Глава 4. Описание каталогов MOPSLinux

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

 

Общие сведения

Этот раздел основан на документе Linux filesystem standard, FSSTND, версии 1.2, который пытается установить стандарт на организацию дерева каталогов в Linux-системе. Такой стандарт имеет то преимущество, что будет проще писать или портировать программное обеспечение для Linux и управлять Linux-машинами, так как все будет находиться в строго определенных местах. Никто не заставляет следовать данному свободному стандарту, но стандарт имеет поддержку большинства, если не всех, дистрибутивов Linux. Не следует без крайне важных причин отказываться от поддержки FSSTND. FSSTND пытается следовать за традициями Unix и текущими тенденциями, делая тем самым Linux-системы совместимыми с другими Unix-системами, и наоборот.

Этот раздел не рассматривает FSSTND во всех деталях. Системный администратор должен также прочитать спецификации FSSTND для полного понимания.

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

Полное дерево каталогов разделено на части, каждая из которых может располагаться на своем диске или в своем разделе в интересах упрощения системного администрирования и резервирования. Это позволяет работать в случае недостатка места на дисках. Главные части дерева каталогов: файловые системы root, /usr, /var и /home (рис. 4.1). Каждая часть имеет свою цель. Дерево каталогов было разработано так, чтобы оно хорошо работало в сети Linux-машин, которые могут совместно использовать некоторые части файловых систем устройств только для чтения (например, CD-ROM), или сети с NFS.

Рисунок  1.12. Части дерева каталогов Unix.

Роли различных частей дерева каталогов описаны ниже.

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

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

q      Файловая система /var содержит файлы, которые изменяются в ходе работы системы. Например, там лежат каталоги буферов для почты, новостей, печати и т.п., файлы протоколов, форматированных man-страниц и временные файлы.

q      Файловая система /home содержит все домашние каталоги пользователей системы, то есть, все реальные данные системы. Отделение пользовательских каталогов от системы упрощает резервирование данных. Если пользователей много, эта файловая система может быть разделена на несколько (например, /home/students и /home/teacher).

Хотя различные части выше были названы файловыми системами, это не значит, что они фактически находятся на отдельных дисках. Они могут храниться на одном диске, если речь идето небольшом сервере или личном однопользовательском компьютере. Дерево каталогов может быть также разделено по-другому, в зависимости от того, насколько большие диски использованы, и как распределено место на них для различных целей, тем не менее, важно, чтобы все стандартные имена работали; даже если, скажем, /var и /usr фактически на том же самом разделе, имена /usr/lib/libc.a и /var/log/messages должны работать, например, перемещая файлы из /var в /usr/var, и делая /var ссылкой на /usr/var.

Структура файловой системы в Unix группирует файлы по их назначению, то есть, все команды находятся в одном месте, все файлы данных в другом, документация в третьем и так далее. Альтернативный вариант группировал файлы согласно программе, которой они принадлежат, то есть, все Emacs-файлы были бы в одном каталоге, весь TeX в другом, и так далее. Проблема с последним подходом состоит в том, что это делает трудным совместно использовать файлы (каталог программ часто содержит статические, общие, изменяющиеся и личные файлы), и иногда даже находить файлы, например, man-страницы в огромном числе мест, благодаря чему поиск их программой просмотра сильно осложняется.

 

Корневая файловая система

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

Файловая система дистрибутива имеет архитектуру классической файловой системы ОС Linux с единым корневым каталогом, обозначаемым символом обратной косой черты ("слэш") - /.

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

/bin

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

/boot
В этом каталоге хранятся файлы, используемые загрузчиком ОС - LInux LOader (LILO). Этот каталог так же практически не изменяется после установки.

/dev
В этом каталоге размещены описания устройств системы. В Linux всё рассматривается, как файл, даже различные устройства, такие как последовательные порты, жёсткие диски и сканеры. Для получения доступа к определённому устройству, необходимо чтобы существовал специальный файл, называемый device node. Все эти файлы находятся в каталоге /dev. Аналогично устроено большинство UNIX-подобных операционных систем.

/etc
Этот каталог содержит файлы настроек: всё, от конфигурационных файлов системы X Window, базы данных пользователей и до стартовых сценариев.

/home
В этом каталоге размещены домашние каталоги пользователей. MOPSLinux является многопользовательской системой и каждому пользователю присваивается имя и уникальный каталог для персональных файлов. Этот каталог называется "home" (домашним) каталогом пользователя.

/lib
В этом каталоге находятся системные библиотеки, необходимые для основных программ: библиотека C, динамический загрузчик, библиотека ncurses, модули ядра и другое.

/lib/modules

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

/lost+found
В этом каталоге сохраняются восстановленные части файловой системы. При загрузке системы происходит проверка файловых систем на наличие ошибок. Для исправления ошибок файловой системы запускается программа fsck.

/mnt
Этот каталог предоставляется как временная точка монтирования для жёстких дисков, дискет, компакт-дисков или отключаемых устройств.

/opt
В этом каталоге размещаются дополнительные пакеты программ. Особенность Linux в том, что все пакеты программ, устанавливаются в этот каталог, например /opt/<программный пакет>. В последствии если этот пакет больше не будет нужен, то достаточно всего лишь удалить соответствующий каталог. В дистрибутивах SlackWare и MOPSLinux некоторые программы изначально поставляются в каталоге /opt (например, KDE - в /opt/kde).

/proc
Это специальный каталог не входящий в файловую систему. Каталог /proc представляет собой виртуальную файловую систему, которая предоставляет доступ к информации ядра. Различная информация, которую ядро может сообщить пользователям, находится в "файлах" каталога /proc. Например, в файле /proc/modules находится список загруженных модулей ядра. А в файле /proc/cpuinfo - информация о процессоре компьютера.

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

/sbin
В этом каталоге хранятся основные программы, выполняемые пользователем root а так же программы, выполняемые в процессе загрузки. Обычные пользователи не могут пользоваться этими программами.

/tmp
Временное хранилище данных. Все пользователи имеют права чтения и записи в этом каталоге.

/usr
Это один из самых больших каталогов в системе. Практически всё остальное расположено здесь. Программы, документация, исходный код ядра и система X Window. Именно в этот каталог, чаще всего, устанавливаются программы.

/var
В этом каталоге хранятся системные лог-файлы, кэш-файлы и файлы-замки программ. Это каталог для часто меняющихся данных.

 

Каталог /etc

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

/etc/rc.d

Командные файлы, выполняемые при запуске системы или при смене ее уровня выполнения.

/etc/passwd

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

/etc/fdprm

Таблица параметров флоппи-дисковода, определяющая формат записи. Устанавливается программой setfdprm.

/etc/fstab

Список файловых систем, автоматически монтируемых во время запуска системы командой mount -a (она запускается из командного файла /etc/rc.d/rc.S). Здесь также содержится информация о swaр-областях, автоматически устанавливаемых командой swapon -a.

/etc/group

Подобен файлу /etc/рasswd, только здесь содержится информация о группах, а не о пользователях.

/etc/inittab

Конфигурационный файл демона init.

/etc/issue

Выводится программой getty перед приглашением login. Обычно здесь содержится краткое описание системы.

/etc/magic

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

/etc/motd

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

/etc/mtab

Список смонтированных на данный момент файловых систем. Изначально устанавливается командными файлами при запуске, а затем автоматически модифицируется командой mount. Используется при необходимости получения доступа к смонтированным файловым системам (например, командой df).

/etc/shadow

Теневая база данных пользователей. При этом информация из файла /etc/рasswd перемещается в /etc/shadow, который недоступен для чтению никому, кроме пользователя root. Это усложняет взлом системы.

/etc/login.defs

Конфигурационный файл команды login.

/etc/printcap

То же, что и /etc/termcap, только используется при работе с принтером.

/etc/profile

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

/etc/securetty

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

/etc/shells

Список рабочих оболочек. Команда chsh позволяет менять рабочую оболочку только на оболочки, находящиеся в этом файле. Процесс ftрd, предоставляющий работу с FTР, проверяет наличие оболочки пользователя в файле /etc/shells и не позволяет пользователю подключится к системе, пока ее имя не будет найдено в этом файле.

/etc/termcap

База данных совместимости терминалов. Здесь находятся escape-последовательности для различных типов терминалов, что позволяет работать программам на разных типах терминалов.

 

Каталог /dev

В этом каталоге находятся файлы устройств. Названия этих файлов соответствуют специальным положениям, рассмотренным в списке устройств (Device list). Файлы устройств создаются во время установки системы, а затем с помощью скрипта /dev/MAKEDEV. Файл /dev/MAKEDEV.local используется при создании локальных файлов устройств или ссылок (т.е. тех, что не соответствуют стандарту MAKEDEV).

Каталог /usr

Обычно файловая система /usr достаточно большая по объему, так как многие программы установлены именно здесь. Вся информация в каталоге /usr помещается туда во время установки системы. Отдельно устанавливаемые пакеты программ и другие файлы размещаются в каталоге /usr/local. Некоторые подкаталоги системы /usr рассмотрены ниже (для более подробной информации см. описание стандарта FSSTND).

/usr/X11R6

Все файлы, используемые системой X Window. Для упрощения установки и администрирования, файлы системы X Window размещаются в отдельной структуре каталогов, которая находится в /usr/X11R6 и идентична структуре /usr.

/usr/bin

Практически все команды, хотя некоторые находятся в /bin или в /usr/local/bin.

/usr/sbin

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

/usr/man, /usr/info, /usr/doc

Файлы man-руководств, документации GNU Info и другая документация.

/usr/include

Подключаемые файлы библиотек для языка С.

/usr/src

Исходные тексты программ, установленных в системе, в том числе ядра Linux.

/usr/lib

Неизменяемые файлы данных для программ и подсистем, включая некоторые конфигурационные файлы. Имя lib происходит от library (библиотека); первоначально библиотеки подпрограмм для программирования хранились в  /usr/lib.

/usr/local

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

 

Каталог /var

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

/var/man/cat*

Временный каталог для форматируемых страниц руководств. Источником этих страниц является каталог /usr/man/man*. Некоторые руководства поставляются в отформатированном виде. Они располагаются в /usr/man/cat*. Остальные руководства перед просмотром должны быть отформатированы. Затем они помещаются в каталог /var/man и при повторном просмотре в форматировании не нуждаются. Каталог /var/man/cat часто очищается, таким же образом, как и прочие временные каталоги.

/var/lib

Файлы, изменяемые при нормальном функционировании системы.

/var/local

Изменяемые данные для программ, установленных в /usr/local (то есть, программы которые были установлены администратором системы). Обратите внимание, что даже в местном масштабе установленные программы должны использовать другие /var каталоги, например, /var/lock.

/var/lock

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

/var/log

Журнальные файлы различных программ, в особенности login (/var/log/wtmр, куда записываются все подключения и выходы из системы) и syslog (/var/log/messages, где обычно хранятся все сообщения ядра и системных программ). Файлы из /var/log необходимо регулярно удалять, иначе разрастутся сверх всякой меры.

/var/run

Файлы, информация в которых соответствует действительности только до очередной перезагрузки системы. Например, файл /var/run/utmp содержит информацию о пользователях, подключенных к системе в данный момент.

/var/spool

Каталоги, используемые для хранения почты, новостей, очереди для принтера, а также для других задач. Для каждой задачи существует отдельный каталог в /var/spool, например, почтовые ящики пользователей хранятся в /var/spool/mail.

/var/tmp

Каталог для временных файлов, размер которых достаточно велик или время существования которых больше, чем в /tmp. Хотя администратор системы не должен бы держать очень уж старые файлы в /var/tmp.

 

Каталог /proc

Файловая система /proc является виртуальной и в действительности она не существует на диске. Ядро создает ее в памяти компьютера. Система /proc предоставляет информацию о системе (изначально только о процессах - отсюда ее название). Некоторые наиболее важные файлы и каталоги рассмотрены ниже. Более подробную информацию о структуре и содержании файловой системы /proc можно найти в man-руководстве к proc.

/proc/1

Каталог, содержащий информацию о процессе номер 1. Для каждого процесса существует отдельный каталог в /proc, именем которого является его числовой идентификатор.

/proc/cpuinfo

Информация о процессоре, такая как тип процессора, его модель, производительность и др.

/proc/devices

Список драйверов устройств, встроенных в действующее ядро.

/proc/dma

Задействованные в данный момент каналы DMA.

/proc/filesystems

Файловые системы, встроенные в ядро.

/proc/interruрts

Задействованные в данный момент прерывания.

/proc/ioports

Задействованные в данный момент порты ввода/вывода.

/proc/kcore

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

/proc/kmsg

Сообщения, выдаваемые ядром. Они также перенаправляются в syslog.

/proc/ksyms

Таблица символов ядра.

/proc/loadavg

Ориентировочная загруженность системы.

/proc/meminfo

Информация об использовании памяти, как физической, так и swap-области.

/proc/modules

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

/proc/net

Информация о сетевых протоколах.

/proc/self

Символическая ссылка к каталогу процесса, пытающегося получить информацию из /proc. При попытке двух различных процессов получить какую-либо информацию в /proc, они получают ссылки на различные каталоги. Это облегчает доступ программ к собственному каталогу процесса.

/proc/stat

Различная статистическая информация о работе системы.

/proc/uptime

Время, в течение которого система находится в рабочем состоянии.

/proc/version

Версия ядра.

Хотя многие файлы имеют обычный текстовый формат, некоторые из них имеют собственный. Существует много программ, которые не только преобразуют такие файлы в формат, доступный для чтения, но и предоставляют некоторые функции. Например, программа free считывает файл /proc/meminfo и преобразует значения, указанные в байтах, в килобайты (а также предоставляет некоторую дополнительную информацию).

 

 

Контрольные вопросы

1.        Назовите главные части дерева каталогов.

2.        Каковы основные свойства корневой файловой системы?

3.        Какую информацию содержит файловая система /usr?

4.        Какие файлы содержит файловая система /var?

5.        Какую информацию содержит файловая система /home?

6.        В каком каталоге хранится большинство конфигурационных файлов?

 

Литература

1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005

2. ??


Глава 5. Сценарии инициализации системы

Файлы, выполняемые системой при её инициализации, хранятся в каталоге /etc/rc.d. Дистрибутив использует расположение сценариев инициализации в стиле BSD. Каждое задание или runlevel (уровень загрузки) имеет свой rc-файл. Таким образом, получается организованная структура, которой легко пользоваться.

Есть несколько категорий сценариев инициализации. Начальная загрузка системы, уровни загрузки, инициализация сети и SystemV-совместимые.

 

Начальная загрузка системы

Первая программа, запускаемая в системе после ядра Linux - это init(8). Эта программа читает файл /etc/inittab(5), чтобы узнать, как загружать систему. Запускает сценарий /etc/rc.d/rc.S для подготовки перед переключением на выбранный уровень загрузки (runlevel). Файл rc.S активизирует виртуальную память, подключает файловые системы, очищает определённые каталоги, инициализирует устройства Plug and Play, загружает модули ядра, настраивает PCMCIA-устройства, активизирует последовательные порты и запускает загрузочные сценарии SystemV (если таковые присутствуют). Скрипт rc.S выполняет много задач самостоятельно, но также до завершения своей работы, он вызовет сценарии из каталога /etc/rc.d, представленные в табл. 2.1.

Таблица 1.2. Сценарии из каталога /etc/rc.d

Скрипт 

Описание

rc.S

Это и есть скрипт инициализации

rc.modules

Загружает такие модули ядра, как поддержка сетевой карты, PPP и другие. Если сценарий находит rc.netdevice, то он выполнит и его

rc.pcmcia

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

rc.serial

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

rc.sysvinit

Ищет инициализационные сценарии SystemV, соответствующие выбранному уровню загрузки и выполняет их

 

Уровни выполнения системы

Уровни выполнения являются режимами работы init и определяют выполняемые системные процессы и предоставляемые сервисы. Уровни выполнения обозначаются номерами (табл. 4.3). Нет единого мнения по поводу использования определяемых администратором уровней выполнения (2-5). Одни системные администраторы настраивают разные уровни выполнения для разных вариантов работы системы, другие ограничиваются одним вариантом, и не меняют уровни выполнения вовсе. Разные дистрибутивы Linux поставляются с разными настройками. Обычно выбор определяется предпочтениями администратора или пользователя.

Таблица 1.3. Уровни выполнения

Уровни

Назначение

0

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

1

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

2-4

Нормальная работа (настраивается администратором).

5

Нормальная работа (запускается X Window System).

6

Перезагрузка.

 

Уровни выполнения настраиваются в /etc/inittab строками вида:

l2:2:wait:/etc/rc.d/rc.S

Первое поле является меткой-идентификатором. Второе определяет, что данная строка применима только для уровня выполнения 2. Третье определяет, что init должен выполнить команду в четвертом поле только один раз и ждать (при переходе на данный уровень) и подождать ее выполнения. Скрипт /etc/rc.d/rc.S выполняет все команды для запуска и остановки сервисов, работающих на уровне выполнения 2.

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

Когда init запускается, он ищет в /etc/inittab строку, в которой указан уровень выполнения, указанный по умолчанию:

id:2:initdefault:

Можно указать, чтобы init при запуске установил не уровень выполнения по умолчанию, передав при загрузке в качестве параметра аргумент single или emergency. Ядерные параметры командной строки могут быть переданы, например, через LILO. Это позволяет выбрать, например, однопользовательский режим (уровень выполнения 1).

Когда система работает, можно поменять уровень выполнения командой telinit. При смене уровня выполнения, init выполнит соответствующие команды из файла /etc/inittab.

 

Инициализационные сценарии уровней загрузки

После того, как инициализация системы завершена, init переходит к инициализации уровня загрузки. Уровень загрузки определяет, в каком режиме будет работать компьютер: в многопользовательском (multiuser logins) режиме или только в однопользовательском (single user), требуются ли сетевые сервисы и будет ли использоваться X Window или agetty(8) для управления входом в систему (logins). Файлы, приведённые ниже, определяют разные уровни загрузки.

q      rc.0 - выключает систему (runlevel 0). По умолчанию, это символическая ссылка на файл rc.6;

q      rc.4 - многопользовательский запуск (runlevel 4), но в X11 с KDM в качестве менеджера входа в систему;

q      rc.6 - перезагружает систему (runlevel 6);

q      rc.K - запуск в однопользовательском режиме (runlevel 1);

q      rc.M - многопользовательский режим (runlevel 2 и 3), но со стандартным текстовым входом (login) - используется по умолчанию.

 

Инициализация сети

Уровни загрузки 2, 3 и 4 запустят сетевые сервисы. Следующие файлы осуществляют инициализацию сети:

q      rc.inet1 - файл, созданный программой netconfig, обеспечивает настройку сетевого интерфейса;

q      rc.inet2 - выполняется после rc.inet1 и запускает основные сетевые сервисы;

q      rc.httpd - запускает вэб-сервер Apache;

q      rc.samba  - запускает Samba-сервис.

 

Совместимость с SystemV

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

Скрипт rc.sysinit произведёт поиск всех сценариев SystemV в каталоге /etc/rc.d и выполнит их, если уровень загрузки соответствующий. Это полезно, если используются коммерческое программное обеспечение, которое устанавливает сценарии SystemV, в то же время, можно пользоваться и сценариями BSD.

Другие файлы

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

q      rc.gpm запускает сервис основной поддержки <мыши> (general purpose mouse). Это позволит копировать и вставлять текст в консоли;

q      rc.font загружает пользовательский экранный шрифт для режима командной строки;

q      rc.local содержит всю специфическую загрузочную информацию для конкретной системы. В только что установленном дистрибутиве этот файл пуст. Он зарезервирован для использования администратором системы. При загрузке этот сценарий выполняется в последнюю очередь.

Для активизации сценария достаточно добавить ему разрешение на выполнение при помощи программы chmod. Чтобы выключить сценарий, необходимо удалить разрешение на выполнение соответствующего файла.

 

Процесс init

Эта глава описывает процесс init, который является первым процессом уровня пользователя, запускаемым ядром. init имеет много важных режимов работы, таких как запуск getty (чтобы пользователи могли войти в систему), изменение уровня выполнения системы и удаление ненужных процессов. Эта глава объясняет, как настроить init и как можно менять и использовать различные уровни выполнения.

Процесс init запускается первым

init является одной из тех программ, которые абсолютно необходимы для системы Linux. Дистрибутивы Slackware/MOPSLinux поставляются с настройками для init, которые подходят для большинства систем.

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

Ядро ищет init в нескольких местах, в которых он располагается по традиции. В системах Slackware/MOPSLinux обычно используется имя /sbin/init. Если ядро не нашло init, оно пробует запустить /bin/sh. Если и тут происходит неудача, система выдает ошибку и останавливается.

Когда init запущен, он завершает процесс загрузки системы и выполняет ряд административных задач, таких как проверка файловых систем, очистка каталога /tmр, запуск различных сервисов и запуск процесса getty для каждого терминала и виртуальной консоли откуда пользователи могут входить в систему.

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

Настройка init для запуска getty: файл настроек /etc/inittab

При запуске системы init читает файл настроек /etc/inittab. Когда система уже работает, он перечитает данный файл при получении сигнала HUP. Такое свойство избавляет от необходимости перезагружать систему, чтобы сделать изменения конфигурации актуальными для init.

Файл /etc/inittab устроен довольно просто.  Каждая строка в файле состоит из четырех полей, разделенных двоеточиями:

id:runlevels:action:process

Поля описаны ниже. Кроме таких строк файл /etc/inittab может содержать пустые строки и строки комментариев, начинающиеся со знака `#'; такие строки игнорируются системой.

id

Определяет строку в файле. Для строк настройки getty, указывает терминал, на котором будет запущена данная копия (символ после /dev/tty в имени файла устройства). Для других строк данное значение особого значения не имеет и нужно только для выполнения требований формата файла. Значение в данной позиции должно быть уникальным для каждой строки!

runlevels

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

action

Задает действие, которое должно быть выполнено, например resрawn для того, чтобы выполнить команду в следующем поле многократно или once, чтобы выполнить команду только один раз.

рrocess

Выполняемая команда.

Для запуска getty на первом виртуальном терминале (/dev/tty1), на всех нормальных многопользовательских уровнях выполнения (2-5), применяется строка:

1:2345:resрawn:/sbin/getty 9600 tty1

Первое поле строки указывает, что это строка для устройства /dev/tty1. Второе поле говорит, что это применяется к уровням выполнения 2, 3, 4 и 5. Третье поле означает, что команда должна выполняться многократно (кто-то зашел, вышел и снова зашел в систему с терминала). Последнее поле указывает команду, которая выполняет getty на первом виртуальном терминале.

Если нужно добавить терминалы или телефонные линии с модемами для доступа к системе, следует добавить строки в /etc/inittab по одной на каждый терминал или модемную линию.

Если команда при запуске терпит неудачу, а init сконфигурирован на ее перезапуск, то будет занято много ресурсов системы постоянными перезапусками команды. Во избежание такой ситуации init хранит протокол перезапусков команды, и если частота перезапусков слишком высока, делает паузу в 5 минут перед очередным перезапуском команды.

Специальные настройки в файле /etc/inittab

Файл /etc/inittab имеет особые возможности взаимодействия с init в сложных случаях. Строки для таких возможностей помечены специальными ключевыми словами и имеют по три, а не по четыре поля. Примеры:

рowerwait

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

ctrlaltdel

При нажатии клавиш <ctrl-alt-del> в консоли, дает команду init перезагрузить систему. Администратор может поменять реакцию на нажатие <ctrl-alt-del>, например, на игнорирование или запуск какой-либо произвольной программы.

рoweerok

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

sysinit

Команда, выполняемая при запуске системы. Например, может чистить каталог /tmр.

Данный список не отличается полнотой. Обратитесь к man-руководству на файл inittab за подробностями.

Загрузка в однопользовательском режиме

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

Запущенная система может быть переведена в однопользовательский режим командой telinit с запросом уровня выполнения 1. При загрузке он может быть установлен передачей ядру в командной строке параметра single или emergency. В этом случае init не будет использовать уровень выполнения, заданный по умолчанию.

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

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

Как мера защиты, правильно сконфигурированная система будет спрашивать root-пароль перед запуском оболочки в однопользовательском режиме. Иначе, было бы просто только ввести подходящую строку в LILO, чтобы войти как root. С другой стороны, если файл /etc/рasswd поврежден в результате дисковых сбоев, такой подход принесет  неприятности.

 

Контрольные вопросы

1.        Перечислите существующие категории сценариев инициализации.

2.        Какая программа запускается в системе первой после ядра Linux, и какие функции она выполняет?

3.        Назовите уровни выполнения системы и их назначение.

4.        На каком этапе происходит инициализация уровней загрузки?

5.        Для чего используется SystemV?

6.        Каковы основные функции процесса init?

7.        Для чего используется первый уровень выполнения?

 

Литература

1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005

2. ??


//Часть II. Настройка основных служб и сервисов

 

Глава 6. Управление учетными записями

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

adduser - добавление учетной записи пользователя;

userdel(8) - удаление учетной записи пользователя;

chfn(1) - изменение finger;

chsh(1) - изменение оболочки;

passwd(1) - создание и изменение паролей пользовталей;

groupadd(8) - создание групп пользователей;

groupdel(8) - удаление групп пользователей;          

groupmod(8)

mkdir - создание каталогов.

В главе также приведены основные сведения для работы со следующими конфигурационными файлами:

/etc/passwd(5) - описания пользователей;

/etc/shadow(5) - описания паролей;

/etc/group(5) - описания групп.

 

Общие сведения об учетных записях

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

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

 

Работа с учетными записями

Средства для управления учетными записями входят в комплект вспомогательных сценариев и утилит, поставляемых с дистрибутивом. Для работы непосредственно с учетными записями предназначаются такие утилиты, как adduser, userdel(8), chfn(1), chsh(1) и passwd(1). А для работы с группами - groupadd(8), groupdel(8) и groupmod(8). За исключением chfn, chsh и passwd, все перечисленные утилиты могут выполняться только пользователем root и, поэтому, расположены они в каталоге /usr/sbin. Утилиты chfn, chsh и passwd могут быть выполнены кем угодно и расположены они в каталоге /usr/bin.

 

Создание учетной записи

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

#adduser

Login name for new user (8 characters or less) []: jellyd

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

User id for jellyd [ defaults to next available]:

В ответ на этот запрос необходимо указать идентификатор (UID) пользователя. На самом деле это идентификатор, с помощью которого в системе Linux определяется принадлежность файлов. Каждый пользователь системы имеет уникальный номер, начиная с 1000. Можно выбрать UID для нового пользователя, или просто позволить утилите adduser автоматически присвоить пользователю следующий свободный номер.

Initial group for jellyd [users]:

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

Additional groups for jellyd (seperated with commas, no spaces) []:

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

Jellyd's home directory [/home/jellyd]:

В ответ на этот запрос необходимо  уточнить, где должен располагаться домашний каталог пользователя. Домашние каталоги по умолчанию располагаются в каталоге /home. При работе в очень большой системе может возникнуть необходимость разместить домашние каталоги в другом месте. Так же имеется возможность заблокировать пользователя, указав его домашним каталогом /usr/bin/false, но пользоваться этим способом не рекомендуется.

Jellyd's shell [/bin/bash]:

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

Jellyd's account expiry date (YYYY-MM-DD) []:

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

OK, I'm about to make a new account. Here's

what you entered so far:

 

New login name: jellyd

New UID: [Next available]

Initial group: users

Additional groups: [none]

Home directory: /home/jellyd

Shell: /bin/bash

Expiry date: [no expiration]

This is it... if you want to bail out, hit Control-C.

Otherwise, press ENTER to go ahead and make the account.

В конце утилита отображает всю введенную информацию и, если что-то не так, то можно отменить введенные данные, нажав комбинацию клавиш <Ctrl>+<C> и начать все сначала. Для создания пользователя с введенными параметрами необходимо нажать на клавишу <Enter>.

Making new account...

 

Changing the user information for jellyd

Enter the new value, or press return for the default

           Full Name []: Jeremy

           Room Number []: Smith 130

           Work Phone []:

           Home Phone []:

           Other:

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

Changing password for jellyd

Enter the new password (minimum of 5, maximum of 127 characters)

Please use a combination of upper and lower case letters and numbers.

New password:

Re-enter new password:

Password changed.

Done...

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

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

 

Удаление учетной записи

Удалить учетную запись пользователя можно при помощи утилиты adduser. Для удаления учетной записи необходимо просто ввести команду userdel и имя пользователя. При этом необходимо убедиться, что пользователь в этот момент не зарегистрирован в системе и что нет процессов, запущенных от его имени. Необходимо помнить, что удаление учетной записи происходит безвозвратно.

#userdel jellyd

После выполнения этой команды, учетная запись пользователя jellyd будет удалена из системы. Команда удаляет записи о пользователе из файлов /etc/passwd и /etc/group, но не удалит его домашний каталог. Если требуется удалить и домашний каталог, то необходимо выполнить следующую команду:

#userdel -r jellyd

 

Создание и удаление групп

Утилиты для создания и удаления групп очень просты в использовании. Утилита groupadd просто создаст еще одну группу в файле /etc/group с уникальным идентификатором, а groupdel удалит указанную группу. Пользователи в созданную группу добавляются путем редактирования файла /etc/group.

Пример создания группы:

#groupadd cvs

Пример удаления группы:

#groupdel cvs

 

Корректировка конфигурационных файлов пользователей и групп

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

Вначале добавление нового пользователя в файлы /etc/passwd(5), /etc/shadow(5) и /etc/group(5). Файл passwd содержит некоторую информацию о пользователе, но не содержит их паролей. Этот файл должен быть доступен для чтения всем пользователям, но недопустимо, чтобы пароли, даже закодированные, были доступны для чтения всем, так как это будет огромной помощью злоумышленникам. Поэтому закодированные пароли хранятся в теневом файле, который доступен для чтения только пользователю root, а в файле passwd пароли пользователей отображаются, как x. Файл group содержит список всех групп, и данные о том кто из пользователей к каким группам относится.

Типичная строка файла /etc/passwd выглядит таким образом:

chris:x:1000:100:Chris Lumens,Room 2,,:/home/chris:/bin/bash

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

q      имя для входа в систему;

q      закодированный пароль (x для всех в системе, так как используется пакет для теневых файлов паролей);

q      ID пользователя;

q      ID группы;

q      дополнительная информация о пользователе, разделенная запятыми;

q      домашний каталог;

q      оболочка.

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

Пароль, ID пользователя должны быть уникальными, и пользователь должен входит в группу 100 (users).

Типичная строка файла /etc/shadow выглядит следующим образом:

chris:$1$w9bsw/N9$UWLr2bRER6YyBS.CAEp7R.:11055:0:99999:7:::

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

q      имя входа в систему;

q      закодированный пароль;

q      количество дней от 1 января 1970 г. до дня, когда пароль был изменен последний раз;

q      количество дней, после которых пароль может быть изменен;

q      количество дней, после которых пароль должен быть изменен;

q      количество дней до истечения срока действия учетной записи;

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

q      дни после истечения срока действия учетной записи, после которых учетная запись полностью блокируется;

q      количество дней от 1 января 1970 г., по истечению которых учетная запись должна быть заблокирована;

q      зарезервированное поле.

Как следует из описания, в строке в основном содержится информация по срокам действия учетной записи. Если информация об истечении срока действия учетной записи в системе не используется, то достаточно только заполнить некоторые из полей со специальными значениями. При создании учетной записи, в поле пароля можно вписать произвольные символы, кроме двоеточия. Поле "количество дней, с момента изменения пароля" можно оставить пустым. Можно ввести значения 0, 99999 и 7 как это указанно в примере выше (в те же поля) и оставить остальные поля пустыми.

Все создаваемые учетные записи по умолчанию добавляются в группу users. Если нужно создать новую группу или добавить учетную запись в группу отличную от users, то необходимо отредактировать файл /etc/group. Вот типичная строка файла:

cvs::102:chris,logan,david,root

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

Чтобы создать пароль для вновь созданного пользователя необходимо вернуться к утилите passwd. Затем воспользоваться утилитой mkdir, чтобы создать домашний каталог там, где было указано в файле /etc/passwd.

Если в системе установлен sendmail(8), то необходимо будет создать новый файл с соответствующими правами, принадлежащий новому пользователю в каталоге /var/spool/mail. Например:

#touch /var/spool/mail/jellyd

#chown jellyd.users /var/spool/mail/jellyd

#chmod 660 /var/spool/mail/jellyd

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

Для удаления учетной записи, необходимо просто удалить все, что было введено при создании: упоминания о пользователе в /etc/passwd и /etc/group; его login-имя  во всех группах в /etc/group; его очередь почты, если таковая имеется; если есть необходимость - домашний каталог пользователя.

Для удаления группы из файла /etc/group удаляется строка, определяющая группу.

Изменение паролей

Утилита passwd изменяет пароль, модифицируя файл /etc/shadow. Этот файл содержит все пароли системы в закодированной форме. Для изменения собственного пароля пользователю необходимо выполнить:

$ passwd

Old password:

Enter the new password (minumum of 5, maximum of 127 characters)

Please use a combination of upper and lower case letters and numbers.

New password:

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

Пользователь root может изменить пароль любого пользователя:

# passwd ted

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

Если в системе есть пользователи, которые ведут себя некорректно, можно временно заблокировать их учетные записи. Позже можно будет опять активизировать их. Как блокировка, так и последующее включение пользователя, могут быть произведены при помощи утилиты passwd. Чтобы отключить учетную запись, пользователь root должен выполнить следующее:

# passwd -l david

Это изменит пароль пользователя david на что-то, что не может быть подобрано. Для возвращения пользователя, потребуется выполнить следующее:

# passwd -u david

Теперь учетная запись пользователя david опять заработает, как и раньше. Приостановка учетной записи может быть полезна, если пользователь нарушает правила, установленные в системе.

 

Изменение информации пользователя

Пользователи могут поменять в любой момент времени свою оболочку и свою finger-информацию. В системе для этого предусмотрены утилиты chsh (от англ. change shell - изменить оболочку) и chfn (от англ. change finger - изменить finger).

Пользователь может выбрать любую из оболочек, перечисленных в файле /etc/shells. Для большинства пользователей оболочка BASH будет идеальным выбором, но кто-то может использовать другие оболочки, заимствованные из других UNIX-систем. Например:

$ chsh

Password:

Changing the login shell for chris

Enter the new value, or press return for the default

Login Shell [/bin/bash]:

После ввода пароля необходимо ввести полный путь к новой оболочке, которая должна быть в числе перечисленных в файле /etc/shells(5). Пользователь root может также изменить оболочку другого пользователя, указав как аргумент утилите chsh имя пользователя.

Finger-информация - это необязательная информация. Она содержит такие поля, как полное имя, номер телефона и номер кабинета. Эти данные можно изменять при помощи утилиты chfn. Пользователь root может изменить finger-информацию для любого пользователя.

 

Временное отключение учетной записи

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

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

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

Простой способ  - создавать специальные программы - состоит в том, чтобы писать "tail scriрts":

#!/usr/bin/tail +2

This account has been closed due to a security breach. # Данная учетная запись заблокирована

из соображений безопасности.

Please call 555-1234 and wait for the men in black to arrive. # Пожалуйста, позвоните по

номеру 555-1234 и дождитесь помощи.

Первые два символа (#!) сообщают ядру, что остальная часть строки является командой, которая должна быть выполнена, чтобы интерпретировать этот файл. Команда tail в этом случае выводит все, за исключением первой строки, в стандартный вывод.

Если пользователь "billg" подозревается в нарушении защиты, администратор системы сделал бы примерно следующее:

# chsh -s /usr/local/lib/no-login/security billg

# su - tester

This account has been closed due to a security breach.

Please call 555-1234 and wait for the men in black to arrive.

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

 

 

Контрольные вопросы

1.        Что представляет собой учетная запись?

2.        Каким образом можно создать/удалить учетную запись?

3.        Каким образом пользователи добавляются в группу?

4.        В какую группу по умолчанию добавляются все создаваемые учетные записи?

5.        В каком файле находятся все пароли системы? Каким образом их можно изменить?

6.        Какими способами можно заблокировать пользователя?

 

Литература

1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005

2. ??


Глава 7. Управление файлами и каталогами

В этой главе описаны следующие основные сведения, необходимые для работы с файлами и каталогами MOPSLinux:

-   права собственности и правах доступа;

-   просмотр каталогов;

-   смена рабочего каталога;

-   постраничный просмотр вывода;

-   объединение файлов;

-   корректировка атрибутов файла;

-   вывод текста на экран;

-   создание и удаление каталогов;

-   создание и удаление ссылок;

-   копирование и перемещение файлов.

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

сd - смена рабочего каталога;

ls - просмотр каталогов и информации о файлах;

chown - изменение владельца;

chgrp - изменение группы;

chmod - установка и изменение прав доступа;

ln - создание ссылок;

less, more - управление постраничным выводом;

cat - объединение файлов;

touch - изменение временных атрибутов файла;

echo - вывод текста на экран;

mkdir - создание каталога;

rmdir - удаление каталога;

rm - удаление каталога, файла, ссылки;

cp - копирование файлов;

mv - перемещение файлов;

pwd - показывает текущую директорию;

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

В MOPSLinux файлами и каталогами можно управлять с помощью командного менеджера mc.

 

Права собственности

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

$ ls -l /usr/bin/wc

-rwxr-xr-x   1 root     bin    7368 <st1:date year="1999" day="30" month="7">Jul 30  1999<st1:date> /usr/bin/wc

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

Владельца файла можно изменить с помощью утилиты chown(1) (от англ. change owner - сменить владельца), а группу при помощи утилиты chgrp (от англ. change group - изменить группу). Чтобы изменить владельца файла на daemon, необходимо выполнить команду:

# chown daemon /usr/bin/wc

А чтобы изменить группу на root:

# chgrp root /usr/bin/wc

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

# chown daemon.root /usr/bin/wc

Принадлежность файлов - это очень важная часть использования Linux-системы, даже если в системе зарегистрирован только один пользователь. Иногда пользователям приходится исправлять права владения файлами и узлами (nodes) устройств.

 

Права доступа

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

Права доступа хранятся в виде четырех восьмеричных чисел, каждое из которых устанавливает права для отдельного блока. Три блока представляют права владельца, права группы и права всех остальных пользователей. Четвертое восьмеричное число используется для хранения специальной информации, такой как идентификатор (ID) владельца, ID группы и "sticky"-бит. Значения этих чисел соответствуют правам доступа, им также сопоставляются буквы, которые выводятся такими утилитами, как ls и могут быть использованы утилитой chmod(1) (от англ. change mode - изменить режим). Права доступа и соответствующие им восьмеричные числа и буквенные значения приведены в табл. 3.1.

Таблица 2.1. Соответствие восьмеричных чисел правам доступа

Тип

Восьмеричное значение

Буква

"sticky"-бит

1

t

set user ID (ID пользователя)

4

s

set group ID (ID группы)

2

s

read (чтение)

4

r

write (запись)

2

w

execute (выполнение)

1

x

 

Для каждой из групп права складываются. Например, если необходимо, чтобы права группы были "read" и "write", в части соответствующей группе прав доступа необходимо указать "6".

Команда ls отобразит три группы прав (владелец, группа и остальные пользователи) в первом столбце. Первый дефис для каталогов принимает значение, равное "d". Например, права по умолчанию для bash:

$ ls -l /bin/bash

-rwxr-xr-x   1 root     bin  477692 Mar 21 <st1:time minute="57" hour="19">19:57<st1:time> /bin/bash

Из примера видно, что владелец имеет права для чтения, записи и выполнения (rwx). Группа имеет только право на чтение и выполнения файла (r-x). И все остальные имеют только права на чтение и выполнение файла (r-x).

Чтобы разобраться, как присваивать права файлам предлагается создать файл для примеров:

$ touch /tmp/example

$ ls -l /tmp/example

-rw-rw-r-  1 david    users    0 Apr 19 <st1:time minute="21" hour="11">11:21<st1:time> /tmp/example

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

$ chmod 755 /tmp/example

$ ls -l /tmp/example

-rwxr-xr-x   1 david    users    0 Apr 19 <st1:time minute="21" hour="11">11:21<st1:time> /tmp/example

Для задания специальных прав, необходимо сложить соответствующие числа вместе и расположить их в первом столбце:

$ chmod 6755 /tmp/example

$ ls -l /tmp/example

-rwsr-sr-x   1 david    users    0 Apr 19 <st1:time minute="21" hour="11">11:21<st1:time> /tmp/example

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

q      владелец - u;

q      группа - g;

q      остальные пользователи - o;

q      все вышеперечисленные - a.

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

$ chmod a+rx /tmp/example

$ chmod u+w /tmp/example

$ chmod ug+s /tmp/example

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

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

При изменении прав доступа пользователя и группы следует проявлять осторожность, так как "set user ID" и "set group ID" могут открыть "дыры" в безопасности системы. Если полные права доступа будут установлены на файл, принадлежащий пользователю root, появится возможность всем запускать программу, и выполнять ее с правами root. Так как у пользователя root нет ограничений в системе, это ставит под вопрос целостность безопасности системы.

 

Создание и удаление ссылок на файлы

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

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

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

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

$ ls -l /bin/sh

lrwxrwxrwx   1 root     root     4 Apr  6 <st1:time minute="34" hour="12">12:34<st1:time> /bin/sh -> bash

Оболочка sh в системе, на самом деле программа bash.

Ссылки на файлы создаются при помощи утилиты ln, а удаляются утилитой rm.

Утилита ln(1) позволяет создать как жесткие (hard), так и мягкие или символические (soft, symbolic) ссылки. Если требуется создать символическую ссылку на каталог /var/media/mp3 и расположить ссылку в домашнем каталоге, то необходимо выполнить такую команду:

$ ln -s /var/media/mp3 ~/mp3

Опция -s указывает команде ln, что ссылка должна быть символическая. Затем задается цель ссылки и указывается ее наименование. В приведенном случае будет создан файл mp3, указывающий на /var/media/mp3. Ссылке можно присвоить любое имя, просто изменив последний из параметров команды ln.

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

$ ln /var/media/mp3 ~/mp3

 

Просмотр каталогов

Содержимое каталога можно посмотреть с помощью утилиты ls. Эта утилита выводит список файлов в каталоге. Пользователи Windows и DOS найдут ее аналогичной команде dir. Для того чтобы просмотреть содержимое корневого каталога, необходимо выполнить следующие команды:

$ cd /

$ ls

bin     cdrom   home    mnt     sbin    usr

boot    dev     lib     proc    suncd   var

cdr     etc     lost+found      root    tmp     vmlinuz

В таком выводе неудобно то, что нельзя определить, где файлы, а где каталоги. Многие пользователи предпочитают, чтобы ls выводила так же идентификатор типа, например:

$ ls -FC

bin/    cdrom/ home/   mnt/    sbin/   usr/

boot/   dev/    lib/    proc/   suncd/ var/

cdr/    etc/    lost+found/     root/   tmp/    vmlinuz

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

Утилита ls так же может быть использована для получения более подробной информации о файлах. Например, чтобы просмотреть, даты создания, имена владельцев, права доступа, необходимо задать опцию -l:

$ ls -l

drwxr-xr-x      2       root    bin     4096    <st1:date year="1994" day="7" month="5">May     7       1994<st1:date>    bin/

drwxr-xr-x      2       root    root    4096    Feb     24      <st1:time minute="55" hour="3">03:55<st1:time>   boot/

drwxr-xr-x      4       root    root    28672   Mar     5       <st1:time minute="1" hour="18">18:01<st1:time>   dev/

drwxr-xr-x      10      root    root    4096    Mar     8       <st1:time minute="32" hour="3">03:32<st1:time>   etc/

drwxr-xr-x      8       root    root    4096    Mar     8       <st1:time minute="31" hour="3">03:31<st1:time>   home/

drwxr-xr-x      3       root    root    4096    Jan     23      <st1:time minute="29" hour="21">21:29<st1:time>   lib/

drwxr-xr-x      2       root    root    4096    <st1:date year="1997" day="6" month="10">Oct     6       1997<st1:date>    mnt/

dr-xr-xr-x      62      root    root    0       Mar     4       <st1:time minute="32" hour="15">15:32<st1:time>   proc/

drwxr-x-x       12      root    root    4096    Feb     26      <st1:time minute="6" hour="2">02:06<st1:time>   root/

drwxr-xr-x      2       root    bin     4096    Feb     17      <st1:time minute="2" hour="2">02:02<st1:time>   sbin/

drwxrwxrwt      4       root    root    487424 Mar     7       <st1:time minute="42" hour="20">20:42<st1:time>   tmp/

drwxr-xr-x      21      root    root    4096    <st1:date year="1999" day="24" month="8">Aug     24      1999<st1:date>    usr/

drwxr-xr-x      18      root    root    4096    Mar     8       <st1:time minute="32" hour="3">03:32<st1:time>   var/

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

$ ls -a

.       bin     cdrom   home    mnt     sbin    usr

..      boot    dev     lib     proc    suncd   var

.pwrchute_tmp   cdr     etc     lost+found      root    tmp     vmlinuz

Файлы, имена которых начинается с точки (так называемые dot-файлы) не отображаются при простом выполнении ls, поэтому называются "скрытыми". Их можно увидеть, если добавить опцию -a.

 

Смена рабочего каталога

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

shaman: $ cd /bin

shaman:/bin$ cd usr

bash: cd: usr: No such file or directory

shaman:/bin$ cd /usr

shaman:/usr$

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

Команда cd отличается от остальных тем, что она встроена в оболочку. Это означает, что для этой команды нет man-страницы. Вместо этого надо обратиться к команде help используемой командной оболочки. Например:

$ help cd

Эта команда выдаст опции команды cd.

 

Постраничный просмотр вывода

Управлять выводом можно с помощью утилит more и  less.

Утилиту more(1) чаще всего называют утилитой для разбиения вывода на страницы. Часто вывод определенной команды больше, чем размер экрана. Отдельные команды не знают, как разбить свой вывод на несколько экранов. Они предоставляют это утилите разбиения на страницы.

Утилита more разбивает вывод на отдельные экраны и ждет, пока пользователь не нажмет клавишу <Пробел> для того, чтобы выводить следующий экран. Нажатие <Enter> сместит экран на одну строку вниз. Вот хороший пример:

$ cd /usr/bin

$ ls -l

Вывод будет гораздо больше экрана. Чтобы разбить вывод на экраны, необходимо просто пропустить (pipe) команду через more:

$ ls -l | more

В двух словах, pipe означает - возьми вывод команды ls и пропусти его через more. Через more  можно пропускать не только ls, а практически все команды, имеющие вывод.

Утилита more очень удобна, но часто можно встретиться с ситуацией, когда пропущен тот экран, который был необходим. В отличие от more, утилита less(1) позволяет вернуться к предыдущим экранам. Она используется так же, как и утилита more, так что примеры, приведенные выше справедливы и для нее. В общем, less имеет больше возможностей, чем more.

 

Объединение файлов

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

Чтобы объединить два или несколько файлов в один, необходимо просто перечислить файлы после команды cat и перенаправить вывод в новый файл. Утилита cat работает со стандартным вводом и выводом, поэтому необходимо использовать символы оболочки для перенаправления. Например:

$ cat file1 file2 file3 > bigfile

Эта команда возьмет содержимое файлов file1, file2 и file3 и объединит их в файл bigfile.

Утилита cat также используется для просмотра содержимого файлов. Многие пользователи для просмотра текстовых файлов выполняют cat, указав имя файла, и затем пропускают вывод через more или less:

$ cat file1 | more

Так же cat часто используется для копирования файлов. Любой файл можно скопировать, выполнив:

$ cat /bin/bash > ~/mybash

Файл /bin/bash будет скопирован в домашний каталог, под именем mybash.

Рассмотренные здесь примеры, это лишь несколько из возможных вариантов применения cat. Так как cat предоставляет расширенный контроль над стандартным вводом и выводом, она идеальна для применения в сценариях и для использования в качестве части более сложных команд.

 

Корректировка атрибутов файла

Для изменения временных атрибутов файла используется утилита touch(1). С помощью этой утилиты можно изменить отметку времени доступа и отметку времени изменения файла. Если указанный файл не существует, то touch создаст пустой файл с указанным именем. Чтобы пометить файл текущим системным временем, необходимо выполнить следующую команду:

$ touch file1

Эта утилита имеет несколько опций, включая опции для уточнения, какую временную метку изменить, какое время использовать и др.

Вывод текста на экран

Текст на экран можно вывести с помощью утилиты echo(1). Строку, которую необходимо вывести, следует указать после команды echo. По умолчанию echo выведет текст и символ перевода строки после него. Чтобы строка не переводилась можно указать опцию -n. Опция -e укажет команде искать в строке ESC-символы и выполнить их.

 

Создание и удаление каталогов

Создавать новые и удалять существующие и каталоги можно с помощью утилит mkdir, rmdir и rm.

Утилита mkdir(1) создает новый каталог. Имя каталога, который необходимо создать указывается после имени команды. Вот пример создания подкаталога hejaz в текущем каталоге:

$ mkdir hejaz

Так же можно указать путь:

$ mkdir /usr/local/hejaz

Опция -p укажет команде mkdir создавать вложенные каталоги. Так, если в выше приведенном примере каталог /usr/local не существует, то утилита выдаст сообщение об ошибке. Указание параметра -p заставить утилиту создать /usr/local и hejaz каталоги:

$ mkdir -p /usr/local/hejaz

 

Утилита rm(1) удаляет файлы и деревья каталогов. Аналогия для пользователей DOS - del и deltree. Использование rm может быть очень опасным, если пользователь не отдает себе отчета в том, что делает.

Внимание

В отличие от DOS и Windows, в Linux удаленные файлы восстановлению не подлежат!

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

$ rm file1

Если у пользователя нет прав записи для этого файла, то он получит сообщение об ошибке доступа. Чтобы удалить файл, несмотря ни на что, применяется опция -f. Например:

$ rm -f file1

Чтобы целиком удалить каталог, необходимо указать две опции -r и -f. Например, для того чтобы удалить содержимое всего диска необходимо будет выдать команду:

# rm -rf /

 

Утилита rmdir(1) удаляет каталоги из файловой системы. Каталог должен быть пустым, иначе команда не сможет удалить его. Синтаксис прост:

$ rmdir <directory>

Следующий пример удалит подкаталог hejaz в текущем рабочем каталоге:

$ rmdir hejaz

Если этот каталог не существует, rmdir сообщит об этом. Допускается указывать полный путь к каталогу, который требуется удалить. Например, чтобы удалить каталог hejaz, являющийся подкаталогом каталога /tmp, необходимо выдать команду:

$ rmdir /tmp/hejaz

Пользователь так же может удалить каталог, и все его родительские каталоги, указав опцию -p:

$ rmdir -p /tmp/hejaz

Эта команда вначале попытается удалить каталог hejaz внутри /tmp, если это удастся, команда попытается удалить и каталог /tmp.

 

Копирование и перемещение файлов

Утилита cp(1) применяется для копирования файлов. Пользователи DOS найдут ее похожей на команду copy. Эта утилита имеет множество опций, описание которых можно найти на соответствующей man-странице.

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

$ cp hejaz /tmp

Эта команда копирует файл hejaz из текущего каталога в каталог /tmp.

Многие пользователи предпочитают сохранять временные отметки файлов при копировании. Например:

$ cp -a hejaz /tmp

Это сохранит все временные отметки оригинального файла для копии.

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

$ cp -R adirectory /tmp

В результате каталог adirectory будет скопирован в каталог /tmp.

 

Утилита mv(1) перемещает файлы из одного места в другое. Пользователи DOS найдут ее похожей на команду move. При использовании утилиты надо указывать источник и назначение. Вот пример обычного использования mv:

# mv myfile /usr/local/share/hejaz

Управление файлами и каталогами с помощью программы Midnight Commander

Для облегчения работы с файловой системой в MOPSLinux включена программа c оконным интерфейсом Midnight Commander (mc), которая позволяет просматривать структуру каталогов и выполнить практически все необходимые основные операции c файлами. Программа mc - это классический файловый менеджер, подобный известным программам Norton Commander (nc) в MS-DOS или с FAR в Windows. Пользователям, знакомым с указанными программами работа с mc не составит никакого труда, поскольку даже основные комбинации "горячих клавиш" у них совпадают. Подробную информацию о работе с mc можно найти в справочном руководстве. В данной же главе приведены основные сведения, необходимые для первоначального знакомства с программой и выполнения основных операций с файлами и каталогами.

Для запуска Midnight Commander, необходимо в командной строке оболочки ввести команду:

$ mc

После запуска экран монитора примет следующий вид:

Почти все пространство экрана при работе с Midnight Commander занято двумя "панелями", отображающими списки файлов двух каталогов. Над панелями расположена строка меню, причем к выбору команд в этом меню можно переключиться по клавише <F9> или с помощью мыши (если сразу после запуска mc вы не видите строки меню, не огорчайтесь - видна или нет строка меню, определяется настройками программы).

Самая нижняя строка представляет собой ряд экранных кнопок, каждая из которых ассоциирована с одной из функциональных клавиш <F1> - <F10>. Можно считать эту строку подсказкой по использованию функциональных клавиш, а можно и непосредственно запускать соответствующие команды, щелкая мышкой по экранной кнопке. Отображение строки с экранными кнопками можно отключить, если вы хотите сэкономить пространство экрана (об этом будет рассказано позже, когда будем говорить о настройках программы). Такая экономия оказывается оправданной по двум причинам. Во-первых, вы достаточно быстро запомните назначение этих 10 клавиш, и подсказка вам становится не нужна (а мышкой по этим клавишам щелкать не всегда удобно). Во вторых, если даже вы забыли, какая именно клавиша вам нужна для выполнения необходимого в данный момент действия, вы всегда можете воспользоваться меню Файл главного меню программы (только помните, что выход в главное меню осуществляется по клавише <F9>). Через меню Файл обеспечивается возможность выполнения любой операции из числа ассоциированных с функциональными клавишами кроме <F1> и <F9>.

Вторая снизу строка на экране - это командная строка программы Midnight Commander (точнее - командная строка текущей оболочки shell), где можно ввести и выполнить любую команду системы. Выше нее (но под панелями) может отображаться поле "полезных советов" (hint4s), которое можно убрать, соответствующим образом отрегулировав настройки программы.

Каждая панель состоит из заголовка, списка файлов какого-либо каталога и строки мини-статуса (последняя может быть не видна, это тоже задается настройками программы). В заголовке панели указан полный путь к каталогу, содержимое которого отображается в панели, а также три экранных кнопки - "<", "v" и ">", которые используются для управления программой с помощью мыши (эти кнопки не работают, если вы запустили mc в эмуляторе терминала). В строке "мини-статуса" отображаются некоторые данные о том файле или каталоге, на который в данный момент указывает подсветка (например, размер файла и права доступа к нему).

Одна из панелей является текущей (активной), о чем свидетельствует подсветка имени каталога в заголовке панели и подсветка одной из ее строк. Соответственно, в той оболочке, из которой была запущена программа Midnight Commander, текущим является каталог, отображаемый в активной панели. В этом каталоге и выполняются почти все операции. Операции типа копирования (<F5>) или переноса файла (<F6>) используют каталог, отображаемый на второй панели, в качестве целевого каталога (в который осуществляется копирование или перенос).

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

Таблица 6.1. Общие клавиши управления перемещением.

Клавиша

Выполняемое действие

<Стрелка вверх> или <Ctrl>+<P>

Перемещение на одну строку назад или вверх

<Стрелка вниз> или <Ctrl>+<N>

Перемещение на одну строку вперед

<PageUp> или <Alt>+<V>

Перемещение на одну страницу назад

<Page Down> или <Ctrl>+<V>

Перемещение на одну страницу вперед

<Home>

Перемещение к началу.

<End>

Перемещение к концу

 

 

Функциональные клавиши

Наиболее часто выполняемые в Midnight Commander операции привязаны к функциональным клавишам <F1> - <F10>. Приведем сводку в виде табл. 6.4.

Таблица 6.4. Функциональные клавиши

Функциональная клавиша

Выполняемое действие

<F1>

Вызывает контекстно-зависимую подсказку

<F2>

Вызывает меню, создаваемое пользователем

<F3>

Просмотр файла, на который указывает подсветка в активной панели

<F4>

Вызов встроенного редактора для файла, на который указывает подсветка в активной панели

<F5>

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

<F6>

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

<F7>

Создание подкаталога в каталоге, отображаемом в активной панели

<F8>

Удаление файла (подкаталога) или группы отмеченных файлов

<F9>

Вызов основного меню программы (отображаемого над панелями)

<F10>

Выход из программы

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

Прежде чем выполнять какую-то из операций, указанных в табл. 6.4 или задаваемых командами меню, надо выбрать файл или группу файлов, которые будут объектами операции. Для выбора только одного файла достаточно переместить на него подсветку в активной панели (конечно, вначале надо перейти в соответствующий каталог). Если же вы хотите выполнить какую-то операцию сразу над группой файлов, эти файлы надо отметить. Чтобы отметить файл, на который указывает в данный момент подсветка, используйте клавишу <Insert> или комбинацию <Ctrl>+<T>. При этом имя файла в панели выводится другим цветом. Для снятия отметки с файла используются те же комбинации.

Выделить группу файлов для последующей обработки можно также с помощью команды Отметить группу меню Файл. Эта команда используется для отметки группы файлов по заданному шаблону. Midnight Commander выдаст строку ввода, в которой надо задать регулярное выражение, определяющее желаемую группу имен. Если включена опция Образцы в стиле shell (см. разд. 6.11), регулярные выражение строятся по тем же правилам, которые действуют в оболочке shell (см. гл. 5). Если опция "Образцы в стиле shell" отключена, то пометка файлов производится по правилам обработки нормальных регулярных выражений (см. руководство man ed).

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

"Горячей" клавишей для операции отметки группы файлов является клавиша <+> на цифровой клавиатуре.

Операция "Снять отметку" ("горячая" клавиша - <-> или <\> - обратный слэш) является обратной по отношению к операции отметки группы файлов и использует те же правила формирования шаблонов. Используется для снятия отметки с группы файлов.

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

Если текущий каталог содержит много файлов (так что все они не умещаются на панели), то прежде чем отметить файл, его нужно еще отыскать. В таких случаях удобно пользоваться комбинациями клавиш <Ctrl>+<S> и <Alt>+<S>. После нажатия одной из этих комбинаций инициируется режим поиска имен файлов в текущей директории по первым символам имени. В этом режиме вводимые символы отображаются не в командной строке, а в строке поиска.

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

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

  • Права доступа (<Ctrl>+<X>,<C>). Позволяет изменить права доступа к выделенному или помеченным файлам.
  • Владелец/группа (<Ctrl>+<X>,<O>). Позволяет выполнить команду chown.
  • Права (расширенные). Позволяет изменить права доступа и владения файлом.
  • Жесткая ссылка (<Ctrl>+<X>,<L>). Создает жесткую ссылку на текущий файл.
  • Символическая ссылка (<Ctrl>+<X>,<S>). Создает символическую ссылку на текущий файл. О ссылках мы подробно говорили в разд. 4.4. Программа Midnight Commander указывает символические ссылки, выводя знак "@" перед именем такой ссылки (кроме ссылок на подкаталоги, которые обозначаются знаком тильды "~"). Если на экран выводится строка мини-статуса (опция "Показывать мини-статус" включена), то в ней отображается имя того файла, на который указывает ссылка.
  • Быстрая смена каталога (<Alt>+<C>). Используйте эту команду, если вы знаете полный путь к каталогу, в который хотите перейти (который хотите сделать текущим).
  • Просмотр вывода команды (<Alt>+<!>). По этой команде на экране появляется строка ввода, в которой вы можете ввести любую команду с параметрами (по умолчанию предлагается использовать в качестве параметра имя подсвеченного файла). Вывод этой команды будет отображаться на экране через встроенную программу просмотра.

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

Отображение списка файлов

Отображение списка файлов в любой из панелей может производиться в соответствии с одним из восьми порядков сортировки:

·         по имени;

·         по расширению;

·         по размеру файла;

·         по времени модификации;

·         по времени последнего обращения к файлу;

·         по номеру узла (inode);

·         без сортировки.

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

Рис. 6.2. Диалоговое окно задание порядка сортировки

По умолчанию подкаталоги отображаются в начале списка, но это можно изменить, проставив отметку возле опции "Смешивать файлы/каталоги" ("Mix all files") команды Конфигурация меню Настройки.

Можно выводить в панель не все списки файлов данного каталога, а только соответствующие определенному шаблону. Команда Фильтр в меню любой панели позволяет задать шаблон, которому должны соответствовать имена файлов, отображаемых в панели (например, "*.tar.gz").

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

В меню каждой из панелей имеется команда Перечитать (аналог которого в других программах обычно называется "Обновить"). Команда Перечитать (горячие клавиши <Ctrl>+<R>) обновляет список файлов, отображаемый в панели. Это бывает полезно в тех случаях, когда другие процессы создают или удаляют файлы.

 

 Маски файлов для операций копирования/переименования

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

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

Рис. 6.6. Диалоговое окно для переименования файлов

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

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

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

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

Опция Сохранять атрибуты (Preserve attributes) определяет, будут ли при копировании/перемещении сохранены атрибуты исходного файла: права доступа, временные метки и, если вы root, UID и GID исходного файла. Если опция отключена, атрибуты будут установлены в соответствии с текущим значением umask.

На процедуры копирования и перемещения файлов оказывает также влияние установка опции Образцы в стиле shell в меню Настройки / Конфигурация. Когда эта опция включена, вы можете использовать символы замены (wildcards) '*' и '?' в маске источника. Они обрабатываются аналогично тому, как это делается в shell. В маске приемника разрешается использовать только '*' и '\<цифра>'. Первый символ '*' в маске приемника соответствует первой группе символов замены в маске источника, второй символ '*' соответствует второй группе и т. д. Аналогично, символ замены '\1' соответствует первой группе символов замены в маске источника, символ '\2' - второй группе и т. д. Символ '\0' соответствует целому имени файла-источника. Приведем пару примеров.

Пример 1. Если маска источника "*.tar.gz", а маска приемника - "/two/*.tgz", и имя копируемого файла - "foo.tar.gz", копия будет называться "foo.tgz" и будет находиться в каталоге "/two".

Пример 2. Предположим, вы хотите поменять местами имя и расширение файла, так чтобы "file.c" стал файлом "c.file". Маска источника для этого должна иметь вид "*.*", а маска приемника - "\2.\1".

Когда опция Образцы в стиле shell ("Use shell patterns") выключена, mc не осуществляет автоматической группировки. Для указания групп символов в маске источника, которые будут соответствовать символам замены в маске приемника, вы должны в этом случае использовать скобки '\(...\)'. Этот способ более гибкий, но требует больше усилий при вводе. Снова приведем два примера

Пример 3. Если маска источника имеет вид "^\(.*\)\.tar\.gz$", копирование производится в "/two/*.tgz" и копируется файл "foo.tar.gz", то результатом будет "/two/foo.tgz".

Пример 4. Предположим, что вы хотите поменять местами имя файла и его расширение, так чтобы имена вида "file.c" приняли вид "c.file".

Маска источника для этого - "^\(.*\)\.\(.*\)$", а маска приемника - "\2.\1".

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

Если использовать в маске приемника '\U' или '\L', то к соответствующему регистру будут преобразованы все последующие символы, вплоть до следующего вхождения '\L' или '\U', или же до конца имени файла.

Применение '\u' и '\l' обеспечивает более широкие возможности, чем '\U' и '\L'.

Например, если маска источника есть '*' (опция Образцы в стиле shell включена) или '^\(.*\)$' (опция Образцы в стиле shell выключена), а маска приемника есть '\L\u*', имена файлов будут преобразованы таким образом, что первые буквы имени будут заглавными, а все остальные - строчными.

Символ '\' в масках используется для отмены специальной интерпретации отдельных символов. Например, '\\' означает просто обратный слэш (как литерал) и '\*' означает просто звездочку (asterisk).

Меню Команды

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

При обращении к команде меню Дерево каталогов выводится окно, отображающее структуру каталогов файловой системы.

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

Существует два режима отображения дерева каталогов. В статическом режиме перемещения для выбора каталога (т. е. перемещения подсветки на имя другого каталога) используются только клавишы <á> и <â>. Показываются все известные программе на данный момент подкаталоги. В динамическом режиме клавиши <á> и <â> используются для перехода на соседний каталог того же уровня. Для перехода в родительский каталог используется клавиша <ß>, а по клавише <à> происходит переход к потомкам текущего каталога, т. е. на один уровень ниже. При этом отображаются только вышележащие каталоги (включая родительский и выше), соседние каталоги того же уровня и непосредственные потомки. Вид дерева каталогов динамически изменяется после каждого перемещения по дереву.

Для управления просмотром дерева каталогов могут использоваться следующие комбинации клавиш:

·         Работают все клавиши управления перемещением (см. табл. 6.1).

·         <Enter>. В окне просмотра дерева каталогов нажатие этой клавиши вызывает выход из режима просмотра и отображение списка файлов выбранного каталога в активной панели. При отображении дерева каталогов в одной из панелей при нажатии клавиши <Enter> соответствующий каталог отображается во второй панели, а на текущей панели остается дерево.

·         <Ctrl>+<R> или <F2>. Перечитать содержимое каталога. Используется в тех случаях, когда дерево каталогов не соответствует реальной структуре: некоторые подкаталоги не показаны или показаны более не существующие.

·         <F3>. Удалить текущий каталог из дерева. Эта команда используется только для удаления ошибочно отображаемых ветвей дерева. Если вы попытаетесь удалить существующий каталог, будет выдано сообщение об ошибке. Именно поэтому в строке, поясняющей назначение функциональных клавиш клавиша <F2> обозначена словом Забыть.

·         <F4> (Static/Dynamic). Переключение между статическим (применяемым по умолчанию) и динамическим режимами перемещения по дереву.

·         <F5>. Копировать подкаталог (появляется строка ввода, в которой надо указать, куда копировать).

·         <F6>. Переместить подкаталог.

·         <F7>. Создать подкаталог в текущем каталоге.

·         <F8>. Удалить подсвеченный каталог из файловой системы.

·         <Ctrl>+<S> или <Alt>+<S>. Найти следующий каталог, соответствующий заданному шаблону поиска. Если такого каталога не существует, происходит просто смещение подсветки на одну строку вниз.

·         <Ctrl>+<H> или <Backspace>. Удаляет последний символ в строке (шаблоне) поиска.

·         <Любой другой символ>. Этот символ добавляется в шаблон поиска и производится перемещение на имя следующего каталога, удовлетворяющее шаблону. В режиме просмотра дерева каталогов вначале необходимо активизировать режим поиска клавишами <Ctrl>+<S>. Шаблон поиска будет отображаться в строке мини-статуса.

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

·         <F1> (Help). Вызов подсказки с отображением раздела помощи об окне дерева каталогов.

·         <Esc> или <F10>. Выход из окна дерева каталогов. Смены текущего каталога не происходит.

В окне просмотра дерева каталогов поддерживается мышка. Двойной щелчок аналогичен нажатию клавиши <Enter>.

Команда Поиск файла (горячие клавиши <Meta>+<?> или <Esc>,<?>) выпадающего меню Команда позволяет вам найти на диске файл с заданным именем. После выбора этой команды меню вначале запрашивается имя искомого файла и имя каталога, с которого необходимо начинать поиск. Нажав экранную кнопку Дерево, вы можете выбрать начальный каталог поиска из дерева каталогов. В поле Содержание (Contents) можно задать регулярное выражение по правилам команды egrep. Это значит, что перед символами, имеющими специальное значение для egrep, необходимо вставить символ "\", например, если вам нужно найти строку "strcmp (", вы должны указать шаблон поиска в виде "strcmp \(". Для того, чтобы начать поиск, нажмите экранную кнопку Дальше. Во время поиска его можно приостановить кнопкой Остановить и продолжить по кнопке Продолжить.

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

Кнопка Выход служит для выхода из режима поиска.

Нажатие на кнопку Панелизация приведет к тому, что результаты поиска будут отображены на текущую активную панель, так что вы можете производить с выбранными файлами еще какие-то действия (просматривать, копировать, перемещать, удалять и так далее). После вывода на панель можно нажать <Ctrl>+<R> для возврата к обычному списку файлов.

Кроме того, имеется возможность задать список каталогов, которые команда Поиск файла будет пропускать в ходе поиска (например, вы знаете, что искомого файла нет на CD-ROM или не хотите искать в каталогах, подключенных через NFS по очень медленному каналу). Каталоги, которые надо пропустить, должны быть указаны в переменной find_ignore_dirs в секции Misc Вашего файла ~/.mc/ini.

Имена каталогов разделяются двоеточиями, следующим образом:

[Misc]

find_ignore_dirs=/cdrom:/nfs/wuarchive:/afs

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

Команда Переставить панели (<Ctrl>+<U>) меняет местами содержимое правой и левой панелей.

По команде Отключить панели (<Ctrl>+<O>) показывается вывод последней из выполнявшихся команд shell. Эта команда работает только через xterm и на консоли Linux.

По команде Сравнить каталоги (<Ctrl-X>, <D>) сравнивается содержимое каталогов, отображаемых на левой и правой панелях.

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

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

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

[user]$ find . -type l -print

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

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

Команда меню История команд выводит окно со списком ранее выполнявшихся команд. Подсвеченную строку из истории можно скопировать в командную строку оболочки (перемещение подсветки - клавишами <Стрелка вверх> и <Стрелка вниз>, копирование - по клавише <Enter>).

Доступ к истории команд можно получить также по комбинациям клавиш <Alt>+<P> или <Alt>+<N>, однако в этом случае вы не видите окна с перечнем команд. Вместо этого в командную строку выводится одна команда из списка и по комбинации <Alt>+<P> происходит смена этой команды на предыдущую, а по <Alt>+<N> - на следующую команду из истории команд.

Команда меню Справочник каталогов (<Ctrl>+<\>) позволяет создать список каталогов, которые часто используются, и обеспечить быстрый переход к нужному каталогу из этого списка. Для этого создается список меток (условных имен), присвоенных наиболее часто используемым каталогам. Этот список можно использовать для быстрого перехода в нужный каталог. Пользуясь диалоговым окном справочника каталогов, вы можете добавить новую метку в список или удалить ранее созданную пару метка/каталог. Для добавления метки можно также использовать комбинацию клавиш (<Ctrl>+<X>, <H>), по которой текущий каталог добавляется в справочник каталогов. Программа выдаст запрос на ввод метки для этого каталога.

Команда меню Фоновые задания позволяет вам управлять фоновыми заданиями, запущенными из Midnight Commander (такими заданиями могут быть только операции копирования и перемещения файлов). Используя эту команду меню или "горячие" клавиши <Ctrl>+<X>, <J>, вы можете остановить, возобновить или снять любое из фоновых заданий.

После выбора команды меню Файл расширений вы получаете возможность редактировать файл mc.ext, в котором можете связать с определенным расширением файла (окончанием имени после последней точки) программу, которая будет запускаться для обработки (просмотра, редактирования или выполнения) файла с таким расширением. Запуск выбранной программы будет осуществляться после установки подсветки на имя файла и нажатия клавиши <Enter>.

Команда Файл меню используется для редактирования пользовательского меню (которое появляется после нажатия клавиши <F2>).

 

Настройка программы Midnight Commander

Программа Midnight Commander имеет ряд установок (опций), каждая из которых может быть включена или выключена, для чего служат несколько диалоговых окон, доступных через меню Настройки. Опция включена, если поставлена (с помощью клавиши пробела) звездочка или знак "x" в скобках перед названием опции. Рассмотрим последовательно команды меню Настройки, через которое включаются / отключаются эти опции.

Команда Конфигурация.

При выборе этой команды меню появляется диалоговое окно, изображенное на рис. 6.7. Параметры конфигурации, задаваемые в этом окне, делятся на три группы: "Настройки панелей", "Пауза после исполнения" и "Прочие настройки".

В поле "Настройки панелей" вы задаете значения следующих параметров.

·         Показывать резервные файлы. По умолчанию программа Midnight Commander не показывает файлы, имена которых заканчиваются на '~' (подобно опции -B команды ls ).

·         Показывать скрытые файлы. По умолчанию Midnight Commander показывает все файлы, в том числе файлы, имена которых начинаются точкой (как ls -a).

Рис. 6.7. Окно настроек параметров конфигурации

·         Отметка перемещает курсор. Когда вы отмечаете файл (клавишами <Ctrl>+<T> или <Insert>), то по умолчанию подсветка на имени файла смещается на одну строку вниз.

·         Выпадение меню при вызове. Если эта опция включена, то при вызове главного меню нажатием клавиши <F9>, будет сразу отображаться перечень команд меню (выпадающее меню). В противном случае активизируются только команды главного меню и вы должны (после выбора одного из них клавишами стрелок) нажать клавишу <Enter>, либо выбрать нужную команду по первой букве названия, и только после этого получите возможность выбрать команду выпадающего меню.

·         Смешивать файлы/каталоги. Если эта опция включена, имена файлов и каталогов отображаются вперемежку. Если опция отключена, каталоги (и ссылки на каталоги) показываются в начале списка, а имена файлов - после имен всех каталогов.

·         Быстрая загрузка каталога. По умолчанию эта опция выключена. Если вы активизируете ее, Midnight Commander будет использовать для вывода содержимого каталога следующий трюк: содержимое каталога перечитывается только в том случае, если изменилась запись в i-node каталога, т. е. если в каталоге создавались или удалялись файлы; если изменялись только записи в i-node файлов каталога (изменялся размер файла, режим доступа или владелец и т.п.) содержимое панели не обновляется. В этом случае (если опция включена) вы должны обновлять список файлов вручную (клавишами <Ctrl>+<R>).

Поле Пауза после исполнения. После выполнения Вашей команды Midnight Commander может обеспечить паузу, чтобы вы могли просмотреть и изучить вывод команды. Есть три варианта установки этой опции.

·         Никогда. Это значит, что вы не хотите видеть вывод команды. На консоли Linux или при использовании xterm вы можете просмотреть этот вывод, нажав <Ctrl>+<O>.

·         На "тупых" терминалах. Пауза будет создаваться на терминалах, которые не способны обеспечить показ вывода последней из выполнявшихся команд (это любые терминалы, отличные от xterm или Linux-консоли).

·         Всегда. Программа обеспечит паузу после выполнения любой команды.

В поле Прочие настройки вы задаете значения следующих параметров:

·         Детали операций (Verbose operation). Этот переключатель определяет, будет ли при выполнении операций копирования, перемещения и удаления выводится дополнительное окно, отображающее ход выполнения операции. Если у вас медленный терминал, вы можете отключить этот вывод. Он отключается автоматически, если скорость Вашего терминала меньше 9600 bps.

·         Подсчитывать общий размер (Compute totals). Если эта опция включена, Midnight Commander перед выполнением операций копирования, перемещения и удаления подсчитывает общее число обрабатываемых файлов и их суммарный размер и показывает ход выполнения операции над этими файлами в виде диаграммы-полоски (правда, это слегка замедляет выполнение операций). Эта опция не работает, если отключена опция "Детали операций".

·         Образцы в стиле shell (Shell Patterns). По умолчанию команды отметки группы файлов (Select), снятия отметки (Unselect) и вывода списка файлов по фильтру (Filter) используют регулярные выражения, которые строятся по правилам, действующим в оболочке. Для того, чтобы достичь такого эффекта, выполняются следующие преобразования: '*' заменяется на '.*' (ноль или больше символов); '?' заменяется на '.' (в точности один символ) и '.' заменяется на обычную точку (literal dot). Если опция отключена, то регулярные выражения должны строиться так, как описано в man 1 ed.

·         Автосохранение настроек. Если эта опция включена, то при выходе из программы Midnight Commander значения всех настраиваемых параметров сохраняются в файле ~/.mc/ini.

·         Автоматические меню. Если эта опция включена, пользовательское меню будет автоматически вызываться на экран при запуске программы. Это бывает полезно, если на компьютере работают неопытные пользователи (операторы), которые должны выполнять только стандартные операции.

·         Встроенный редактор. Если эта опция включена, то для редактирования файлов вызывается встроенный редактор. Если опция выключена, то будет использоваться редактор, указанный в переменной окружения EDITOR. Если такой редактор не задан, будет вызываться vi.

·         Встроенный просмотр. Если эта опция включена, для просмотра файлов вызывается встроенная программа просмотра. Если опция выключена, вызывается программа, указанная в переменной окружения PAGER. Если такая программа не задана, используется команда view.

·         Дополнение: показывать все. В процессе ввода команд Midnight Commander может выполнять "Завершение ввода" при нажатии на клавиши <Alt>+<Tab>, пытаясь угадать окончание вводимой команды. По умолчанию при первом нажатии <Alt>+<Tab> он ищет все возможные варианты завершения и, если завершения неоднозначны (имеется много разных вариантов), то только издает звуковой сигнал. При втором нажатии <Alt>+<Tab> отображаются все возможные завершения. Если вы хотите видеть все возможные варианты завершения после первого нажатия <Alt>+<Tab>, включите эту опцию.

·         Вращающийся индикатор. Если эта опция включена, Midnight Commander отображает в верхнем правом углу вращающуюся черточку, как индикатор того, что выполняется какое-то задание (операция).

·         Навигация в стиле lynx. Если эта опция включена, вы имеете возможность использовать клавиши <à> для перехода в подсвеченный в данный момент каталог и <ß> для перехода в родительский по отношению к текущему каталог (при условии, что командная строка пуста). По умолчанию опция отключена.

·         Расширенная команда chown. Если эта опция включена, то при обращении к командам chmod или chown вместо них будет вызываться Расширенная команда chown.

·         Смена каталога по ссылкам. Установка этой опции приводит к тому, что Midnight Commander будет следовать логической цепочке подкаталогов при выполнении команд смены каталога как в панели, так и по команде cd. Так же ведет себя по умолчанию bash. Если же опция не включена, Midnight Commander будет при выполнении команды cd следовать реальной структуре каталогов, так что если вы вошли в текущий каталог по ссылке на него, то по команде cd .. вы окажетесь в его родительском каталоге, а не в той директории, где расположена ссылка.

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

Диалоговое окно Внешний вид дает вам возможность изменить некоторые параметры отображения главного окна программы Midnight Commander .

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

Команда Распознавание клавиш: (Learn keys:) вызывает диалоговое окно, в котором вы можете протестировать работу некоторых клавиш (<F1> - <F20>, <Home>, <End>), которые работают не на всех типах терминалов. В диалоговом окне появляется таблица с названиями клавиш, которые подлежат тестированию. Вы можете перемещать подсветку по названиям, используя клавишу <Tab> или клавиши, применяемые в редакторе vi (<h> - влево, <j> - вниз, <k> -вверх, <l>- вправо). Если один раз нажать на клавиши со стрелками, после чего возле их названий в таблице появится пометка OK, то их тоже можно будет использовать для управления перемещением.

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

Команда Сохранить настройки обеспечивает сохранение выбранных значений параметров в ini-файле программы.

Я надеюсь, что приведенный в этом разделе материал позволит вам начать работать с программой Midnight Commander. Но возможности этой программы гораздо шире, чем это описано в настоящем разделе. В гл. 12 вы еще прочитаете о встроенном редакторе CoolEdit программы Midnight Commander. Кроме того, можно воспользоваться встроенной подсказкой, вызываемой по клавише <F1>. Перевод файла подсказки на русский язык (в виде bzip2-архива) вы можете найти на сайте http://linux-ve.chat.ru. Разархивируйте его, поместите в каталог /usr/lib/mc, заменив расположенный там файл mc.hlp, и вы будете при нажатии клавиши <F1> получать подсказку на русском языке.

Получение помощи

При работе с программой Midnight Commander практически в любой момент можно обратиться к интерактивной подсказке, вызов которой осуществляется нажатием клавиши <F1>. Подсказка организована как гипертекст, т. е. в ее тексте встречаются гипертекстовые ссылки на другие ее разделы. Такие ссылки выделены голубым фоном.

Для перемещения в окне просмотра подсказки вы можете использовать клавиши перемещения курсора (стрелки) или мышь. Кроме общих комбинаций управления перемещением, приведенных в табл. 6.1, программа просмотра помощи воспринимает также комбинации, используемые в подпрограмме просмотра файлов:

Таблица 6.2. Управление перемещением при просмотре файлов

Клавиша

Выполняемое действие

<B> или <Ctrl>+<B> или <Ctrl>+<H> или <Backspace> или <Delete>

Перемещение на одну страницу назад

<Пробел>

Перемещение на одну страницу вперед

<U> ( <D> )

Перемещение на половину страницы назад (вперед)

<G> (<Shift>+<G>)

Перемещение к началу (к концу)

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

Таблица 6.3. Управление перемещением при просмотре подсказки.

Клавиша

Выполняемое действие

<Tab>

Переход на следующую ссылку

<Alt>+<Tab>

Переход на предыдущую ссылку

<Стрелка вниз>

Переход на следующую ссылку или смещение текста на одну строку вверх

<Стрелка вверх>

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

<Стрелка вправо> или <Enter>

Переход по текущей ссылке

<Стрелка влево> или < L>

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

<F1>

Помощь по использованию самой подсказки

<N>

Переход к следующему разделу помощи

<P>

Переход к предыдущему разделу помощи

<C>

Переход к оглавлению подсказки

<F10>, <Esc>

Выход из окна просмотра подсказки

Вы можете использовать клавишу пробела для перехода к следующей странице подсказки и клавишу <B> для перехода к предыдущей странице. Программа запоминает последовательность переходов по ссылкам и позволяет вернуться к ранее просмотренным разделам, воспользовавшись клавишей < L>.

 

 

Контрольные вопросы

1.        Каким образом можно просмотреть информацию о правах собственности на файл?

2.        В каком виде хранятся права доступа и как их установить?

3.        Для чего используются ссылки? Какие существуют типы ссылок?

 

Литература

1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005

2. ??

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Глава 8. Управление процессами

Любая выполняемая программа в системе называется процессом. Все, от системы X Window до системных программ (демонов), которые запускаются при включении компьютера, является процессом. Каждый процесс запускается от имени какого-то пользователя. Процессы, которые были запущены при загрузке системы, обычно выполняются от имени пользователя root или от имени пользователя nobody. Процессы, запущенные пользователем, обычно выполняются от его имени.

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

Для управления процессами используются следующие команды:

& - запуск программы в фоновом режиме;

<Ctrl>+<Z> - приостановка текущего процесса;

bg - перевод приостановленного процесса в фоновый режим;

fg - возврат процесса из фонового режима;

jobs - список процессов в фоновом режиме;

ps - список программ, выполняемых на терминале;

kill, killall - принудительное завершение процессов;

top - вывод динамической информации о процессах;

nice- изменение приоритета;

Перевод в фоновый режим

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

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

$ amp *.mp3 &

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

Другой способ позволяет переводить программы в фоновый режим уже во время их выполнения. После запуска программы необходимо нажать комбинацию клавиш <Ctrl>+<Z>. Это приостановит процесс (что-то вроде паузы). Программа моментально прекратит выполняться, но может в любой момент быть продолжена. Как только процесс будет приостановлен, терминал будет возвращен к приглашению командной строки и для перевода процесса в фоновый режим, необходимо ввести команду:

$ bg

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

 

Вывод из фонового режима

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

$ fg

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

[1]+  Done              /bin/ls $LS_OPTIONS

Это указывает, что фоновый процесс (в данном случае ls) завершился.

В фоновом режиме может одновременно выполнять несколько процессов. При этом необходимо знать, какой из процессов требуется вернуть на передний план. Простое выполнение fg вернет процесс, который последним был переведен в фоновый режим. Для перечисления всех выполняющихся процессов в оболочке BASH имеется команда jobs. Например:

$ jobs

[1] Stopped vim

[2]- Stopped amp

[3]+ Stopped man ps

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

Если же требуется перевести на передний план vim, то придется ввести:

$ fg 1

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

 

Список выполняемых программ

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

$ ps

PID     TTY     TIME            CMD

7923    ttyp0   00:00:00        bash

8059    ttyp0   00:00:00        ps

При использовании утилиты ps выводится следующая информация:

q      PID - идентификационный номер (ID) процесса. Каждый выполняющийся процесс получает уникальный идентификатор. В ядрах 2.4.х ID процессов может быть любым числом от 1 и до 232. Каждому новому процессу присваивается свободный PID;

q      TTY - идентификатор терминала, на котором выполняется процесс. Простое выполнение ps покажет процессы, выполняемые на текущем терминале, так что для всех процессов в столбце TTY будет выведена идентичная информация. Как видно из примера, оба показанных процесса выполняются на терминале ttyp0. Это говорит нам о том, что эти процессы запущены либо удаленно, либо из какого-то X-терминала;

q      TIME - счетчик процессорного времени выполнения процесса. Оно не является фактическим временем, с момента запуска процесса. Так как Linux многозадачная операционная система, то в любой момент времени есть несколько выполняемых процессов, и каждый из этих процессов получает небольшую порцию процессорного времени. Так вот, информация, указанная в столбце TIME, показывает время, которое гораздо меньше фактического времени выполнения процесса. Если это время больше, чем несколько минут у одного из процессов, то, скорее всего, что-то не так;

q      CMD - сведения о программе. Отображается только имя программы - опции командной строки и аналогичная информация не выводится. Для того чтобы увидеть эту информацию, необходимо воспользоваться дополнительными опциями при запуске ps.

Далее будут описаны некоторые наиболее часто используемые опции утилиты ps.

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

$ ps -ax

PID     TTY     STAT    TIME    COMMAND

1       ?       S       0:03    init [3]

2       ?       SW      0:13    [kflushd]

3       ?       SW      0:14    [kupdate]

4       ?       SW      0:00    [kpiod]

5       ?       SW      0:17    [kswapd]

11      ?       S       0:00    /sbin/kerneld

30      ?       SW      0:01    [cardmgr]

50      ?       S       0:00    /sbin/rpc.portmap

54      ?       S       0:00    /usr/sbin/syslogd

57      ?       S       0:00    /usr/sbin/klogd -c 3

59      ?       S       0:00    /usr/sbin/inetd

61      ?       S       0:04    /usr/local/sbin/sshd

63      ?       S       0:00    /usr/sbin/rpc.mountd

65      ?       S       0:00    /usr/sbin/rpc.nfsd

67      ?       S       0:00    /usr/sbin/crond -l10

69      ?       S       0:00    /usr/sbin/atd -b 15 -l 1

77      ?       S       0:00    /usr/sbin/apmd

79      ?       S       0:01    gpm -m /dev/mouse -t ps2

94      ?       S       0:00    /usr/sbin/automount /auto file /etc/auto.misc

106     tty1    S       0:08    -bash

108     tty3    SW      0:00    [agetty]

109     tty4    SW      0:00    [agetty]

110     tty5    SW      0:00    [agetty]

111     tty6    SW      0:00    [agetty]

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

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

Столбец STAT показывает состояние (status) процесса: S используется для спящего (sleeping) процесса (процесс ожидает, пока что-то произойдет); Z используется для зомбированных процессов (zombied). Зомбированные процессы - это такие процессы, родительский процесс которых завершился, оставив дочерние процессы рабочими, что не всегда корректно.

Если требуется получить больше информации о выполняемых процессах, можно применить такую команду:

$ ps -aux

USER PID  %CPU  %MEM  VSZ   RSS  TTY STAT  START  TIME  COMMAND

root   1   0.0   0.0  344    80  ?   <st1:place>S     Mar02<st1:place>  0:03  init [3]

root   2   0.0   0.0    0     0  ?   <st1:place>SW    Mar02<st1:place>  0:13  [kflushd]

root   3   0.0   0.0    0     0  ?   <st1:place>SW    Mar02<st1:place>  0:14  [kupdate]

root   4   0.0   0.0    0     0  ?   <st1:place>SW    Mar02<st1:place>  0:00  [kpiod]

root   5   0.0   0.0    0     0  ?   <st1:place>SW    Mar02<st1:place>  0:17  [kswapd]

root   11  0.0   0.0  1044   44  ?   <st1:place>S     Mar02<st1:place>  0:00  /sbin/kerneld

root   30  0.0   0.0  1160    0  ?   <st1:place>SW    Mar02<st1:place>  0:01  [cardmgr]

bin    50  0.0   0.0  1076  120  ?   <st1:place>S     Mar02<st1:place>  0:00  /sbin/rpc.port

root   54  0.0   0.1  1360  192  ?   <st1:place>S     Mar02<st1:place>  0:00  /usr/sbin/sysl

root   57  0.0   0.1  1276  152  ?   <st1:place>S     Mar02<st1:place>  0:00  /usr/sbin/klog

root   59  0.0   0.0  1332   60  ?   <st1:place>S     Mar02<st1:place>  0:00  /usr/sbin/inet

root   61  0.0   0.2  1540  312  ?   <st1:place>S     Mar02<st1:place>  0:04  /usr/local/sbi

root   63  0.0   0.0  1796   72  ?   <st1:place>S     Mar02<st1:place>  0:00  /usr/sbin/rpc.

root   65  0.0   0.0  1812   68  ?   <st1:place>S     Mar02<st1:place>  0:00  /usr/sbin/rpc.

root   67  0.0   0.2  1172  260  ?   <st1:place>S     Mar02<st1:place>  0:00  /usr/sbin/cron

root   77  0.0   0.2  1048  316  ?   <st1:place>S     Mar02<st1:place>  0:00  /usr/sbin/apmd

root   79  0.0   0.1  1100  152  ?   <st1:place>S     Mar02<st1:place>  0:01  gpm

root   94  0.0   0.2  1396  280  ?   <st1:place>S     Mar02<st1:place>  0:00  /usr/sbin/auto

chris 106  0.0   0.5  1820  680 tty1 <st1:place>S     Mar02<st1:place>  0:08  -bash

root  108  0.0   0.0  1048    0 tty3 <st1:place>SW    Mar02<st1:place>  0:00  [agetty]

root  109  0.0   0.0  1048    0 tty4 <st1:place>SW    Mar02<st1:place>  0:00  [agetty]

root  110  0.0   0.0  1048    0 tty5 <st1:place>SW    Mar02<st1:place>  0:00  [agetty]

root  111  0.0   0.0  1048    0 tty6 <st1:place>SW    Mar02<st1:place>  0:00  [agetty]

Это достаточно полный набор информации. Здесь имеются новые столбцы, которые описывают следующее: какой пользователь запустил процесс, сколько системных ресурсов использует процесс (%CPU, %MEM, VSZ и RSS столбцы) и дату, когда процесс был запущен. Очевидно, здесь предоставлено достаточно информации о процессах, которая может быть полезна для системного администратора. В случае если информация не помещается на экран, следует использовать опцию -w.

Принудительное завершение процессов

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

Для того чтобы принудительно завершить процесс, пользователю надо знать либо его PID, либо имя. Чтобы получить PID, можно воспользоваться утилитой ps. Например, чтобы завершить процесс 4747, необходимо задать такую команду:

$ kill 4747

Для того чтобы завершить процесс, пользователю надо быть его владельцем. Это сделано в целях безопасности. Если бы была возможность завершать процессы других пользователей, открылась бы возможность произведения множества злонамеренных действий в системе. Разумеется, root может завершить любой процесс в системе.

Также имеется другая разновидность утилиты kill, которая называется killall. Функция утилиты соответствует ее названию. Она завершает все из запущенных программ, с указанным именем. Если требуется завершить все выполняемые процессы vim, то следует воспользоваться такой командой:

$ killall vim

Все процессы vim, выполняемые пользователем, будут завершены. Если эту команду выполнит root, то она принудительно завершит вообще все процессы vim, выполняемые любым из пользователей. Это предоставляет интересный способ "выбрасывания" всех пользователей из системы:

#killall bash

Некоторые процессы не могут быть завершены обычной командой kill, и понадобится воспользоваться дополнительными опциями. Если процесс с PID 4747 не завершился после выполнения kill, то можно попробовать следующую команду:

$ kill -9 4747

Практически наверняка, это заставит процесс 4747 завершиться. Можно воспользоваться этим же ключом с утилитой killall. Этот ключ позволяет посылать различные сигналы программам. Обычный kill посылает процессу сигнал SIGTERM (terminate - завершить). kill -9 посылает SIGKILL (kill - убить). В распоряжении пользователей целый набор различных сигналов и можно запросить их список, выполнив:

$ kill -l

   1) SIGHUP      2) SIGINT     3) SIGQUIT    4) SIGILL

   5) SIGTRAP     6) SIGABRT    7) SIGBUS     8) SIGFPE

   9) SIGKILL    10) SIGUSR1   11) SIGSEGV   12) SIGUSR2

  13) SIGPIPE    14) SIGALRM   15) SIGTERM   17) SIGCHLD

  18) SIGCONT    19) SIGSTOP   20) SIGTSTP   21) SIGTTIN

  22) SIGTTOU    23) SIGURG    24) SIGXCPU   25) SIGXFSZ

  26) SIGVTALRM  27) SIGPROF   28) SIGWINCH  29) SIGIO

  30) SIGPWR

Номера используются для kill, а имя без предшествующего SIG используется для killall. Вот пример:

$ killall -KILL vim

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

 

Динамическая информация о процессах

Утилита top обеспечивает вывод динамической информации о процессах, выполняемых в системе.

$ top

Эта команда выдаст полный экран информации о выполняемых процессах, а так же некоторую общую информацию о системе: средняя загрузка, количество выполняемых процессов, состояние процессора, информацию о свободной памяти. Для каждого из процессов выводится: PID, пользователь, приоритет, использование CPU и памяти, время выполнения и имя программы.

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

 

 

Контрольные вопросы

1.        Какими процессами в системе могут управлять пользователи?

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

3.        Какая информация о программах выводится при использовании утилиты ps?

4.        Какую информацию выдает расширенный список программ?

5.        В каких случаях следует принудительно завершить процесс?

6.        Для чего используется утилита top?

 

Литература

1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005

2. ??


Глава 9. Настройка сетевых служб

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

ifconfig - настройка сетевого интерфейса резидентной части ядра;

route - ведение таблицы маршрутов;

netconfig - установление сетевого соединения;

 netstat - показывает информацию о текущих сетевых соединениях;

В главе также приведены сведения для работы со следующими конфигурационными файлами:

 /etc/rc.d/rc.modules - описание модулей устройств;

/etc/inetd.conf - конфигурирование сетевых служб;

/etc/resolv.conf - описание серверов имен;

/etc/hosts - список компьютеров в сети;

 

Сетевое оборудование

Подключение компьютера к сети требует наличие специального аппаратного оборудования. Обычно, для подключения к сети используется сетевой адаптер (NIC, Network Interface Card), а для подключения к провайдеру Интернет - модем.

Модули ядра, которые должны быть загружены во время загрузки компьютера, загружаются из файла rc.modules, расположенного в каталоге /etc/rc.d. В стандартном файле rc.modules есть раздел Network device support,  в этом разделе после блока if, находится список сетевых устройств, в виде строк, каждая из которых закомментирована. Необходимо найти нужное устройство и раскомментировать соответствующую ему строку, затем - сохранить изменения в файл. Если сценарий rc.modules будет выполнен пользователем root, то драйвер сетевого устройства должен загрузиться (так же, как и все остальные раскомментированные модули). Примечательно, что некоторые модули (такие, как драйвер ne2000) требуют указания параметров, поэтому необходимо убедиться, что выбрана правильная строка.

Сетевые устройства PCMCIA настроить проще, чем остальные. При установке системы в каталоге /etc/rc.d создается файл rc.pcmcia и каталог /etc/pcmcia, а также установятся драйверы в каталог /lib/modules/<версия_ядра>/pcmcia. Ядро автоматически определяет подключение поддерживаемых PCMCIA-устройств. В том случае, если будет вставлено сетевое устройство PCMCIA, то при загрузке необходимого модуля прозвучит звуковой сигнал. При извлечении карты, ее модуль будет автоматически выгружен.

 

Сетевые утилиты

Утилита ifconfig

Утилита ifconfig используется для настройки сетевого интерфейса резидентной части ядра.

Если не заданы параметры, то команда ifconfig выводит состояние устройств, активных на данный момент. Если задан только параметр interface, то ifconfig выводит только состояние заданного интерфейса; если задан аргумент -a, то будет выведено состояние всех устройств, в том числе и нефункционирующих. В остальных случаях, команда ifconfig служит для настройки. Утилиту ifconfig лучше всего изучать на примерах. Типичный вариант инициализации интерфейса выглядит следующим образом:

# ifconfig eth0 192.168.1.10 broadcast 192.168.1.255 netmask \ 255.255.255.0

Эта строка активирует сетевую карту (eth0 - первый сетевой интерфейс для ethernet; для token ring используется tr0; для ppp - ppp0 и т.д.) с IP-адресом 192.168.1.10, широковещательным адресом 192.168.1.255 и сетевой маской 255.255.255.0.

Утилита route

Утилита route служит для внесения или удаления записей из таблицы маршрутов (как "на лету", так и при начальной загрузке). Команда route -n отобразит таблицу маршрутов с IP-адресами вместо имен, что используется в случае возникновения затруднений с сервером имен.

Утилита netconfig

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

 

Конфигурационные файлы

Файл /etc/inetd.conf

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

Файл настроек для inetd - /etc/inetd.conf. В нем определяется, какая служба, для какого соединения должна быть запущена. Например:

ftp stream tcp nowait root /usr/sbin/tcpd proftpd -l -i -a

Эта строка относится к FTP-серверу (File Transfer Protocol, протокол передачи данных). В приведенном примере, для обработки поступающих запросов должна быть запущена программа tcpd, которая расположена в каталоге /usr/sbin/. Эта программа обеспечивает основные требования безопасности для FTP-сервера proftpd.

Как и в большинстве системных файлов, строки в inetd.conf комментируются символом #. Активизировать и (или) остановить службу в inetd можно раскомментировав или закомментировав соответствующие строки в этом файле с последующим перезапуском inetd.

 

Файл /etc/resolv.conf

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

domain home

nameserver 192.168.1.1

search home. rpunet.ru

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

Последняя строка содержит список имен доменов, в которых следует искать сетевые имена компьютеров. Предположим, имеются компьютеры shaman.home и ws.rpunet.ru. Чтобы пропинговать их, можно просто выполнить - ping shaman и ping ws. Программа ping вначале попробует добавить .home к имени shaman, и найдет соответствующий компьютер. Для ws вначале будет опробовано имя ws.home. Соответствующий компьютер не будет обнаружен, и поэтому будет произведен поиск ws.rpunet.ru. Следует отметить, что все домены, перечисленные в search должны заканчиваться на .>, за исключением последнего.

 

Файл /etc/hosts

Файл hosts представляет собой список компьютеров и их IP-адресов и позволяет осуществить простейший способ поиска компьютеров в домене. Этот файл используется во время загрузки системы, когда сервер имен еще не доступен, а также в небольших сетях, где использование сервера имен не оправдано. Например, файл может содержать следующие строки:

127.0.0.1 localhost

192.168.1.32 pc.home pc

Первая строка должна быть самодостаточной. Второй строки может и не быть. Допускается указывать столько имен и синонимов для одного адреса, сколько необходимо, разделяя их пробелами. В данном случае 192.168.1.32 переводится в pc.home (и наоборот), но синоним pc так же может быть использован, когда нет желания набирать .home.

 

Сценарии инициализации сетевых интерфейсов

/etc/rc.d/rc.inet1

Сценарий rc.inet1 используется для сетевой инфраструктуры, он инициализирует устройства и устанавливает адреса и пути.

/etc/rc.d/rc.inet2

Сценарий rc.inet2 относится к другой части - установке служб и демонов и оперирует с настройками сети, обычно представляющими интерес для пользователей. Например, сценарий может содержать следующие блоки строк:

#Start the NAMED/BIND name server:

if [ -f $NET/named ]; then

   echo -n "named"

   $NET/named -u daemon -g daemon

fi

В примере важна четвертая строка, которая запускает named(8). Все остальное лишь дополнения: if проверяет, существует ли программа named там, где она должна быть, а echo выводит сообщение, что программа named запускается. Большинство служб, запускаемых из rc.inet2, загружаются аналогичными блоками.

 

Сетевая файловая система

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

Для настройки NFS необходимо проделать несколько действий. Во-первых, должны быть запущенны соответствующие службы на сервере: portmap(8), nfsd(8) и mountd(8). Во-вторых, сервер должен соответствующим образом экспортировать дерево файловой системы клиенту, что осуществляется через файл /etc/exports(5).

Первая часть выполняется установкой пакета tcpip-*-*-*.tgz (из раздела N) и добавкой разрешения выполнения для сценария rc.inet2.

Файл /etc/exports представляет больше интереса. Предположим, имеется каталог с образами на компьютере с именем battlecat.home, который необходимо подключить к компьютеру pc.home. На battlecat.home должна быть строка в файле /etc/exports, которая выглядит следующим образом:

/var/media/images   pc.home(ro)

Теперь, чтобы на компьютере pc.home подключить каталог образов к локальному каталогу /mnt возможно задать команду:

#mount -t nfs battlecat.home:/var/media/images /mnt 

В данном примере запись в подключенный каталог запрещена, что определяется указанием параметра ro(только для чтения) в файле /etc/exports компьютера battlecat.home. Все дополнительные параметры указываются в скобках после имени клиента и разделяются запятыми. Например:

/var/media/images   pc.home(rw,no_root_squash)

Параметр rw (чтение-запись) указывает, что пользователям с pc.home разрешается запись в разделяемый каталог.

 

Система безопасности tcp_wrappers

Система tcp_wrappers - это основная система предотвращения (а также и разрешения) доступа к службам с определенных компьютеров. Она работает следующим образом: inetd запускает много служб, большинство из которых "окутаны" (от английского wrap) программой tcpd. Другими словами, службы запускает tcpd, но inetd не знает этого (или, точнее, его это не интересует). tcpd журналирует попытки соединения и проверяет файлы /etc/hosts.allow и /etc/hosts.deny на наличие разрешения на доступ к запрашиваемой службе.

Правила, определенные в этих файлах, могут быть довольно сложными. Вот простой пример файла /etc/hosts.deny:

ALL: pyramid.home

Смысл этой строки должен быть очевиден: она перекрывает доступ pyramid.home ко всем службам на данном компьютере, которые защищены при помощи tcpd.

Система tcp_wrappers гибка в настройках, а также очень полезна и эффективна. Более подробную информацию можно найти в man-страницах tcpd(8), hosts_access(5) и hosts_options(5).

 

 

Контрольные вопросы

1.        Каким образом загружается драйвер устройства?

2.        Для чего используется утилита ifconfig?

3.        Для чего используется утилита route?

4.        Для чего используется утилита netconfig?

5.        Какая информация приводится в файле /etc/inetd.conf?

6.        Какая информация приводится в файле /etc/resolv.conf?

7.        Какая информация приводится в файле /etc/hosts?

8.        Назовите основные сценарии инициализации сетевых интерфейсов.

9.        Что представляет из себя сетевая файловая система?

10.     Каким образом работает система безопасности tcp_wrappers?

 

Литература

1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005

2. ??


Глава 10. Настройка графического сервера X Window

Система X Window является стандартным GUI (Graphical User Interface, графический интерфейс пользователя) для всех UNIX платформ, включая и Linux. В отличие от MS Windows и MacOS, в Linux и UNIX, GUI не имеет ничего общего с ядром операционной системы. Ядро и GUI - независимые части. Это придает системе большую стабильность - если GUI зависает, это не приводит к зависанию всей системы. Единственная проблема с X Window, заключается в том, что ее достаточно трудно настроить.

Первый из разделов описывает использование xorgsetup - утилиты, поставляемой с дистрибутивами Slackware и MOPSLinux, для облегчения настройки X Window System. Второй из разделов относится к утилите xorgconfig - классической программе в стиле командной строки, для настройки X Window.

 

Утилита xorgsetup

Это наиболее простой способ настройки системы Х Window. Необходимо только набрать в командной строке:

# xorgsetup

Пользователю будет предложено выбрать разрешение монитора и глубину цвета, после чего программа самостоятельно произведет корректирование файла /etc/X11/xorg.conf. По-умолчанию будет использоваться стандартный драйвер видеокарты VESA, монитор будет настроен на частоту обновления 60Гц, а переключение раскладок клавиатуры будет осуществляться одновременным нажатием клавиш Ctrl+Shift.

 

Утилита xorgcfg

Xorgcfg - это программа для настройки X Window, поставляемая разработчиками X. Программа имеет оконный интерфейс на английском языке (рис. 2.2). Настройка параметров осуществляется в диалоговом режиме.

Рисунок 2.1. Главное окно программы xorgcfg

 

Утилита xorgconfig

xorgconfig - это утилита для настройки X Window, поставляемая разработчиками. Настройка параметров осуществляется в диалоговом режиме. Из предлагаемых вариантов необходимо выбрать ответы, наиболее подходящие настраиваемой системе. В результате работы программа создаст файл /etc/Х11/xorg.conf. После этого все будет готово к запуску X Window. При ошибке следует прервать выполнение программы нажатием комбинации клавиш <Ctrl>+<C> и повторить все с начала.

Полезно до запуска xorgconfig собрать как можно больше информации о видеокарте и мониторе, установленных в компьютере. Информацию о видеокарте можно найти в файле /proc/pci, выполнив следующую команду:

# cat /proc/pci

Например, информация для видеокарты Matrox Millenium G400 имеет следующий вид:

Bus 1, device 0, function 0:

  VGA compatible controller: Matrox Graphics, Inc. MGA G400 AGP (rev 133).

    IRQ 16.

    Master Capable. Latency=32. Min Gnt=16.Max Lat=32.

    Prefetchable 32 bit memory at 0xda000000 [0xdbffffff].

    Non-prefetchable 32 bit memory at 0xfe9fc000 [0xfe9fffff].

    Non-prefetchable 32 bit memory at 0xfe000000 [0xfe7fffff].

Рекомендуется записать информацию об установленной видеокарте или переключиться на другой виртуальный терминал (используя комбинацию клавиш <Alt>+<Fx>, где x - число от 1 до 6) и запустить там xorgconfig. Информация о видеокарте понадобится позже. Утилита xorgconfig должна запускаться пользователем root, так как она записывает файлы и создает символические ссылки в местах, где только у пользователя root есть права на запись.

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

 

Mouse protocol (протокол мыши)

протокол мыши

Рисунок 2.2. Выбор типа мыши

Тип установленной мыши должен быть выбран из списка (рис. 2.3). Большинство компьютеров поставляются с PS/2 или Microsoft Intellimouse.

 

Emulate3Buttons (эмуляция третей кнопки).

протокол мыши

Рисунок 2.3. Выбор режима эмуляции третьей кнопки

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

 

Mouse device name (имя устройства).

имя устройства мышки

Рисунок 2.4. Выбор имени файла устройства

Вариант по умолчанию - /dev/mouse (рис. 2.5), подойдет для большинства пользователей, использующих мышь, подключенную к последовательному или PS/2 порту.

 

XKEYBOARD extension (расширение XKEYBOARD).

расширение XKEYBOARD

Рисунок 2.5. Выбор расширения клавиатуры

 

При положительном ответе на вопрос будет включено расширенное управление раскладкой клавиатуры (рис. 2.6). То есть, в отличие от предыдущих версий X Window, где при старой раскладке клавиатуры кнопки <Backspace> и <Delete> не работали, здесь они будут работать нормально.

 

Bindings for alt keys (назначение дополнительных кнопок).

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

 

Horizontal sync range (диапазон синхронизации по горизонтали).

диапазон синхронизации по горизонтали

Рисунок 2.6. Выбор диапазона горизонтальной синхронизации

 

Это первый из вопросов об установленном мониторе. Здесь очень важно сделать правильный выбор. Не допускается выбор диапазона, выходящего за пределы спецификации установленного монитора. Это не так важно на новых мониторах, так как у них есть защита, а более старые мониторы, при указании диапазона превосходящего его возможности, могут быть повреждены. Так что, если есть сомнения, лучше перестраховаться и выбрать консервативный диапазон. Очень полезно иметь в  наличии документацию от установленного монитора. Для большинства современных мониторов можно выбрать 31.5-82.0 или 31.5-95.0. При этом допускается ввести свой диапазон частот, если подходящий в списке не указан.

 

Vertical sync range (диапазон синхронизации по вертикали).

диапазон синхронизации по вертикали

Рисунок 2.7. Выбор диапазона вертикальной синхронизации

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

 

Identification strings (строка идентификации).

Здесь будут предложены три вопроса об идентификации монитора. В этом пункте допускается ввод любых имен. Так как эти данные будут использованы только в конфигурационном файле для идентификации монитора, то их можно пропустить путем нажатия клавиши <Enter>. 

Video card database (база данных видеокарт).

база данных видео-карт

Рисунок 2.8. Выбор типа видеоадаптера

Этот подраздел по настройке X Window относится к установленному видеоадаптеру. Документация от видеоадаптера и информация, полученная ранее, помогут при настройке. Для выбора видеоадаптера из списка, необходимо ответить y (да). Для перехода к следующей странице необходимо нажать на клавишу <Enter>.

В базе данных есть около 800 видеокарт. В левом столбце указан номер видеокарты, и ее наименование. В правом столбце содержится информация о чипсете данной видеокарты (рис. 2.9). Для просмотра списка необходимо нажимать на клавишу <Enter>, пока не будет найдена нужная видеокарта, после этого необходимо ввести соответствующий ей номер. Если тип установленной видеокарты неизвестен, то можно поискать видеокарту по названию в файле /proc/pci, либо можно выбрать пункт generic SVGA. Многие видеокарты, для которых нет их собственного X-сервера, поддерживаются стандартным SVGA-сервером. После выбора типа видеокарты пользователю будет предоставлена детальная информация о ней. Например, для указанной выше карты Matrox G400 будет получено такое сообщение:

Your selected card definition:

Identifier: Matrox Millennium G400

Chipset: mgag400

Driver: mga

Do NOT probe clocks or use any Clocks line.

 

Video memory (видео память).

видео память

Рисунок 2.9. Выбор размера видеопамяти

Необходимо выбрать размер имеющейся видеопамяти (рис. 2.10). Для получения этой информации можно использовать файл /proc/meminfo. Если в списке нет подходящего варианта, то можно выбрать Other и ввести вручную объем (в Кбайт) имеющейся видеопамяти.

 

Identification strings (строки идентификации).

Будет предложено ввести три идентификационных строки. Как и с монитором, можно просто нажать три раза клавишу <Enter> или ввести любые названия.

Теперь можно будет выбрать, в каких режимах будет работать X-сервер. На экране появятся четыре строки с указанием различных глубин цвета - 1bpp, 8bpp, 16bpp и 24bpp. Возле каждого из них есть список различных видеорежимов, которые могут быть использованы с этой глубиной цвета. X-сервер запустится с глубиной цвета по умолчанию и с первым из перечисленных для этой глубины разрешением. Для сохранения предложенного порядка режимов необходимо выбрать Ok.

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

"640x480" "800x600" "1024x768" "1280x1024" for 1bpp

"640x480" "800x600" "1024x768" "1280x1024" for 8bpp

"640x480" "800x600" "1024x768" "1280x1024" for 16bpp

"640x480" "800x600" "1024x768" for 24bpp

Если требуется, чтобы X Window по умолчанию запускалась с другим разрешением, то вначале необходимо выбрать глубину цвета, которую требуется изменить, а затем следовать указаниям программы. Она предложит ввести цифры, соответствующие разрешениям в выбранном порядке. Если требуется просто поменять порядок разрешений, то достаточно ввести:

Which modes? 5432

Также возможно удалить те разрешения, которые не нужны. Если установленная видеокарта не может работать при разрешении 1280 × 1024, то нет никакого смысла пробовать этот режим. Можно удалить этот режим, введя:

Which modes? 432

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

После этого программа возвратиться в список видеорежимов. После изменения для глубины 16bpp он будет выглядеть следующим образом:

"640x480" "800x600" "1024x768" "1280x1024" for 1bpp

"640x480" "800x600" "1024x768" "1280x1024" for 8bpp

"1280x1024" "1024x768" "800x600" "640x480" for 16bpp

"640x480" "800x600" "1024x768" for 24bpp

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

 

Write the config file (запись конфигурационного файла).

Для записи настройки X Window в файл /etc/Х11/xorg.conf необходимо ответить y (да).

На этом настройка X Window завершена.

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

$ startx

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

Существует несколько комбинаций клавиш, которые весьма полезны при использовании X Window.

q      <Ctrl>+<Alt>+<Backspace> - принудительно завершит X Window и вернет пользователя в текстовый режим.

q      <Ctrl>+<Alt>+<функциональная_клавиша>. Используется для переключения из X Window на терминалы командной строки.

q      <Ctrl>+<Alt>+<Num+> и  <Ctrl>+<Alt>+<Num-> переключает видеорежимы.

Сессионные файлы настроек

/etc/X11/xinit/xinitrc и ~/.xinitrc

xinit(1) - программа, запускающая X Window. Она выполняется из startx(1), а ее конфигурационный файл определяет, какие программы (включая и оконный менеджер) должны быть запущены при загрузке X Window. Сначала xinit проверяет, есть ли в домашнем каталоге файл .xinitrc. Если она находит его, то он выполняется, а если нет - выполняется /etc/X11/xinit/xinitrc (системный файл по умолчанию). Пример файла xinitrc:

# !/bin/sh

# $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $

userresources=$HOME/.Xresources

usermodmap=$HOME/.Xmodmap

sysresources=/usr/X11R6/lib/X11/xinit/.Xresources

sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap

 

# merge in defaults and keymaps

if [ -f $sysresources ]; then

    xrdb -merge $sysresources

fi

if [ -f $sysmodmap ]; then

    xmodmap $sysmodmap

fi

if [ -f $userresources ]; then

    xrdb -merge $userresources

fi

if [ -f $usermodmap ]; then

    xmodmap $usermodmap

fi

# start some nice programs

twm &

xclock -geometry 50x50-1+1 &

xterm -geometry 80x50+494+51 &

xterm -geometry 80x20+494-0 &

exec xterm -geometry 80x66+0+0 -name login

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

Если при запуске X Window, необходимо запускать дополнительные программы, то нужно скопировать /etc/X11/xinit/xinitrc в ~/.xinitrc и отредактировать его, разместив нужные строки. Например, если вместо TWM вы хотите использовать KDE, то в ~/.xinitrc следует добавить:

# Start the window manager:

exec startkde

Примечательно, что в каталоге /etc/X11/xinit/ есть несколько файлов xinitrc.*, которые соответствуют разным оконным менеджерам. По желанию можно воспользоваться любым из них.

 

.Xresources и .Xdefaults

Для получения различных настроек пользователя (цвета, шрифты, и т. д.) многие из программ X Window используют X Resource Database. Эта база данных обслуживается при помощи программы xrdb(1), которая напрямую практически никогда не запускается. В системе она запускается автоматически из файла xinitrc. Файл, из которого xinitrc указывает программе xrdb загружать настройки, -  .Xresources. Программа xrdb так же загрузит  .Xdefaults. Минимальный файл .Xresources выглядит следующим образом:

xterm*background: black

xterm*foreground: gray

xterm*scrollBar: true

xterm*font: -*-lucidatypewriter-*-r-*-*-15-*-*-*-*-*-*-*

Эти четыре строки определяют настройки для программы xterm. В общем случае файл .Xresource имеет следующую структуру:

program*option: setting/value

Таким образом, содержание .Xresources должно быть самодостаточным. Шрифты для X Window всегда описываются так, как указано в четвертой строке.

 

Серверы и оконные менеджеры

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

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

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

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

 

Выбор рабочего стола

Многие годы UNIX использовался исключительно как операционная система для серверов и мощных профессиональных рабочих станций. Им пользовались люди с техническими наклонностями, поэтому графические интерфейсы представляли собой скелеты, разработанные для запуска нескольких необходимых приложений, вроде CAD-программ (Computer-Aided Design, автоматизированное проектирование) и программ обработки изображений. Управление файлами и системой производилось исключительно из командной строки. Различные производители (Sun Microsystems, Silicon Graphics и т. д.) продавали рабочие станции с наличием удобного графического интерфейса, но большое разнообразие сред разработки для GUI привело к тому, что единого стандарта для рабочего стола не существует. Полоса прокрутки в разных программах может выглядеть по-разному, меню расположены в различных частях окна, в программах встречаются разные кнопки и переключатели. До тех пор, пока пользователями были лишь технические профессионалы, это было несущественно.

С появлением свободных UNIX-подобных ОС, а также растущим числом различных графических приложений, X Window стал использоваться в качестве рабочего стола. Для устранения всех недостатков были созданы два проекта с открытыми исходными текстами программ: The K Desktop Environment или KDE и GNU Network Object Model Environment, известный как GNOME. Каждый из них имеет широкий спектр приложений, от панелей задач и менеджеров файлов, до игр и офисных пакетов и предоставляет универсальный и завершенный рабочий стол.

Различия между KDE и GNOME не очень велики. Они выглядят по-разному, так как написаны с помощью различных средств. KDE основан на Qt-библиотеке компании Troll Tech AS, в то время как GNOME основан на GTK, наборе инструментов, изначально разработанном для GIMP (GNU Image Manipulation Program, программа для работы с изображениями). Так как проекты независимы, то и разрабатываются они разными дизайнерами и программистами, с разными стилями разработки и с различной философией. Тем не менее, результат в обоих случаях, фундаментально идентичен: полная, тесно интегрированная рабочая среда и набор приложений. По функциональности и внешнему виду оба оконных менеджера предоставляют богатые возможности, к тому же они бесплатны.

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

$ xwmconfig

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

 

Экспортирование экрана

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

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

В предлагаемом для рассмотрения примере будет использоваться два компьютера: golf.foc - довольно мощный сервер, расположенный в неудобном месте. На нем установлено ОЗУ большой емкости, мощный процессор, а также много X-программ, но нет монитора. В другом конце комнаты расположен couch.foc - старый компьютер с небольшим объемом ОЗУ и маленьким диском. На нем нет достаточных ресурсов для запуска программы вроде Netscape. Компьютер couch имеет два существенных преимущества: у него есть монитор и он расположен прямо возле удобного кресла. Пользователю даже не надо вставать, чтобы пользоваться компьютером. Задача заключается в том, чтобы обеспечить возможность запустить программу Netscape с компьютера couch. Решение - экспортирование экрана.

Для удаленного запуска программ необходимо войти в систему на couch, запустить X Window и запустить любую установленную в системе терминальную программу (xterm, rxvt, eterm, aterm или любую другую). Первый шаг при настройке удаленного отображения X-программ - настройка клиента так, чтобы другие компьютеры могли показывать вывод программ. Для этого используется программа xhost, которая позволяет пользователю выбрать тех, кто сможет "смотреть", что делается на его компьютере:

couch $ xhost + golf.foc

golf.foc being added to access control list

Теперь только golf.foc может выводить информацию на экран компьютера couch. Пользователь может проверить, у кого есть доступ для вывода на экран информации, запустив xhost без аргументов:

couch $ xhost

access control enabled, only authorized clients can connect

INET:golf.foc

INET:localhost

INET:couch.foc

LOCAL:

Теперь клиент готов. Следующий шаг - настроить сервер, чтобы он знал, куда выводить изображение вместо монитора.

Настройка сервера проста. После того, как пользователь соединился с сервером, ему надо изменить переменную $DISPLAY. По умолчанию, вероятно, она будет пустая. Переменной должно быть присвоено значение, равное удаленному хосту, а также указано число, соответствующее тому, на какую X-сессию выводить экран. Скорее всего, у пользователя будет только одна X-сессия, так что тут никаких проблем возникнуть не должно.

В данном примере переменная $DISPLAY должна быть установлена следующим образом (в других случаях, если на сервере используется BASH, суть такая же, но синтаксис будет немного отличен):

golf $ export DISPLAY=couch.foc:0.0

Это все, что необходимо сделать для настройки сервера. Теперь, не отсоединяясь, можно запускать X-программы с него. Весь вывод программ по сети будет направляться на экран пользователя на компьютере couch.

Для запуска netscape на сервере golf  пользователь компьютера couch должен ввести команду:

golf $ netscape &

Так как переменная $DISPLAY указывает на couch, все будет выводиться на этот компьютер. Пользователю даже не придется вставать из-за своего компьютера для того, чтобы запускать программы на сервере. При этом следует помнить, что на сервере должны быть установлены все библиотеки, и другие файлы, необходимые для выполнения программ. В то же время, на сервере не понадобится файл конфигурации xorg.conf, так как на его экран ничего не выводится.

Отключить экспортирование экрана пользователь может, убрав сервер из списка доступа на своем клиенте:

couch $ xhost - golf.foc

golf.foc being removed from access control list

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

 

 

Контрольные вопросы

1.        Какие существуют утилиты для настройки X Window?

2.        Каковы функции программы xinit(1)?

3.        Где хранятся настройки пользователя?

4.        Каковы главные недостатки удаленного вывода программ на экран?

5.        Какая утилита используется для выбора рабочего стола?

6.        В чем заключается суть экспортирования экрана?

 

Литература

1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005

2. ??


Глава 11. Управление пакетами системы

 

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

 

Обзор формата пакетов

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

Здесь приведена вымышленная программа и пример ее пакета:

./

usr/

usr/bin/

usr/bin/makehejaz

usr/doc/

usr/doc/makehejaz-1.0/

usr/doc/makehejaz-1.0/COPYING

usr/doc/makehejaz-1.0/README

usr/man/

usr/man/man1

usr/man/man1/makehejaz.1.gz

install/

install/doinst.sh

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

В примере имеется специальный каталог install/, который может содержать сценарий, который будет выполнен после копирования файлов. Сценарий называется doinst.sh. Если система обработки пакета найдет такой сценарий, то после установки пакета он будет выполнен.

 

Утилиты управления пакетами

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

 

Утилита pkgtool

Pkgtool - это меню-управляемая утилита, позволяющая производить установку и удаление пакетов. Основное меню представлено на рис. 2.10.

Рисунок 2.10. Главное окно утилиты pkgtool

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

Также имеется возможность просмотреть список пакетов (рис. 2.11).

Рисунок 2.11. Просмотр установленных пакетов

Если требуется удалить пакеты, то необходимо выбрать опцию remove, и утилита отобразит список всех установленных пакетов, с возможностью выбора нескольких из них для удаления. Необходимо пометить те пакеты, которые должны быть удалены, и выбрать OK

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

 

Утилита installpkg

Утилита installpkg(8) обеспечивает установку новых пакетов. Она имеет следующий синтаксис:

# [ROOT=<path>] installpkg [option] <package name>...

Утилита installpkg имеет три опции, но при вызове может быть использована только одна из них. Опции приведены в табл. 3.6.

Таблица 2.2. Опции installpkg

Опция

Действие

-m

Производит операцию makepkg с текущим каталогом.

-warn

Показывает, что случится, если пакет будет установлен.

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

-r

Рекурсивно установит все пакеты из текущего каталога.

 

<package name> так же может быть маской имен.

Если переменная окружения ROOT была задана до выполнения installpkg, то для установки, вместо корневого каталога, будет использован путь, указанный в данной переменной. Это полезно при настройке новых дисков для корневого каталога. Они обычно подключены к каталогу /mnt или какому-то другому, отличному от /.

База данных установленных пакетов есть не что иное, как набор файлов, расположенных в каталоге /var/log/packages. Для каждого из пакетов в этом каталоге создается текстовый файл. Если в пакете есть послеустановочный сценарий, он записывается в файл /var/log/scripts/<packagename>.

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

 

Утилита removepkg

Removepkg обеспечивает удаление пакетов, уже установленных в системе. Синтаксис таков:

# [ROOT=<path>] removepkg [option] <package name>...

Утилита removepkg имеет четыре опции, но при вызове может быть использована только одна из них. Опции приведены в табл. 3.7.

Таблица 2.3. Опции removepkg

Опция

Действие

-copy

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

-keep

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

 

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

-preserve

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

 

сохраняется в резервный каталог.

-warn

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

 

Если переменная окружения ROOT была задана до выполнения removepkg, то для установки, вместо корневого каталога, будет использован путь, указанный в данной переменной.

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

Во время процесса удаления отображается статус. После удаления база данных пакета перемещается в каталог /var/log/removed_packages, а постустановочный сценарий в /var/log/removed_scripts.

Как и в случае с installpkg, имеется возможность указывать несколько пакетов или использовать шаблоны для имен пакетов.

 

Утилита upgradepkg

Upgradepkg(8) обновит пакет, уже присутствующий в системе. Синтаксис утилиты таков:

# [ROOT=<path>] upgradepkg <package name>...

или

# [ROOT=<path>] upgradepkg <old package name>%<new package name>

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

Если переменная окружения ROOT была задана до выполнения upgradepkg, то для установки, вместо корневого каталога, будет использован путь, указанный в данной переменной.

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

Как и с installpkg и removepkg, можно указать несколько пакетов или использовать шаблоны для имен пакетов.

 

Утилита rpm2tgz/rpm2targz

Red Hat Package Manager (RPM) - это популярный сегодня тип системы пакетов. Многие разработчики предоставляют свои программы в формате RPM. Так как этот формат "неродной" для Slackware и MOPSLinux, то пользователям этих систем не рекомендуется его использовать. Тем не менее, некоторые программы доступны только в RPM (даже исходные тексты).

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

Утилита rpm2tgz создаст пакет с расширением .tgz, а утилита rpm2targz создаст архив с расширением .tar.gz.

 

Создание пакетов

Для создания пакетов системы нет определенных требований, единственное - пакет должен быть в виде файла tar gziped и, если нужен послеустановочный сценарий, он должен быть в каталоге /install/doinst.sh.

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

 

Утилита explodepkg

Утилита explodepkg(8) служит для разворачивания содержимого пакета в текущий каталог.

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

 

Утилита makepkg

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

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

 

 

Контрольные вопросы

1.        Что такое пакет программ?

2.        Каковы основные утилиты упраления пакетами?

3.        Какие методы используются для создания пакетов?

Литература

1. Крюков Д.А., Лобко В.И., Семыкин О.С., Самоучитель Slackware/MOPSlinux для пользователя. - СПб.: BHV-Петербург, 2005

2. ??


Глава 12. Использование WEBMIN для настройки служб и сервисов ОС

               

 

 

???расписать или нет???


Часть III. Конфигурирование периферийного оборудования

 

 

Глава 13. Подключение принтеров и настройка систем печати

 

Общие сведения о принтерах и системах печати

 

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

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

Для взаимодействия с принтерами разработано семейство языков описания страниц (Page Description Langauge, PDL), которые повышают эффективность работы приложений. Наиболее распространенными языками описания страниц являются  PostScript, PCL и PDF. Самый популярный в Linux-системах - язык PostScript. Практически все программы компоновки страниц генерируют выходные данные на языке PostScript. Для генерации данных на языках PCL и PDF в Linux-системах чаще всего требуется использование специальных программных фильтров.

Некоторые принтеры нельзя использовать в Linux, так как они не поддерживают ни одного языка семейства PDL и изначально предназначены для работы в MS Windows. Такие принтеры называют WinPrinters. Информация, необхо-димая для взаимодействия с такими принтерами производителями не публикуется, а драйверы патентуются и имеют ограничения по распространению. Поэтому перед покупкой принте-ра это следует проверить.

Для Linux существует несколько различных систем печати. Наиболее распространенными являются системы LPD, LPRng  и CUPS.

Система LPD (Line Printer Daemon - демон построчной печати) основана на системе печати BSD, которая была разработана в университете Беркли и много лет использовалась в среде UNIX. Разновидности этой системы до сих пор применяются в различных версиях UNIX.

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

В MOPSLinux включена перспективная и популярная в настоящее время система печати CUPS (Common UNIX Printing System - общая сис-тема печати UNIX) разработанная компанией Easy Software Products. Она была недавно перенесена в Linux и может использоваться в орга-низациях, где применяются разные версии Linux, и требуется кросс-платформенная печать. Система CUPS имеет набор дополнительных утилит для эмуляции систем печати LPD и LPRng. Информацию об этой системе можно найти на Web-узле www. cups. org.

Необходимую информацию можно найти на Web-узле www.linuxprinting.org.

 

Настройка печати

 

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

Для подключения принтера необходимо подключить сам принтер и настроить систему печати.

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

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

Более современная технология последовательного доступа называется USB (Universal Serial Bus - универсальная последовательная шина). USB-принтеры подключаются к файлам устройств /dev/usb/lp*.

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

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

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

Старые сетевые принтеры требуют, чтобы задания на печать посылались через ТСР-порт 9100. Такую конфигурацию трудно поддерживать в системе LPD, зато легко - в системах LPRng и CUPS.

Для сетевой печати можно также использовать систему CIFS (Common Internet File System -общая файловая система для Internet), известную как Samba. CIFS позволяет серверам UNIX, Linux и Windows совместно работать с принтерами, благодаря чему любой из компьютеров может выступать в качестве сервера сетевой печати. Однако, такая конфигурация не рекомендуется для работы со сверхвысокопроизводительными принтерами, поскольку могут возникнуть проблемы с блокировками файлов. Система CIFS особенно удобна, когда при-ходится использовать Linux-принтеры совместно с клиентами Windows.

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

Для печати на таком принтере часто требуется специальное программное обеспече-ние, осуществляющее "перевод" задания на соответствующую разновидность языка се-мейства PDL. Некоторые поставщики предоставляют такие программы для Linux, и это, конечно, лучший вариант. Популярной альтернативой является пакет ghostscript, кото-рый может преобразовывать задания формата PostScript в PDL-страницы. В MOPSLinux не возникает подобных проблем, так как дистрибутив содержит пакет ghostscript, взаимодействующий с системой печати CUPS.

 

Общие сведения о CUPS

В MOPSLinux используется система печати CUPS версии 1.1

 Система печати CUPS - это современная система печати, которая работает с новыми принтерами, устройствами и протоколами. Она совместима с существующими приложениями UNIX и использует Интернет-протокол печати (Internet Printing Protocol - "IPP") IPP/1.1, который разработан инженерной группой по развитию Интернета (Internet Engineering Task Force - "IETF"). CUPS является свободным программным обеспечением и распространяется в соответствии с условиями Общественной Лицензии Проекта GNU (GNU General Public License - GNU GPL) и Общественной Лицензии Библиотеки Проекта GNU (GNU Library General Public License).

Первая версия системы CUPS (основанная на протоколе IPP/1.0) вышла в октябре 1999 года. С тех пор, что касается безопасности, мобильности и ошибок в работе, программный код системы CUPS 1.0 был усовершенствован, но функциональных изменений не произошло.

Версия CUPS 1.1 основана на протоколе IPP/1.1. Она представляет собой версию системы, улучшенную в соответствии с запросами пользователей. Как и у версии 1.0, программный код версии CUPS 1.1 будет усовершенствован в случае обнаружения проблем в работе системы.

Структура

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

                

Рисунок 3.1. Диаграмма блоков системы печати CUPS

Планировщик

Планировщик представляет собой приложение сервера HTTP/1.1, которой обрабатывает HTTP запросы. Помимо обработки запросов на печать посредством IPP POST запросов, планировщик также выполняет роль полноценного веб-сервера для создания документов, отслеживания статуса и управления.

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

Конфигурационные файлы

Блок конфигурационных файлов содержит:

  • Конфигурационный файл HTTP сервера.
  • Файлы, задающие принтер и класс.
  • Файлы MIME типа и файлы правил преобразования.
  • Файлы описания принтеров со шрифтами PostScript (PostScript Printer Description - PPD).

Конфигурационный файл HTTP сервера похож на файл конфигурации сервера Apache и задает для сервера все параметры контроля доступа.

Файлы, задающие принтер и класс, представляют собой списки всех доступных очередей принтеров и их классов. Классами принтеров называются группы принтеров. Задание, которое дается классу, передается первому свободному принтеру класса (по кругу).

В файлах MIME типа содержатся все поддерживаемые типы MIME (text/plain, application/postscript и др.), а также правила для автоматического определения формата файла. Они используются HTTP сервером для определения поля Тип_содержания (Content-Type) для запросов GET и HEAD, а также обработчиком IPP запросов для определения типа поля при получении запроса на Печать (Print-Job) или Доставку (Send-File) с форматом_документа (document-format) application/octet-stream.

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

Файлы PPD описывают возможности всех принтеров (не только принтеров со шрифтами PostScript). Существует один PPD файл для каждого принтера. Для поддержки драйверов принтера PPD файлы для принтеров, не поддерживающих шрифты PostScript, определяют дополнительные фильтры с помощью атрибутов cupsFilter.

CUPS API

Блок CUPS API содержит характерные для CUPS функции  для создания очереди печатных работ, получения информации о принтере, доступа к ресурсам посредством HTTP и IPP, а также для управления PPD файлами. В отличие от остальных систем CUPS, CUPS API распространяется в соответствии с условиями лицензии GNU LGPL, так что ее можно использовать в приложениях, не относящихся к GPL.

<st1:city><st1:place>Berkeley<st1:place><st1:city> and System V Commands

Для распределения работы и проверки статуса принтера система CUPS предлагает интерфейсы командной строки System V и Berkeley. Команды lpstat и lpc status также отображают принтеры сети ("printer@server"), если активирован поиск принтеров.

Команды System V используются для управления принтерами и их классами. Средство управления принтерами Berkeley (lpc) поддерживается исключительно в режиме "только_чтение" для проверки текущего статуса планировщика и очередей принтеров.

Фильтры

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

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

Растровый фильтр PostScript основан на ядре GNU Ghostscript 5.50. Чтобы обеспечить поддержку любого растрового принтера, этот фильтр системы CUPS использует драйвер общего растрового принтера и внешний интерфейс CUPS, а не драйверы принтеров и внешний интерфейс Ghostscript. Это позволяет использовать фильтр, работающий с тем же драйвером принтера, для печати растровых данных с любого фильтра.

Обработка изображений (CUPS Imaging)

Библиотека изображений CUPS дает возможность работать с большими изображениями, выполняя преобразования цветов и их обработку, масштабирование изображений для печати и обработку растровых страниц. Библиотека используется фильтрами файлов изображений системы CUPS, процессором растровых изображений (PostScript RIP) и всеми драйверами растровых принтеров.

Программа передачи

Программа передачи представляет собой специальный фильтр, который передает данные для печати устройству или соединению с сетью. В системе CUPS 1.1 представлены программы передачи для параллельных, серийных, USB, LPD, IPP и AppSocket (JetDirect) соединений.

Система SAMBA 2.0.6, а также более поздние версии системы, включают в себя программу передачи SMB (smbspool), которую можно использовать с системой CUPS 1.0 или 1.1 для печати в Windows.

Сетевая печать

Система CUPS предоставляет возможность <поиска принтера>, которая позволяет пользователям автоматически видеть и использовать принтеры любого сервера локальной сети. Это означает, что здесь требуется лишь сконфигурировать сервер, и пользователи автоматически увидят принтеры и классы, поддерживаемые им.

К тому же, система CUPS может автоматически объединить несколько идентичных сетевых принтеров в <скрытый класс>. Это позволяет пользователю передать документ на печать классу и напечатать его на первом свободном принтере или сервере. А функции надежности и выравнивания загрузки легко активируются: необходимо просто определить один и тот же принтер на нескольких серверах!

 

Общие сведения о возможностях в системы печати CUPS 1.1

1. Программы передачи

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

CUPS 1.1 также включает в себя программу передачи информации USB принтерам.

2. Поддержка баннерной страницы

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

3. Комплексная (digest) идентификация

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

В системе CUPS 1.1 комплексная идентификация реализуется при использовании специального файла паролей MD5 (вместо файла паролей UNIX). Работа с данным файлом осуществляется с помощью новой команды lppasswd.

4. Служба каталогов

Чтобы облегчить использование системы CUPS в больших локальных (LAN) и глобальных (WAN) сетях, в CUPS 1.1 имеется служба каталогов (<поиск принтеров>"). Она позволяет запрашивать у удаленного сервера информацию о принтере и передавать ее сети, а также ограничить количество обрабатываемой информации о принтерах (например, что <спрятать> серверы, домены или сети, которые вы не хотите видеть).

5. Изменения в структуре каталогов

Система CUPS 1.1 использует структуру каталогов, которая соответствует стандарту иерархии файловых систем (Filesystem Hierarchy Standard - "FHS") 2.0.

6. Документация

Для системы CUPS 1.1 имеется руководство администратора, руководство программиста, руководство по использованию протокола IPP и другая документация.

7. Драйверы

Система CUPS 1.1 содержит драйверы для матричных и струйных принтеров EPSON. Как и в случае с драйверами HP PCL, драйверы EPSON не всегда предоставляют наилучшие выходные данные для каждого принтера, но обеспечивают нормальное качество для ежедневной печати.

8. Фильтры

В системе CUPS 1.1 реализованы фильтры изображений, шрифтов PostScript, формата PDF, а также текстовые фильтры. Фильтры изображений также поддерживают файлы Windows BMP и Alias PIX.

Фильтр шрифтов PostScript работает с принтерами высокого разрешения и поддерживает большинство языковых особенностей шрифтов PostScript третьего уровня (Level 3 PostScript).

Фильтр формата поддерживает автоматическое масштабирование страниц. Он представляет собой более быстрое, компактное и более надежное средство фильтрации в отличие от GNU Ghostscript PDF, используемого в CUPS 1.0.

Текстовый фильтр поддерживает двунаправленный текст и при необходимости может внедрять шрифты.

9. Поддержка протокола IPP

Видимая часть системы CUPS представляет собой реализацию протокола IPP. Система CUPS 1.1 реализует все требуемые протоколом IPP/1.1 операции и атрибуты, а также большинство дополнительных. В настоящее время выполняются дополнительные операции Create-Job и Send-File, что дает возможность лучшей совместимости со службой печати System V (один идентификатор задания на команду lp) и поддержки баннерных страниц.

10. Сохранение задания

Система CUPS 1.1 позволяет сохранять задания. Это означает, что все задания сохраняются даже после перезагрузки (в версии CUPS 1.0 такой возможности не было).

К тому же CUPS 1.1 позволяет сохранять информацию о выполненной работе после завершения процесса печати, что дает возможность составить историю печати (количество напечатанных страниц, время завершения печати и др.), но не сохранять сами файлы.  Свойство можно изменить, чтобы удалять всю информацию после завершения процесса печати или сохранять сами файлы (с целью их повторной печати позже).

11. Поддержка LPD-клиентов

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

12. Принтеры и опции, определяемые пользователем

Система печати CUPS 1.1 дает возможность пользователю задать принтеры и опции, используя новую команду lpoptions. Такие принтеры представляют собой отдельные экземпляры доступных принтеров (например, "printer/instance" или "printer@server/instance"), которые могут иметь свои собственные свойства по умолчанию: размер данных, разрешение и т.д. Команду lpoptions можно также использовать для образования другой очереди принтера по умолчанию.

13. Интерфейс администрирования сети

Система CUPS 1.0 обладала небольшим количеством функций интерфейса управления классами и работой принтеров для веб-браузеров. В системе же CUPS 1.1 реализован новый интерфейс администрирования, который позволяет добавлять, изменять, удалять, конфигурировать и налаживать классы и работу принтеров.

 

Применение службы печати CUPS

Существуют два графических интерфейса, поддерживающих систему CUPS. Проект KUPS предоставляет интерфейс для CUPS на основе KDE ( http://kups.sourceforge.net). Проект XPP (X Printing Panel - панель печати X) предлагает графическую панель печати для CUPS (http://www.phy.uni-bayreuth.de/till/xpp/). Различные фильтры, драйверы, учебные пособия и многое другое можно найти на странице http://www.cups.org/links.php. Программа ESP Print Pro использует систему CUPS, чтобы получить драйверы для тысяч различных принтеров (ее можно найти на странице http://www.easysw.com/printpro).

Общая система печати UNIX CUPS дает возможность использовать современный интерфейс при работе с UNIX-приложениями. Чтобы обеспечить совместимость с уже существующими приложениями, программа обладает интерфейсом командной строки, совместимым с System V и Berkeley. Система CUPS 1.1 обладает огромным набором возможностей, что делает ее наиболее удобной службой печати под UNIX.

 

Использование службы печати CUPS

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

Передача файлов на печать

Система печати CUPS поддерживает команды как System V (lp), так и Berkeley (lpr). Чтобы напечатать файл на принтере, указанном по умолчанию в настройках системы (или же на единственном принтере), необходимо указать:

lp имя_файла ENTER

или:

                lpr имя_файла ENTER

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

Выбор принтера

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

Для получения списка доступных принтеров, используется команда lpstat:

lpstat -p -d ENTER

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

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

lp -d принтер имя_файла ENTER

или опция -P вместе с командой lpr:

lpr -P принтер имя_файла ENTER

Настройка принтера

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

Команды lp и lpr позволяют передать настройки принтера с помощью опции -o:

       альбомная    масштаб       лист 

lp  -o landscape -o scaling=75 -o media=A4 имя_файла.jpg ENTER

lpr -o landscape -o scaling=75 -o media=A4 имя_файла.jpg ENTER

Список доступных свойств зависит от принтера. Стандартные свойства приведены в разделе <Стандартные свойства печати>.

Вывод на печать нескольких копий

Обе команды: lp и lpr - позволяют вывести на печать более одной копии файла:

lp -n колич_копий имя_файла ENTER

lpr -#колич_копий имя_файла ENTER

Копии обычно не упорядочиваются. Чтобы их упорядочить, необходимо задать опцию
-o Collate=True:

lp -n колич_копий -o Collate=True имя_файла ENTER

lpr -#колич_копий -o Collate=True имя_файла ENTER

Проверка статуса принтера из командной строки

Команду lpstat можно использовать, чтобы проверить документы, которые были отправлены на печать:

lpstat ENTER

Принтер-1 johndoe 4427776

Принтер-2 johndoe 15786

Принтер-3 johndoe 372842

Данные располагаются в том порядке, в котором они будут напечатаны. Чтобы увидеть активные принтеры и файлы, используется опция -p:

lpstat -p ENTER

принтер DeskJet в данный момент печатает документ DeskJet-1.

Чтобы получить всю информацию необходимо одновременно задать опции -o и -p:

lpstat -o -p ENTER

Принтер-1 johndoe 4427776

Принтер-2 johndoe 15786

Принтер-3 johndoe 372842

принтер DeskJet в данный момент печатает документ DeskJet-1.

Проверка статуса принтера из сети

Так как система CUPS использует протокол IPP, то она также является полнофункциональным веб-сервером. Чтобы использовать веб-браузер для проверки принтеров системы, необходимо открыть унифицированный указатель информационного ресурса (Uniform Resource Locator - URL): http://localhost:631.

Оттуда можно увидеть статус классов, документов и принтеров, просто нажав кнопку.

Отмена печати документа

Команды cancel и lprm отменяют печать документа:

cancel job-id ENTER

lprm job-id ENTER

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

 

Стандартные свойства печати

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

Основные свойства

Приведенные ниже свойства используются при печати файлов всех типов.

1) Выбор размера листа, типа и источника

Опция -o media=xyz задает размер листа, тип и/или источник:

      лист

lp -o media=Letter имя_файла ENTER

lp -o media=Letter,MultiPurpose имя_файла ENTER

lpr -o media=Letter,Transparency имя_файла ENTER

lpr -o media=Letter,MultiPurpose,Transparency имя_файла ENTER

В зависимости от принтера можно использовать разные размеры листа, типы и источники, но большинство принтеров поддерживают следующие (обычный случай):

  • Letter - письмо США (8.5x11 дюймов или 216x279 мм)
  • Legal - стандарт США (8.5x14 дюймов или 216x356 мм)
  • A4 - A4 ИСО (8.27x11.69 дюймов или 210x297 мм)
  • COM10 - конверт США #10 (9.5x4.125 дюймов или 241x105мм)
  • DL - конверт DL ИСО (8.66x4.33 дюймов или 220x110 мм)
  • Transparency - прозрачный тип данных или источник
  • Upper - верхний загрузочный лоток для бумаги
  • Lower - нижний загрузочный лоток для бумаги
  • MultiPurpose - универсальный загрузочный лоток для бумаги
  • LargeCapacity - загрузочный лоток для большого количества бумаги

Точные параметры принтера указаны в его PPD файле: опции PageSize, InputSlot и MediaType.

2) Настройка ориентации

Опция -o landscape используется для поворота страницы на 90 градусов (для печати альбомной страницы):

lp -o landscape имя_файла ENTER

lpr -o landscape имя_файла ENTER

3) Двусторонняя печать

Опции -o sides=two-sided-short-edge и -o sides=two-sided-long-edge используются для установки режима двусторонней печати (если принтер ее поддерживает). Опция -o sides=two-sided-short-edge подходит для печати альбомных страниц, а опция -o sides=two-sided-long-edge - для книжных:

lp -o sides=two-sided-short-edge имя_файла ENTER

lp -o sides=two-sided-long-edge имя_файла ENTER

lpr -o sides=two-sided-long-edge имя_файла ENTER

По умолчанию печать производится на одной стороне страницы:

lp -o sides=one-sided имя_файла ENTER

lpr -o sides=one-sided имя_файла ENTER

Свойства для баннеров

Приведенные ниже свойства используются при печати файлов всех типов.

1) Выбор баннерной страницы (страниц)

Опция -o jobsheets=start,end задает баннерную страницу (-ы), которую необходимо использовать для печати:

lp -o job-sheets=none имя_файла ENTER

lp -o job-sheets=standard имя_файла ENTER

lpr -o job-sheets=classified,classified имя_файла