- •Unix: учебный курс Алексей Федосеев
- •Несколько слов об этом курсе
- •Методические рекомендации Введение для лектора
- •Порядок изучения материалов
- •Часть I. Лекции Глава 1. Введение в операционную систему unix
- •Основные концепции операционных систем Обзор компьютерных систем
- •Назначение операционной системы
- •Операционная система как виртуальная машина
- •Операционная система как менеджер ресурсов
- •Архитектура операционной системы
- •Монолитная операционная система
- •Микроядерная операционная система
- •Место unix в истории вычислительных систем
- •Что было до операционных систем
- •Операционные системы для мэйнфреймов
- •Появление операционной системы unix
- •Развитие операционных систем в глобальных сетях
- •Операционные системы для персональных компьютеров
- •Операционные системы для встраиваемых систем
- •Такой разный unix
- •Классификация операционных систем по назначению
- •Дополнительные материалы
- •Вопросы
- •Презентация
- •Архитектура unix. Файлы и устройства Особенности архитектуры unix
- •Два кита unix: файлы и процессы
- •Беглый взгляд на архитектуру unix
- •Ядро unix
- •Файловая система unix
- •Особенности файловой системы
- •Виртуальная файловая система
- •Дерево каталогов
- •Устройства и драйверы
- •Дополнительные материалы
- •Вопросы
- •Презентация
- •Архитектура unix. Процессы
- •Управление памятью
- •Управление процессами
- •Контекст процесса
- •Планирование процессов
- •Создание новых процессов
- •Процессы и потоки
- •Межпроцессное взаимодействие
- •Разделяемая память
- •Переменные окружения
- •Сигналы
- •Дополнительные материалы
- •Вопросы
- •Презентация
- •Глава 2. Использование unix
- •Терминал и командная строка
- •Терминал
- •Управляющие символы
- •Одновременный доступ к системе
- •Командная строка
- •Командная оболочка
- •Приглашение
- •Команды
- •Параметры
- •Шаблоны
- •Перенаправление ввода и вывода
- •Программное окружение
- •Стандартные переменные окружения
- •Служебные символы
- •Процесс выполнения команды
- •Возвращаемое значение
- •Эффективное использование командной строки
- •Редактирование командной строки
- •История команд
- •Автодополнение
- •Средства объединения команд
- •Справочная подсистема
- •Страницы руководства
- •Поиск по руководствам
- •Программа info
- •Документация, поставляемая с программой
- •Интегрированные системы документации
- •Дополнительные материалы
- •Вопросы
- •Презентация
- •Введение в безопасность unix
- •Основы информационной безопасности
- •Политика безопасности
- •Управление доступом
- •Аутентификация и авторизация
- •Концепции безопасности unix
- •Пользователи и группы
- •Права доступа
- •Разделяемые каталоги
- •Подмена идентификатора процесса
- •Ограничения базовой модели доступа и её расширения
- •Суперпользователь
- •Аутентификация пользователей
- •Управление пользователями и правами доступа База данных пользователей системы
- •Изменение базы данных пользователей
- •Изменение прав доступа
- •Ограничения сеанса пользователя
- •Дополнительные материалы
- •Вопросы
- •Презентация
- •Сеть в unix
- •Введение в сети
- •Семиуровневая модель osi
- •Физический уровень
- •Канальный уровень
- •Сетевой уровень
- •Протоколы Internet: tcp/ip
- •Сетевой интерфейс в unix
- •Конфигурация ip-сетей Сетевой адрес
- •Маршрутизация
- •Служебный протокол icmp
- •Информация о соединениях
- •Настройка сети при загрузке системы
- •Службы Internet Служба доменных имён
- •Удалённый терминал
- •Прокси-серверы
- •Межсетевой экран
- •Концепции iptables
- •Дополнительные материалы
- •Вопросы
- •Презентация
- •Глава 3. Базовое администрирование unix
- •Управление службами
- •Загрузка операционной системы Этапы загрузки системы
- •Процесс init
- •Конфигурационный файл init
- •Различия в загрузке unix-подобных систем
- •Системы, наследующие System V
- •Системы, наследующие bsd
- •Системы со смешанной схемой загрузки
- •Системные службы
- •Запуск и остановка служб
- •Автоматическая загрузка служб
- •Какие бывают службы
- •Служба планирования заданий
- •Конфигурация планировщика заданий
- •Запуск программ
- •Сетевые службы
- •Мониторинг и журналирование
- •Служба системного журнала
- •Основные системные журналы
- •Ротация системных журналов
- •Мониторинг пользователей
- •Дополнительные материалы
- •Вопросы
- •Презентация
- •Управление программным обеспечением
- •Управление программным обеспечением: роли и задачи Основные роли в создании и использовании по
- •Задачи системы управления программным обеспечением
- •Формы распространения программного обеспечения в двоичной форме или в исходных текстах?
- •Сборочные процедуры как средство управления по
- •Дистрибутивы
- •Дистрибутивы, основанные на сборке программ из исходных текстов
- •Дистрибутивы, основанные на двоичных пакетах
- •Управление пакетами
- •Задачи менеджера пакетов
- •Менеджер пакетов rpm
- •Работа с репозитариями пакетов: apt
- •Источники программ (репозитории)
- •Дополнительные материалы
- •Вопросы
- •Презентация
- •Часть II. Практические занятия
- •Глава 4. Практические занятия по командам unix
- •Методические указания по основным командам unix
- •Команды по работе с файловой системой
- •Команды по работе с текстом
- •Команды, использующие регулярные выражения
- •Практическое занятие. Работа с файлами в unix
- •Сценарий: Знакомство с каталогами unix
- •Сценарий: Изучение типов файлов в unix
- •Сценарий: Поиск системных журналов
- •Сценарий: Архивирование и деархивирование файлов и каталогов
- •Сценарий: Cоздание новых текстовых файлов
- •Сценарий: Разрезание и склеивание файлов
- •Сценарий: Быстрый анализ текстов
- •Сценарий: Поиск строк по регулярным выражениям
- •Задания для самоподготовки
- •Сценарии практического занятия на тему: Работа с файлами в unix
- •Методические указания по командам управления системой в unix Команды получения сведений о системе
- •Команды по работе с процессами
- •Практическое занятие. Сбор сведений о системе и управление процессами
- •Сценарий: Сбор сведений о системе
- •Сценарий: Управление процессами с помощью сигналов
- •Сценарий: Выполнение задач в фоновом режиме
- •Сценарий: Запуск демонов
- •Сценарий: Изменение приоритетов выполняющихся программ
- •Задания для самоподготовки
- •Сценарии практического занятия на тему: Сбор сведений о системе и управление процессами
- •Глава 5. Практическое занятие по безопасности unix
- •Методические указания по командам управления безопасностью в unix Команды по управлению правами
- •Команды по управлению пользователями
- •Практическое занятие. Управление доступом. Управление пользователями Сценарий: Вход в систему и завершение сеанса
- •Сценарий: Изучение базовых прав доступа
- •Сценарий: Переход в режим суперпользователя
- •Сценарий: Изучение базы данных пользователей
- •Сценарий: Добавление и удаление пользователей
- •Задания для самоподготовки
- •Сценарии практического занятия на тему: Управление доступом. Управление пользователями
- •Глава 6. Практические занятия по сетям в unix
- •Методические указания по командам управления сетью в unix Команды по конфигурированию сети
- •Команды по диагностике сети
- •Сценарий: Настройка таблицы маршрутизации
- •Сценарий: Изучение службы доменных имён
- •Сценарий: Простая диагностика работы сети
- •Сценарий: Работа по удалённому терминалу
- •Задания для самоподготовки
- •Сценарии практического занятия на тему: Управление сетью
- •Практическое занятие. Расширенная диагностика и настройка сети
- •Сценарий: Сканирование локальной сети
- •Сценарий: Сканирование удалённых хостов
- •Сценарий: Настройка сетевого экрана
- •Задания для самоподготовки
- •Сценарии практического занятия на тему: Расширенная диагностика и настройка сети
- •Глава 7. Обзор прикладных программ
- •Программы сетевого обмена sendmail: программа отправления почты
- •Параметры команды
- •Wget: консольный загрузчик файлов
- •Параметры команды
- •Настройка
- •Глава 8. Практические занятия по базовому администрированию unix
- •Методические указания по командам управления службами и журналами Текстовые редакторы
- •Рабочий экран
- •Управляющие клавиши
- •Встроенные команды
- •Настройка
- •Рабочий экран
- •Управляющие клавиши
- •Встроенные команды
- •Настройка
- •Режимы работы
- •Команды по управлению службами
- •Команды по мониторингу пользователей
- •Практическое занятие. Управление службами
- •Сценарий: Загрузка системы
- •Команды по работе с репозитарием пакетов
- •Установка или обновление пакета
- •Удаление установленного пакета
- •Обновление всех установленных пакетов
- •Поиск пакетов
- •Приложение a. Список вопросов
Команды по работе с текстом
В операционной системе UNIX большинство информации хранится в текстовом виде. Поэтому команды по обработке текстовой информации играют очень важную роль в этой операционной системе.
echo
Познакомимся еще с одной командой, аналог котоpой имеется в DOS-си- темах. Это команда echo (эхо).
Она имеет фоpмат:
echo [-n] [arg ...]
Команда echo выводит на устройство стандартного вывода заданные ей аргументы, разделяя их пробелами и завершая их символом новой строки (\n).
Эта команда удобна для формирования диагностических сообщений в командных файлах и для передачи известных данных в программном канале.
С помощью следующей команды можно довольно пpосто создать пустой файл: echo > имя_файла.
Возможен параметр -n — не выводить завеpшaющий символ перевода строки.
Интеpпpетатоp команд имеет встроенную команду echo, которая имеет синтаксические различия с внешней командой echo. Следует знать, что пользователям, работающим с оболочкой, будет доступна встроенная команда echo, если они не укажут /bin/echo.
Рассмотрим примеры использования этой команды:
Вывод сообщения «Hello, world» на экpан:
[user@localhost ~]$ echo "Hello, world."
Hello, world.
[user@localhost ~]$
Вывод сообщения без завеpшающего символа новой стpоки:
[user@localhost ~]$ echo -n "Hello, world."
Hello, world.[user@localhost test]$
Вывод сообщения в файл file1:
[user@localhost ~]$ echo "Hello, world." > file1
Добавление сообщения к содеpжимому файла file1:
[user@localhost ~]$ echo "Hello, world." >> file1
Вывод имен файлов текущего каталога в алфавитном поpядке:
[user@localhost ~]$ echo *
Вывод списка файлов с именами, соответствующих шаблону. Вывести имена файлов с pасшиpением .txt:
[user@localhost ~]$ echo *.txt
cat
Рассмотpим еще одну команду, котоpая может быть полезна пpи pаботе с файлами. Это команда cat (аналог команды TYPE для DOS-систем).
Команда cat имеет следующий фоpмат:
cat [-benstuv] [-] [file1 [file2 ...]]
Она по очеpеди читает указанные, как аpгументы файлы и выводит их содеpжимое на стандаpтное устpойство вывода.
Поименованный файл или файлы выводятся последовательно один за дpу- гим без пpомежутков. Если файл достаточно длинный, то можно пpиостано- вить вывод с помощью комбинации клавиш Ctrl-S. Для пpодолжения вывода нажмите любую клавишу. Окончание ввода производится комбинацией Ctrl-D.
Операнды обрабатываются в порядке их pазмещения в командной строке. Если не указан ни один файл или указана опция (-), команда читает данные со стандаpтного устpойства ввода.
Вы можете использовать следующие опции:
-n
Нумеpовать стpоки начиная с 1.
-b
Подразумевает опцию -n, но не нумеpует пустые стpоки.
-e
Подразумевает опцию -v и отображает знак доллара ($) в конце каждой строки (визуализация символа пеpевода стpоки).
-s
Пpи наличии идущих подpяд пустых стpок выводить только одну.
-t
Подразумевает опцию -v. Выводит cимволы табуляции как ^I.
-u
Вывод не буферизуется, то есть символы из входного файла записываются в стандаpтный вывод без задеpжки, как только они были пpочитаны. По умолчанию вывод буфеpизуется, то есть символы могут накапливаться в пpомежуточном буфеpе.
-v
Отображение непечатных символов. Упpавляющие символы выводятся в виде ^X (CRTL+X), символ DEL (восьмеричное 0177) как ^?. Символы не входящие в стандаpтный ASCII-набоp (напpимеp, символы киppилицы с набоpом стаpших pазpядов) выводятся как «M-x», где x — опpеделяемый младшими семи битами символ.
Рассмотрим примеры использования команды:
Файл file выводится на устройство стандартного вывода:
[user@localhost ~]$ cat file
Сцепление (слияние) файлов file1 и file2, после чего они помещаются в файл file3:
[user@localhost ~]$ cat file1 file2 > file3
Пpисоединение файла file1 к концу файла file2:
[user@localhost ~]$ cat file1 >> file2
Вывод содеpжимого файла с нумеpацией стpок, но без нумеpации пустых стpок:
[user@localhost ~]$ cat -b file1
1 Number 1
2 Number 2
3 Number 3
4 Number 4
5 Number 5
Нумеpация всех стpок:
[user@localhost ~]$ cat -n file1
1 Number 1
2 Number 2
3 Number 3
4 Number 4
5
6
7 Number 5
less
Команда less используется для просмотра файлов, размер которых превышает размер экрана. Пользователю предоставляется интерактивынй интерфейс, в котором текст можно пролистывать, производить по нему поиск и т.п..
Имя просматриваемого файла необходимо указать в качестве аргумента программы:
[user@localhost ~]$ less README.txt
Управлять программой less просто: страницы перелистываются пробелом, а когда читать надоест, надо нажать q (Quit). Перелистывать страницы можно и клавишами Page Up/Page Down, для сдвига на одну строку вперед можно применять Enter или стрелку вниз, а на одну строку назад — стрелку вверх. Переход на начало и конец текста выполняется по командам g и G соответственно (Go). Полный список того, что можно делать с текстом в less, выводится по команде h (help). Для поиска и подстветки интересующего понятия можно воспользоваться командой /, после которой необходимо ввести интересующий Вас термин — по нажатию клавиши Enter, курсор перейдёт к первому упоминанию термина, который будет выделен серым цветом. Последующие нажатия / и Enter приведут к продолжению поиска слова по документу.
Программа less используется в качестве основы команды man — при просмотре страниц руководств.
head
Команда выводит на экран первые несколько строк файла. По умолчанию выводится первые 10 строк. Имя выводимого файла указывается в качестве аргумента программы, и если оно не задано, производится чтение информации со стандартного входа.
С помощью параметра -n можно задать число строк от начала файлы, которые будут выведены на экран. Например:
[user@localhost ~]$ head -n 4 /etc/inittab
# /etc/inittab: init(8) configuration.
# The default runlevel.
id:5:initdefault:
tail
Команда выводит на экран последние несколько строк файла. По умолчанию выводятся последние 10 строк. Имя выводимого файла указывается в качестве аргумента программы, и если оно не задано, производится чтение информации со стандартного входа.
С помощью параметра -n можно задать число строк от конца файла, которые будут выведены на экран. Например:
[user@localhost ~]$ tail -n 5 /var/log/dmesg
loop: loaded (max 8 devices)
squashfs: version 3.1 (2006/08/19) Phillip Lougher
Registering unionfs 1.4
unionfs: debugging is not enabled
device-mapper: ioctl: 4.7.0-ioctl (2006-06-24) initialised: dm-devel@redhat.com
Таким способом удобно просматривать последние записи системных журналов.
Другим важным параметром команды является -f: команда ожидает изменения в конце фала и отображает их на экране. Часто это используется при просмотре постоянно увеличивающихся файлов. Для завершения команды нажмите Ctrl-C.
cut
Команда позволяет выводить указанные столбцы или записи из одного или нескольких файлов. Столбцом называется именно столбец — символы с одной и той же позицией в строке, записи же разделяюся символами табуляции. И столбцы и записи задаются указанием их порядкового номера в строке.
Вы можете использовать следующие опции:
-cсписок
вывод столбцов, указанных агрументом список;
-fсписок
вывод полей, указанных агрументом список;
-dсимвол
устанавливает заданный символ в качестве разделителя полей при использовании параметра -f. Если в качестве разделителя используется небуквенный символ (например, пробел), он должен быть заключён в кавычки.
Примеры работы программы:
Выделение первых семи столбцов файла:
[user@localhost ~]$ cat phones.txt
1234567 Борис Петрович
5557845 Анна Иоановна
...
[user@localhost ~]$ cut -c1-7 phones.txt
1234567
5557845
...
Получение списка групп пользователей, зарегистрированных в системе:
[user@localhost ~]$ cut -f1 -d: /etc/group
root
bin
daemon
sys
adm
...
paste
Команда paste объединяет два текстовых файла в один. В получившемся файле исходные строки располагаются в соседних столбцах, разделённые символом табуляции (или любым другим символом, указанным через параметр -d).
Часто применяется совместно с программой cut.
sort
Команда sort сортирует строки, входящие во все исходные файлы, и выдает результат на стандартный вывод. Если имена файлов не указаны, или в качестве файла указан «-», исходная информация поступает со стандартного ввода. Команда имеет формат:
sort [-c] [-r] [файл ...]
При упорядочении используется один или несколько ключей сортировки, выделяемых из каждой вводимой строки. По умолчанию ключ сортировки один — вся строка, а порядок является лексикографическим, соответствующим принятой кодировке символов.
Вот основные опции команды:
-c
Вместо сортировки файла проверяет, отсортирован ли он. Если файл не отсортирован, команда возвращает 1 и выводит соответствующее сообщение.
-r
Заменить результат сравнения на противоположный.
Рассмотрим примеры использования команды:
Отсортировать файл с фамилиями:
[user@localhost ~]$ cat f.txt
Petrov
Ivanov
Sidorov
Abramov
[user@localhost ~]$ sort f.txt
Abramov
Ivanov
Petrov
Sidorov
Отсортировать список файлов в обратном порядке:
[user@localhost ~]$ ls / | sort -r
var
usr
tmp
sys
srv
sbin
root
...
uniq
Команда uniq построчно анализирует файл и в случае, если он содержит в себе повторяющиеся строки, выбрасывает дубликаты. Команда имеет следующий формат:
uniq [-c] [исходный_файл]
Если имя исходного файла не указано, команда читает данные со стандартного ввода.
В качестве параметра может быть указано -c, тогда рядом с каждой строкой будет выведено число повторений этой строки.
Рассмотрим примеры использования команды:
Получим имена всех пользователей, работающих в системе в настоящий момент:
[user@localhost ~]$ who | cut -f1 -d' '
root
root
ivan
maria
[user@localhost ~]$ who | cut -f1 -d' ' | uniq
root
ivan
maria
Однако такой результат будет не всегда:
[user@localhost ~]$ who | cut -f1 -d' '
root
ivan
root
maria
[user@localhost ~]$ who | cut -f1 -d' ' | uniq
root
ivan
root
maria
Это происходит потому, что команда uniq сравнивает строки последовательно. Для того, чтобы избежать дублирования, результат можно сперва сортировать:
[user@localhost ~]$ who | cut -f1 -d' ' | sort | uniq
ivan
maria
root
iconv
Команда iconv не является оригинальной командой UNIX, она появилась в системах, разработанных в рамках проекта GNU. Однако большинство современных версий UNIX содержат эту команду.
Команда предназначена для перекодирования текстовых файлов из одной кодировки в другую и имеет следующий формат:
iconv [-l] -f исходная_кодировка -t конечная_кодировка [исходный_файл]
Если имя исходного файла не указано, команда читает данные со стандартного ввода.
Имя кодировки — исходной или конечной должно соответствовать кодировке в файле, список доступных кодировок можно получить, если запустить команду iconv с параметром -l.
wc
Эта команда предназначена для подсчёта количества строк, символов и слов в указанных файлах. Команда имеет слудующий формат:
wc [-clmw] file ...
Можно использовать следующие опции:
-c
Вывод только количества байт.
-l
Вывод только количества строк.
-m
Вывод только количества символов. Отличается от числа байт при многобайтной кодировке.
-w
Вывод только количества слов.
Рассмотрим примеры использования команды:
Подсчёт числа слов в документе:
[user@localhost test]$ wc -w lectures.txt
568 lectures.txt
Число файлов в каталоге:
[user@localhost test]$ ls / | wc -l
15
Полная статистика по группе xml-файлов (число строк, число слов, число байт):
[user@localhost test]$ cat *.xml | wc
3978 16138 253680
dd
dd — команда блочного копирования файлов. Она имеет следующий формат:
dd if=исходный_файл of=конечный_файл bs=размер_блока
count=число_блоков skip=число_блолов seek=число_блоков
Программа используется при копировании частей одного файла в другой, часто применяется при работе с устройствами. Рассмотрим параметры, принимаемые командой:
if=
Задаёт имя файла (или устройства), откуда будут копироваться данные.
of=
Задаёт имя файла (или устройства), куда будут копироваться данные.
bs=
Задаёт размер блока копирования в байтах. Можно применять модификаторы размера: «K» — килобайты, «M» — мегабайты и т.п.
count=
Задаёт число копируемых блоков. Если этот параметр не задан, копируется всеь исходный файл.
skip=
Число блоков в исходном файле, которое будет пропущено до чтения.
seek=
Число блоков в файле назначения, которое будет пропущено до записи.
Рассмотрим примеры использования команды:
Копирование загрузочного сектора жёсткого диска в файл bootsect:
[root@localhost test]# dd if=/dev/hda of=bootsect bs=512 count=1
1+0 входных записей
1+0 выходных записей
512 bytes (512 B) copied, 9e-05 seconds, 5,7 MB/s
Копирование файла размером до двух мегабайт на простой гибкий диск и обратно:
[user@localhost test]$ dd if=arch.tar.bz2 of=/dev/fd0 bs=1
1788990+0 входных записей
1788990+0 выходных записей
[user@localhost test]$ dd if=/dev/fd0 of=arch2.tar.bz2 bs=1 count=1788990
1788990+0 входных записей
1788990+0 выходных записей
