Демон — это фоновый процесс, выполняющий системные задачи. Большое количество функционирующих в системе демонов привело к необходимости создания супердемона — демона, управляющего поведением других демонов. Один из главных супердемонов, обычно, имеет имя inetd или xinetd.
Некоторые важные демоны:
— init. Отвечает за начальную загрузку системы, ее конфигурирование в соответствии с уровнем выполнения. Также отвечает за регистрацию пользователей в системе, удаление процессов-зомби. Команда telinit n заставляет демон перейти на уровень выполнения n.
— xinetd, inetd. Запускают других демонов и позволяют корректно завершать их работу.
— cron, crond. Демоны планирования и запуска команд. Демон запускается один раз при запуске системы и переходит в режим ожидания. Раз в минуту перечитывает файлы с расписанием задач (crontab-файлы) и выполняет назначенные на данную минуту. Файлы расписаний редактируются вручную и являются мощным средством администрирования.
— atd. Однократно выполняет задания, запланированные командой at. Простой формат команды
at[-f файл] ЧЧ:ММ
Файл — это исполняемый файл или сценарий. Для просмотра очереди заданий используется команда atq.
— sshd. Демон удаленного регистрирования и выполнения команд. Все данные передаются в зашифрованном виде.
Применительно к Linux термин файловая система может употребляться в различных смыслах:
- как способ описания структуры физического раздела диска;
- как часть ядра, управляющая организацией файлов, предоставляющая общий интерфейс доступа и выполнения операций над ними (хранение, идентификация, поиск и др);
- как логическая структура каталогов и файлов, организованная по специальным правилам.
С точки зрения использования дискового пространства файловые системы делятся на две группы:
- виртуальные, в которых файлы имеют нулевой размер, их содержимое формируется «на лету»)
- диск-ориентированные (disk-based file system), файлы в которых занимают физическое пространство на диске.
Виртуальные файловые системы позволяют экспортировать данные из пространства ядра в пространство пользователя. Данные содержатся в каталогах, обычно монтируемых к корневому каталогу. Файлы в них являются виртуальными, т.е. имеют нулевую длину, но при обращении к файлу система «на лету» формирует его содержимое. Типичными виртуальными файловыми системами являются procfs и sysfs.
procfs — виртуальная файловая система, позволяющая получить доступ к информации о системных процессах. Ряд системных и информационных команд Linux используют данные этой файловой системы (например, uname, ps, top).
Каждому запущенном процессу в директории /proc соответствует каталог с именем PID процесса. Эти каталоги автоматически создаются и удаляются по мере запуска и завершения процессов в системе. Содержимое каталога процесса определяет все параметры процесса, например:
- cwd и root — символические ссылки на текущую и корневую директории;
- environ — переменные окружения процесса;
- status — общая информация о статусе процесса, например, PPID.
Символические ссылки на все файлы, используемые процессом, хранятся в каталоге /proc/<PID>/fd.
Файлы в самом каталоге /proc содержат общую информацию о системе и всех запущенных процессах, например:
- version — версия о ядре;
- cpuinfo и meminfo — подробная информация о процессоре и памяти соответственно;
- stat — статистика по последней загрузке.
sysfs — файловая система, позволяющая получить доступ к информации обо всех устройствах и драйверах ОС. Появилась впервые в версии ядра 2.6.
Файлы sysfs обычно хранятся в каталоге /sys. Структура этого каталога отражает структуры данных ядра, например:
- /sys/devices — отражает иерархическую структуру связей между устройствами ядра;
- /sys/bus — перечень зарегистрированных в системе шин. Каждый каталог шины содержит подкаталоги devices (символические ссылки на каталоги реальных устройств, расположенных в /sys/devices) и drivers (каталоги драйверов для устройств на каждой шине).