Организация файловой системы Unix/Linux

Файловые системы в UNIX никогда не были хорошо организованы. Одновременно используется много разных, несовместимых соглашений об именовании файлов. Во многих случаях файлы группируются по выполняемым функциям, независимо от того, как часто они изменяются. Это затрудняет обновление операционной системы. Например, каталог /etc содержит ряд файлов, которые никогда не меняются, а также полностью локальные файлы. Как определить, какие файлы нельзя трогать при обновлении системы? Это нужно просто знать... Читать дальше

Отслеживание сигналов и системных вызовов: команды strace, truss и tusc

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

Читать дальше

Состояния процесса

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

 

Выполнение        Процесс можно выполнять

Ожидание            Процесс ждет выделения ресурса

Зомби                   Процесс пытается завершиться

Останов                Процесс приостановлен (не имеет разрешения на выполнение)

 

 

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

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

Некоторые операции переводят процесс в состояние непрерывного ожидания. Обычно это состояние является временным и не отображается в выводе команды ps, о чем свидетельствует флаг D в столбце STAT). Однако некоторые нестандартные ситуации могут приводить к сохранению этого состояния надолго. Наиболее распространенная причина возникновения такой ситуации — наличие проблем сервера в файловой системе NFS, смонтированной с применением параметра "hard". Поскольку процессы в состоянии непрерывного ожидания не могут быть активизированы даже для реакции на сигнал, их нельзя уничтожить. Для того чтобы избавиться от них, необходимо устранить породившую их проблему или перезагрузить систему.

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

Остановленному процессу временно запрещено выполняться. Процессы останавливаются при получении сигнала STOP или TSTP и возобновляют работу по сигналу CONT. Это состояние аналогично ожиданию, но выход из него возможен только с помощью другого процесса.

Сигналы Unix/Linux

Сигналы — это запросы на прерывание, реализуемые на уровне процессов. Определено свыше тридцати различных сигналов, и они находят самое разное применение.

  • Сигналы могут посылаться между процессами как средство коммуникации.
  • Сигналы могут посылаться драйвером терминала для уничтожения или приостановки процессов, когда пользователь нажимает специальные комбинации клавиш, такие как <Ctrl+C> или <Ctrl+Z>.
  • Сигналы могут посылаться в самых разных целях пользователем или администратором с помощью команды kill.
  • Сигналы могут посылаться ядром, когда процесс выполняет нелегальную инструкцию, например деление на нуль.
  • Сигналы могут посылаться ядром для уведомления процесса о "представляющем интерес" событии, таком как прекращение дочернего процесса или доступность данных в канале ввода-вывода.
  • Дамп памяти — это файл, содержащий образ памяти процесса. Его можно использовать для отладки.

Читать дальше

Управление процессами в UNIX

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

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

Читать дальше

Управление доступом Offline

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

Часто для принятия решений в особых обстоятельствах используются возможности POSIX или средства управления доступом на основе ролей (например, когда необходимо разрешить переустановку принтера или демона каждому, кто работает в конкретном отделе), в то время как при решении каждодневных задач ваша административная команда продолжает полагаться на утилиту sudo и учетную запись суперпользователя. В некоторых случаях (например, если это оговорено в контракте) для узлов необходимо использовать такие мощные и "ударопрочные" системы, как SELinux.

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

Читать дальше

Недостатки организация управления доступом в *NIX

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

Читать дальше

Мультисистемная загрузка Unix / Linux

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

Читать дальше

Сценарии запуска в системах SUSE

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

Читать дальше

Сценарии запуска в системах HP-UX и AIX

В системах HP-UX сценарии запуска хранятся в каталоге /sbin/init.d. Каталоги уровней выполнения также хранятся в каталоге /sbin. Файлы конфигурации, связанные со сценариями запуска, обычно "прописаны" в каталоге /etc/rc. config. d. Их имена соответствуют именам сценариев запуска, хранимых в каталоге /sbin/init.d. Например, сценарий /sbin/init.d/ SnmpMaster получает информацию о конфигурации системы из файла /ёЬс/ rc. config. d/SnmpMaster, а реально вызывается демоном init посредством ссылок /sbin/rc2.d/S560SnmpMaster  и  /sbin/rcl,d/K440SnmpMaster.

Читать дальше