- •3.1 Введение
- •3.2 Базовые концепции unix
- •3.2.1 Регистрация в системе (открытие счета)
- •3.2.2 Вход в систему
- •3.2.3 Виртуальные консоли
- •3.2.4 Shells и команды
- •3.2.5 Выход из системы
- •3.2.6 Смена пароля
- •3.2.7 Файлы и каталоги
- •3.2.8 Дерево каталогов
- •3.2.9 Текущий рабочий каталог
- •3.2.10 Обращение к домашнему каталогу
- •3.3 Первые шаги в unix
- •3.3.1 Первая прогулка
- •3.3.2 Разглядывание содержимого каталогов
- •3.3.3 Создание новых каталогов
- •3.3.4 Копирование файлов
- •3.3.5 Перемещение файлов
- •3.3.6 Удаление файлов и каталогов
- •3.3.7 Рассматривание файлов
- •3.3.8 Получение оперативной помощи
- •3.4 Краткая информация о базовых командах
- •3.5 Исследование файловой системы
- •3.6 Типы оболочек
- •3.7 "Уайлдкард" - "дикая карта"
- •3.8 Трубопроводы unix
- •3.8.1 Стандартный вход и стандартный выход
- •3.8.2 Перенаправление входа и выхода
- •3.8.3 Использование конвейера
- •3.8.4 Перенаправление с добавлением
- •3.9 Права доступа к файлам
- •3.9.1 Концепция прав доступа
- •3.9.2 Интерпретация прав доступа
- •3.9.3 Зависимости
- •3.9.4 Изменение прав доступа
- •3.10 Управление связями файлов
- •3.10.1 Жесткие связи
- •3.10.2 Символические связи
- •3.11 Управление работами
- •3.11.1 Работы и процессы
- •3.11.2 Выполнение работ на переднем плане и в фоне
- •3.11.3 Работа в фоне и ликвидация работ
- •3.11.4 Остановка и возобновление работы
- •3.12 Использование редактора VI
- •3.12.1 Концепции
- •3.12.2 Начала VI
- •3.12.3 Вставка текста
- •3.12.4 Удаление текста
- •3.12.5 Изменение текста
- •3.12.6 Команды перемещения
- •3.12.7 Сохранение файлов и выход из VI
- •3.12.8 Редактирование еще одного файла
- •3.12.9 Включение других файлов
- •3.12.10 Выполнение команд Shell
- •3.12.11 Получение помощи
- •3.13 Установка среды
- •3.13.1 Сценарии shell
- •3.13.2 Перемещение shell и среда
- •3.13.2.1 Переменная среды path
- •3.13.3 Shell-Сценарии инициализации
3.10.2 Символические связи
Символические связи, это другой тип связей, отличающийся от жестких связей. Символические связи позволяют давать новые имена файлам, но при этом не ссылаются на индекс файла.
Команда ln -s создаст символическую ссылку на указанный файл. Например, если мы воспользуемся командой
# ln -s foo bar
мы создадим символьную ссылку bar, указывающую на файл foo. Если теперь используем команду ls -i, то увидим, что два файла имеют различные индексы.
# ls -i foo bar
22195 bar 22192 foo
#
Однако, используя ls -l, мы видим, что файл bar имеет символический указатель на foo.
# ls -l foo bar
lrwxrwxrwx 1 root root 3 Aug 5 16:51 bar -> foo
-rw-r--r-- 1 root root 12 Aug 5 16:50 foo
#
При символической ссылке не используются биты прав доступа (они всегда отображаются, как rwxrwxrwx). Вместо этого, права доступа к файлу, полученному символической ссылкой, определяются правами доступа к файлу, на который он ссылается (в нашем примере определяется правами файла foo).
Функционально, жесткие ссылки и символические ссылки похожи, но есть некоторые различия. Например, вы можете создать символическую ссылку на файл, который не существует; так нельзя сделать применительно к жесткой ссылке. Символические ссылки обрабатываются ядром иным образом, чем жесткие. Это скорее техническое отличие, но иногда важное. Символические ссылки полезны, поскольку они позволяют идентифицировать файл, на который они указывают; для жестких ссылок нет простого способа определить, какие файлы привязаны к одному и тому же индексу.
Ссылки используются во многих местах системы Linux. Символические ссылки особенно важны для образов разделяемых библиотек в /lib. Смотри дополнительную информацию в Разделе 4.7.2.
3.11 Управление работами
3.11.1 Работы и процессы
Управление работами (job control) это возможность, которую предоставляют многие оболочки, включая (Bash и Tcsh). Управление работами (прим. переводчика: job - работа в добрые старые времена страшноватых IBM/360 переводилось как "задание", но лучше это не тащить в сегодня) позволяет управлять множеством команд или работ одновременно. Прежде, чем вы закопаетесь значительно глубже, следует поговорить о процессах.
Каждый раз, когда вы выполняете программу, вы начинаете то, что известно, как процесс. Процесс - это название для выполняемой программы. Команда ps выдает перечень имеющих место в данный момент процессов. Вот пример:
/home/larry# ps
PID TT STAT TIME COMMAND
24 3 S 0:03 (bash)
161 3 R 0:00 ps
/home/larry#
PID (Process IDentificator), перечисленные в первой колонке, это неповторяющиеся числа приписанные всем идущим процессам.
Последний столбец (COMMAND) дает имя выполняемой команды. Здесь мы видим только процессы, которые инициировал Larry. (В системе выполняется и много других процессов. Команда ``ps -aux'' может выдать перечень всех происходящих в данный момент процессов).
В выведенном перечне указаны bash (это оболочка, используемая Larry) и сама команда ps. Как вы видите, bash выполняется параллельно с командой ps. bash выполнит ps, когда Larry введет команду. После окончания ps (после того, как выдана таблица процессов), управление возвращается к процессу bash, который выдает на экран подсказок готовности к приему новых команд.
Выполняемый процесс известен shell как работа. Термины процесс и работа взаимозаменяемы. Однако процесс обычно воспринимается, как "работа", когда речь идет об управлении работами (job control)- свойстве shell, позволяющем уделять внимание нескольким независимым работам.
В большинстве случаев пользователи выполняют в каждый момент времени одну работу, ту которая соответствует последней переданной shell команде. Однако, используя управление работами, вы можете одновременно выполнять несколько работ, по необходимости переключаясь с одной на другую. Какая от этого польза? Давайте предположим, что вы редактируете текстовый файл и неожиданно хотите прерваться и сделать что-то другое. С помощью управления работами вы можете отложить редактирование и, вернувшись к подсказке shell, начать какую-то другую работу. После этого вы можете вернуться к редактированию, именно к тому месту, где вы прервали редактирование. Это всего один пример. Управление работами очень полезно на практике.