Linux – популярная операционная система. Ее отличительная черта – система управления. В отличие от Windows, она базируется преимущественно на командах и терминале.
Далее в статье предстоит разобраться с процессами в Linux. Необходимо выяснить, как управлять ими, что они собой представляют, какие операции можно выполнять в операционной системе. Эта информация пригодится как новичкам, так и более опытным пользователям Линукса.
Определение
Программа представляет собой набор неких инструкций, которые выполняются компьютером. При запуске приложения алгоритмы и команды копируются в память устройства. Далее происходит выделение пространства под хранение переменных и иных элементов, необходимых для нормальной работы программного обеспечения.
Защищенный экземпляр программы – это и есть процесс. Соответствующими компонентами можно управлять в операционной системе. В Linux для каждой программы создается отдельная «операция».
В рамках процесса на устройстве будут выделены:
- процессорное время;
- пространство в оперативной памяти;
- иные системные ресурсы.
Каждый процесс имеет собственный идентификатор – PID или Process ID. По ним можно судить о запущенных операция в операционной системе.
Процесс – это любые приложения, команды или программы, выполняемые в системе. Они могут быть нескольких видов: обычными и фоновыми.
Фоновый процесс – это команды и приложения, который подгружаются при запуске операционной системы. В основном они «сидят» в памяти, ожидая события, которое пошел запрос на запуск того или иного сервиса.
Фоновые процессы системы носят название «демонов». Они являются критическими для работы компьютера. Обычные «приложения» в ОС запускаются в основном пользователем. Они нужны для обеспечения большей функциональности системы, а также выполнения определенных задач.
Просмотр запущенных команд
Linux – мультизадачная операционная система. Это значит, что в ней могут одновременно выполнять множество процессов (работать большое количество программ и приложений). Это обычная ситуация для современных ОС.
Список процессов, работающих на данный момент на устройстве, может быть выведен у Линукса несколькими способами. Для этого используются такие команды как:
- top;
- htot;
- ps aux.
Все эти типы команд отвечают за отображение отдельных процессов и операции. Далее предстоит рассмотреть их более подробно.
Top
При помощи команды top можно увидеть информацию о системе в реальном времени. Она используется для демонстрации процессов, которые умещаются на экране. Htop – команда, которая работает по схожему принципу. Ее рекомендуется использовать, если хотите увидеть то, что запустил пользователь.
Вот – пример того, что будет показано на экране при использовании команды top в Linux. Здесь:
- Строка 2 отвечает за задачи или команды. Это и есть процессы. В любой момент времени в операционной системе выполняются сразу несколько «операций». Большая из них – это системные. Некоторые «спят» — это нормальное явление. «Спящие» процессы находятся в ожидании события, инициирующего их запуск.
- Строка 3 – анализ оперативной памяти. Если используется много «пространства», переживать не стоит. Связано это с тем, что в Линуксе недавно открытые программы сохраняются в целях повышения быстродействия. Если другим операциям потребуется соответствующая память, она будет высвобождена.
- В строке 4 происходит анализ виртуальной памяти операционной системы. При большом использовании этого ресурса целесообразно задуматься над модернизацией устройства. Если на оборудовании изначально достаточно много виртуальной памяти, никаких проблем не возникнет.
- В строках 6-10 отображается информация о наиболее ресурсоемких процессах системы. Выводится список по убыванию. Обновляется в режиме реального времени. Это и есть работа операционный системы. В соответствующих строках пользователь увидит все, что происходит в ОС. Там есть два важных столбца – используемая память, а также процент использования ПЦ. Если один из этих показателей долгое время находятся на высоком уровне, стоит выяснить, почему так происходит. В столбце USER указан пользователь, который запустил тот или ином процесс Linux. PID – столбец, указывающий на ID «операций».
Это – только один из нескольких вариантов просмотра активных процессов на устройстве. Далее предстоит обратить внимание на еще одну команду.
PS
Команда ps – разновидность команды управления операциями на устройстве. Если она используется без аргументов, то клиент увидит список процессов в текущем терминале.
Более полезной командой станет ps [aux]. Она выведет все процессы, которые выполняются от имен всех пользователей ОС. Отвечает за отображение статистики, время старта и команду, которая его начала. При выводе всех операций, выполняемых в системе, рекомендуется использовать ps -e.
Соответствующий тип команды после обработки выдает достаточно громоздкий результат. Чаще всего его используют вместе с | в grep.
Выводимая информация – описание столбцов
При просмотре информации о процессах в Linux необходимо не только уметь выводить соответствующие данные, но и грамотно расшифровывать их. В терминале появится «таблица» с различными столбцами. Каждый из них имеет то или иное значение, а также отвечает за вывод определенных сведений.
Как называется заголовок | За что отвечает |
UID | Идентификатор (имя) пользователя владельца процесса. Здесь будет показано, кто запустил операцию. |
PID | Уникальный идентификатор процесса. Информация пригодится для дальнейшей работы с операцией. |
PPID | Идентификатор родительского процесса |
C | Отвечает за приоритет процесса. Чем он выше, тем «важнее». Некоторые операции будут выполняться в ОС в первую очередь за счет соответствующего показателя. |
STIME | Время начала (старта) операции. |
TTY | Терминал запуска. Это системные консоли (помечены как console). Знак вопроса (?) укажет на характеристику операции. Если он есть, значит процесс выступает в качестве демона. |
TIME | Выполнение процесса. Параметр, который указывает на длительной работы запущенной ранее операции. |
CMD | Имя команды или приложения. |
Некоторые демоны, работающие в фоновом режиме, могут быть не связаны ни с какими терминалами. Это нормальное явление.
Процессы Linux имеют различные PID и PPID. Чем меньше указанный после записей номер, тем раньше рассматриваемая операция была запущена в системе. Владельцы каждого процесса будут отображаться совместно с именем команды или программы.
Опции
Во время загрузки информации о выполняемых на устройстве операциях можно настраивать параметры ее отображения. Существуют различные опции, помогающие упростить вывод интересующих пользователя сведений:
- -e – состояние всех процессов;
- -a – наиболее запрашиваемые;
- -t – процессы из заданного терминала;
- -p – информация только об указанном процессе;
- -u – операции конкретного пользователя;
- sort – сортировка по заданным параметрам.
Перечисленные виды опций особо полезны при работе с командой ps.
Удаление при сбое
Существуют различные виды команды управления процессами в операционных системах Linux (Ubuntu и не только). Иногда выполняемые на устройстве операции дают сбой. Завершить их «классическим» способом не получается – ответ на пользовательские действия просто не поступает.
Для завершения операции, которая дала сбой, необходимо использовать команду kill. Форма ее представления:
Kill [signal] <PID>
По умолчанию kill отвечает за завершение зависшего процесса. В этом случае команда отправляет стандартный параметр – -1. Соответствующий сигнал указывает на необходимость закрытия процесса. Начинать рекомендуется именно с такого алгоритма. Он является наиболее простым и коротким.
Если никакого прогресса от команды нет, потребуется задать параметр в записи, равный -9. Он указывает на необходимость принудительной остановки выполняемой операции.
Завершение
Процессы в Linux могут быть завершены пользователем. Существуют команды, помогающие прекратить работу запущенной операции:
- sigterm – сохранение данных и завершение;
- sigkill – принудительное завершение (без сохранения).
Других команд для завершения операций нет. Второй вариант больше подойдет для ситуаций, при которых приложение работает некорректно.
Процессы фоновые и переднего плана
Процессы и программы бывают разными. То, что запускаете в системе вручную, выводится «на передний план». Большая часть таких процессов выполняется за секунды. Пример – компиляция программы, обработка большого текстового файла. Если операция требует времени, в Linux нет необходимости ждать завершения обработки одного запроса. Можно сразу переходить к другому, а предыдущий оставить в «фоновом» режиме.
Наглядный пример – команда sleep. Она ждет, когда пройдет установленное количество времени, после чего завершает свою работу.
Для отображения информации о фоновых задачах и операциях «переднего плана» и их управления существуют различные команды:
- jobs – отвечает за отображение работающих в фоне процессов;
- fg <job number> – один процесс (указанный в скобках) с «фона» переводится на передний план.
Для перемещения операций между фоном и передним планом используется комбинация Ctrl + Z. После нажатия соответствующей последовательности текущий фоновый процесс будет остановлен, а затем перемещен на передний план.
Состояния
Linux-процессы работают не непрерывно. Пока пользователь их использует, они находятся в «активном» состоянии. После операция может переходить в состояние ожидания или завершения.
Всего в Linux пять состояний операций:
- Running. Указывает на обработку при помощи средств системного процессора. Выполняется на данный момент.
- Sleeping. Показывает состояние «сна». Операция ждет ввода от пользователя или другого процесса.
- Waiting. Статус, при котором processes получили входные данные, необходимые для работы. Операция будет выполнена, как только подойдет ее очередь.
- Stopped – операция остановлена. Она не будет выполняться даже тогда, когда подойдет ее очередь. Исключение – если пользователь передаст сигнал на работу.
- Zombie. Сигнал, указывающий на то, что процесс мертв. Он существует в таблице процессов, но никаких ресурсов на устройстве не занимает. Сохраняется до тех пор, пока родительская операция не разрешит ему «умереть». Это состояние также называется «неработающим процессом».
Управление процессами в Linux поддерживает еще и расстановку приоритетов. Эта команда имеет значимость для всей ОС.
Приоритеты и их установка
Приоритет – это очередность выполнения команды. Чем выше соответствующий показатель, тем «важнее» действие, и тем быстрее оно будет обрабатываться системой.
Для настройки приоритета используется команда nice. Всего у нее 40 значений, среди которых:
- -20 – это наиболее высокий параметр;
- +19 – самый низкий показатель.
По умолчанию большинство Linux-процессов получают значение nice, равное 0. Дочерняя команда наследует приоритет «родителя».
Чтобы увидеть niceness для запущенных операций, необходимо использовать ps и опцию –l. Получатся следующие результаты:
Для определения niceness по умолчанию необходимо пользоваться командой nice без опций и аргументов:
А вот так запускается программа на более высоком приоритете. Для этого значение «важности» указывается через тире:
Здесь больше наглядных примеров работы с командами. Лучше освоить их помогут дистанционные компьютерные онлайн-курсы.
Интересует Linux и системное администрирование? Добро пожаловать на курс в Otus!