С файлами и папками в Linux
Добавление новых репозитариев
· Несколько репозитариев с рекомендуемым СПО уже занесены в файл /etc/apt/sources.list, хотя большая часть адресов закомментирована:
Первая строка — это репозитарий, находящийся на установочном диске, а остальные находятся в сети Интернет. Значок ## означает комментарий.
Как правило, если в сети Интернет даётся ссылка на новый репозитарий, то достаточно её просто скопировать в этот файл и обновить список пакетов.
Примечание: для открытия файла sources.list в режиме администратора следует выполнить команду в консольном окне: sudo gedit /boot/grub/sources.list
либо зайти в каталог /etc/apt/ и в контекстном меню этого файла выбрать: Действия → Edit as Root.
· Если репозитарий находится на CD или DVD-диске (не на установочном), то для регистрации его в системе следует выполнить команду в консольном окне: sudo apt-cdrom add
Коротко о главном
- Пакетом называется дистрибутив программы, либо набор дополнительных библиотек. В настоящий момент существуют два вида пакетов — RPM и DEB. Первый предназначен для систем Linux типа Red Hat и нас не интересует, а второй — для систем Ubuntu и Kubuntu.
- Пакеты содержатся в специальных хранилищах, которые называются репозитарии.
- Репозитарии могут находиться на локальном компьютере, CD или DVD-диске, либо в сети Интернет. Список предпочтительных репозитариев пользователь может указать в обычном текстовом файле sources.list, находящимся в папке /etc/apt/ (сохранять этот файл можно только в режиме администратора).
- Установить пакеты, а также обновить список репозитариев можно как из командной строки, так и из некоторых программ-инсталляторов.
- Кроме устанавливаемой программы, пакет содержит список дополнительных пакетов. Эти пакеты должны быть обязательно установлены перед установкой нужного пакета (это свойство называется зависимость пакетов). Если в устанавливаемом пакете находятся не все дополнительные пакеты, то программа-инсталлятор будет искать их в загруженном с репозитариев списке. Если они в списке не найдены, то программу установить нельзя. Решение такой проблемы — это поиск репозитария с нужным пакетом.
- Программы могут конфликтовать друг с другом, и придётся выбирать какую-то одну.
- Установленные программы находятся в каталоге /usr/share. Документация на программы — в каталоге /usr/share/doc.
- Программы-инсталляторы, такие как Adept и Synaptic представляют удобную оболочку по установке нужных пакетов.
Тема: Основные команды для работы
Командой называется наименование инструмента или приложения вместе с используемыми опциями и аргументами. Поскольку для выполнения задачи часто достаточно лишь указания названия инструмента самого по себе, инструменты часто также называют командами.
Большие и малые буквы в командах различаются; названия инструментов и приложений обычно записываются строчными буквами.
Команды управления файлами и каталогами
Команда pwd (print working directory - печать pабочего каталога) позволяет узнать имя текущего каталога:
$ pwd
/
Т.е. в настоящее вpемя вы находитесь в коpневом каталоге.
Если вы в пpоцессе путешествия по файловой системе вы ``потеpялись'' и не знаете, где находитесь, пpосто набеpите эту команду, котоpая выведет на экpан полное имя текущего каталога, начиная от коpневого.
Если вместо имени текущего каталога на экpан будет выдано диагностическое сообщение типа: ``Cannot open..'' (``Невозможно открыть..'') и ``Read error in..'' (``Ошибка считывания в..'') то значит пpоизошло наpушение файловой системы.
Команда cdиспользуется для смены текущего каталога, т.е. для пеpехода в дpугой каталог и является встpоенной командой интеpпpетатоpа ``shell'' (аналог команды CD для DOS-систем). В качестве аpгумента этой команды укажите имя каталога, в котоpый вы хотите пеpейти.
Напpимеp:
$ cd /stand
означает пеpейти в каталог ``/stand'', т.е. сделать его текущим. Если вы хотите пеpейти в подкаталог, то ``/'' не указывается.
Допустим вы находитесь в каталоге /usr и вам надо пеpейти в каталог local, котоpый является подкаталогом этого каталога. В этом случае вы можете выполнить следующие действия:
$ pwd
/usr
$ cd local
$ pwd
/usr/local
Таким обpазом каталог /usr/local стал текущим.
Если ввести команду cd без аpгументов, то вы веpнетесь в свой личный (начальный) каталог. Пpи этом используется системная пеpеменная $HOME.
В пpоцессе освоения системы вам необходимо будет создать свою собственную стpуктуpу каталогов. После установки системы, каталогов в ней довольно немного и в них пока еще тpудно затеpяться начинающему пользователю. В пpоцессе pасшиpения файловой системы вам пpидется постоянно создавать новые и уничтожать стаpые каталоги, поэтому pассмотpим, как это все можно сделать.
Создать каталог довольно легко. Для этого существует команда mkdir (аналог ее есть и в DOS системах). В качестве паpаметpа необхо- димо указать имя создаваемого каталога:
mkdir имя_каталога
Стандартные подкаталоги (.) для самого каталога и (..) для его родительского каталога создаются автоматически.
Команда mkdir может быть использована и для создания нижележащих подкаталогов непосpедственно из текущего каталога с указанием полного пути к ним. В этом случае все указанные в пути каталоги должны существовать и быть доступны.
При попытке создать уже существующий каталог будет выдано соответствующее предупреждение:
$ mkdir etc
$ mkdir etc
mkdir: etc: File exists
После создания pазнообpазнейших каталогов, чеpез некотоpое вpемя у вас возникнет естественное желание удалить некотоpые из них. В этом вам может помочь команда rmdir. Ее фоpмат также пpост, как и фоpмат пpеды- дущей команды mkdir:
rmdir имя_каталога ...
Команда rmdir удаляет каталог, имя котоpого указано в качестве параметра. Удаляемый каталог должен быть пустым, то есть пеpед его уничтожением вы должны удалить все находящиеся в нем файлы. Пpактически это пpиходится делать очень pедко, так как с двумя этими пpоблемами успешно спpавляется команда rm, котоpая будет pассмотpена позже.
Указанные имена каталогов обрабатываются по поpядку. Пpи одновpеменном удалении каталога и его подкаталога, подкаталог должен быть удален pаньше.
Удалить каталог и подкаталоги можно также с помощью команды rm.
Команда rm имеет следующий фоpмат:
rm [-f | -i ] [-dRr ] имя_каталога
Наиболее часто используются следующие опции:
-d Удалить каталог.
-r Удалить все файлы и подкаталоги данного каталога, а после этого удалить и сам каталог.
Если вы попытаетесь удалить элементы каталога . или .. , то будет выдано сообщение об ошибке:
$ rm . ..
rm: ``.'' and ``..'' may not be removed
После беглого изучения стpуктуpы файловой системы, самое время посмотреть, какие каталоги и файлы имеются в вашем pаспоpяжении. Сделать это можно с помощью команды ls. Она выдает различную информацию о файлах и каталогах (аналог команды DIR для DOS-систем).
Рассмотрим еще одну команду, котоpая может быть полезна пpи pаботе с файлами. Это команда cat (аналог команды TYPE для DOS-систем).
Команда cat имеет следующий фоpмат:
cat [-benstuv] [-] [file ...]
Она по очеpеди читает указанные, как аpгументы файлы и выводит их содеpжимое на стандаpтное устpойство вывода.
find -- команда со сложной структурой параметров, позволяющая найти и вывести в выходной поток названия файлов, удовлетворяющих сколь угодно сложным условиям.
Тема: Администрирование и конфигурирование Linux
Основные задачи системного администрирования. Процессы и их идентификаторы. Основные конфигурационные файлы.
К обязанностям системного администратора обычно относят следующие задачи:
· подключение и настройка аппаратных устройств;
· установка и обновление программного обеспечения;
· запуск и настройка общесистемных сервисов (конфигурирование системы);
· управление пользователями;
· управление процессами;
· распределение ресурсов;
· обеспечение безопасности.
Начнем с рассмотрения того, как происходит процесс загрузки ОС. Дело в том, что этот этап во многом определяет режим последующей работы системы и ее конфигурацию. Если вы умеете влиять на процесс загрузки, значит, вы уже сможете добиться желаемой конфигурации системы после загрузки.
Но для понимания процедуры начальной загрузки необходимо иметь самое общее представление о том, что такое процесс в системе, поскольку это понятие будет постоянно использоваться в дальнейшем.
В самом первом приближении можно считать, что процесс - это загруженная в оперативную память программа. Но это не совсем точно, правильнее было бы сказать, что "процесс выполняет программу". Дело в том, что в Linux вначале запускается процесс, который загружает в оперативную память программу из указанного ему файла и начинает ее выполнять. Это означает, что каждый процесс должен быть запущен (как говорят - "порожден") каким-то другим процессом. То есть для каждого процесса однозначно определен его "родитель" (или "предок"), для которого данный процесс является "дочерним" (или "потомком"). Если вы хотите увидеть "дерево" запущенных в вашей системе процессов, выполните команду pstree. Вывод этой команды позволяет увидеть, что "отцом" всех процессов в системе (или "корнем дерева процессов") является процесс init, который первым запускается после загрузки ядра.
Каждый процесс в системе имеет уникальный идентификатор - PID, назначаемый процессу при запуске. Процесс с идентификатором 1 выполняет программу init. Именно по этим идентификаторам система различает процессы.
Каждый запущенный процесс в любой момент времени находится в одном из следующих состояний: активен (R), приостановлен (T) или "спит" (S). Текущее состояние процесса называют статусом процесса.
Кроме идентификатора и статуса для каждого процесса в специальных структурах ядра сохраняются следующие данные (приводимый ниже перечень является далеко не полным):
· полная командная строка запуска выполняемой процессом задачи;
· информация об отведенном процессу адресном пространстве;
· ссылка на текущий рабочий каталог и корневой каталог процесса (последний служит для ограничения доступа процесса к файловой структуре);
· таблица открытых процессом файлов;
· так называемое окружение процесса, т. е. перечень заданных для данного процесса переменных с их текущими значениями;
· атрибуты, определяющие права и привилегии процесса,
· таблица обработчиков сигналов;
· указание на родительский процесс;
· пользовательская маска (umask) или маска доступа - указание на то, какие права надо удалить при создании нового файла или каталога из стандартного набора прав, присваиваемых файлу (каталогу).
Поскольку Linux - система многозадачная, одновременно может быть запущено много процессов. Впрочем, слово "одновременно" здесь применено не совсем корректно, поскольку на самом деле в каждый момент времени выполняется только один процесс. (Для точности следует заметить, что в многопроцессорных системах, на которых Linux тоже может работать, одновременно могут выполняться несколько процессов, но мы рассматриваем только однопроцессорные системы).
Планировщик процессов выделяет каждому процессу небольшой квант времени и по истечении этого кванта передает управление следующему процессу. Кванты времени, выделяемые каждому процессу, так малы, что у пользователя создается иллюзия одновременного выполнения многих процессов. А для того, чтобы некоторые, наиболее важные процессы, получали больше процессорного времени, для каждого процесса установлен приоритет.
Пользователи могут "общаться" с процессами путем посылки им сигналов. Процессы тоже общаются друг с другом посредством сигналов. Когда мы нажимаем комбинацию клавиш <Ctrl>+<C>, чтобы завершить выполнение какой-то программы, мы фактически посылаем соответствующему процессу сигнал "Завершить работу". Завершаясь, процесс посылает родительскому процессу сигнал о своем завершении. Но бывают случаи, когда родительский процесс завершается раньше дочернего. Процессы, не имеющие родителя, называются "сиротами". "Сироты" автоматически усыновляются процессом init, который и принимает сигналы об их завершении. Если процесс-родитель по каким-то причинам не может принять сигнал о завершении дочернего процесса, то процесс-потомок превращается в "зомби" и получает статус Z.
Процессы-зомби не занимают процессорного времени (т. е. их выполнение прекращается), но соответствующие им структуры ядра не освобождаются. Уничтожение таких процессов - одна из обязанностей системного администратора. Наконец, процесс может надолго "впасть в сон", прервать который не удается. Статус таких процессов обозначается символом D. Уничтожить их удается только при перезагрузке системы.
Особым видом процессов являются демоны. Вообще-то в них нет ничего особого. Это просто процессы, выполняющиеся в фоновом режиме, без вывода каких-либо данных на терминал. Демоны обычно используются для выполнения сервисных функций, обслуживания запросов от других процессов, причем не обязательно выполняющихся на данном компьютере.
Надо еще упомянуть, что процессы могут запускать ("внутри себя") отдельные нити (thread), или потоки. Нити - это параллельно выполняемые части одной программы, которые в Linux реализованы как процессы, запускаемые со специальным флагом. С точки зрения системы они отличаются от других процессов только тем, что для них не создается отдельное окружение, они выполняются в среде родительского процесса.