**103.5** Управление процессами в Linux

Студент должен уметь создавать, отслеживать и завершать процессы

**Изучаем** :

- запуск задач в активном и фоновом режимах;
- настройку выполнения задачи после выхода из системы;
- способы отслеживания и сортировки активных процессов;
- завершение процессов.

**Термины и утилиты:       **

- &amp;
- bg
- fg
- jobs
- kill
- nohup
- ps
- top
- free
- uptime
- pgrep
- pkill
- killall
- screen

Linux содержит в себе множество инструментов для управления запущенными процессами: от сортировки, отслеживания состояния и загрузки системы до перевода процессов в фоновый режим и обратно.

Посмотреть запущенные процессы в текущей консоли можно при помощи команды **jobs**. Для вывода всех запущенных в данный момент процессов (независимо от консоли) используется команда ps с различным набором ключей, например:

**Ps**** aux** _(вывести процессы всех пользователей);_

Можно вывести процессы в консоль, отображая иерархию из взаимосвязи командой **pstree**.

Для отображения идентификаторов процессов по определенному критерию можно использовать команду **pgrep** , например:

**pgrep**  **-**** l **** - ****u**** root ****       ** _(отобразить все процессы пользователя_ _root__)_

Чтобы запустить процесс в фоновом режиме необходимо указать ключ **&amp;** , например:

**Sleep**  **999 &amp;       ** _(запустить задачу_ _sleep_ _999 в фоновом режиме);_

Для перевода процесса из фонового режима в активный используется команда **fg** , обратно – **bg**. В качестве аргумента команды следует указать номер процесса (_его можно увидеть на выводе команды_ _jobs_).

Для того чтобы процесс продолжал выполняться после выхода пользователя из системы, его следует запускать командой **nohup** , например:

**nohup**  ** **** sleep **** 1000 &amp;       ** _(запустить процесс &quot;__sleep_ _1000&quot; в фоновом режиме, и выполнять его даже в случае выхода пользователя из системы);_

Для остановки процесса используется команда **kill** , например:

**kill**  **2625** _                (выключить процесс с_ _PID__=2625);_

**killall**** sleep ****       ** _(выключить все процессы с именем_ _sleep_ _для текущего пользователя)_ **;**

Для остановки процессов по указанному критерию можно использовать команду **pkill** , например:

**pkill**** refox ****       ** _(остановить процесс, в имени которого есть символы &quot; __refox__&quot;);_

Для просмотра информации о работающих процессах в режиме реального времени используется диспетчер задача **top**. Используя его можно сортировать запущенные задачи по различным критериям и останавливать их _(клавиша_ _K__)_ мягко _(__sigterm__)_ и жестко _(__sigkill__)_.

Для отображения информации о времени работы системы и среднем времени загрузки АЧ используется команда **uptime**.

Для отображения информации о загрузке ОЗУ и раздела подкачки используется команда **free**.

Кроме того, Linux поддерживает работу с несколькими «экранами» при помощи команды **screen**. Она позволяет, в числе всего прочего, сворачивать запущенные приложения в консоли, в рамках той же консоли, например:

**screen**  **-**** S ****yandex**** ping ****ya****. ****ru****        ** _(создать экран с именем_ _yandex_ _для команды_ _ping __ya__. __ru__ );_

**screen**  **–**** ls ****                       ** _(показать свернутые экраны);_

**screen**  **-**** r ****yandex****                        ** _(развернуть экран с именем_ _yandex__)._