- Все, что вам нужно знать о процессах в Linux [Полное руководство]
- Типы процессов
- Что такое демоны
- Создание процессов в Linux
- Как Linux идентифицирует процессы?
- Процесс инициализации
- Запуск процесса в Linux
- Фоновые задания Linux
- Состояния процесса в Linux
- Как просмотреть активные процессы в Linux
- 1. пс команда
- 2. вверху — Инструмент мониторинга системы
- 3. взгляды — инструмент системного мониторинга
- Как контролировать процессы в Linux
- Отправка сигналов процессам
- Изменение приоритета процесса Linux
- Как запустить и завершить процесс в Ubuntu
- Запуск процесса через CLI
- Откройте терминал Ubuntu
- Запуск процесса
- Завершение/прерывание процесса
- Заключение
- Похожие записи:
Все, что вам нужно знать о процессах в Linux [Полное руководство]
В этой статье мы рассмотрим базовое понимание процессов и кратко рассмотрим, как управлять процессами в Linux с помощью определенных команд.
Процесс относится к выполняемой программе; это работающий экземпляр программы. Он состоит из инструкции программы, данных, считанных из файлов, других программ или введенных пользователем системы.
Типы процессов
В Linux есть два основных типа процессов:
- Процессы переднего плана (также называемые интерактивными процессами) — они инициализируются и управляются через сеанс терминала. Другими словами, для запуска таких процессов к системе должен быть подключен пользователь; они не запускались автоматически как часть системных функций/служб.
- Фоновые процессы (также называемые неинтерактивными/автоматическими процессами) — это процессы, не подключенные к терминалу; они не ожидают никаких действий пользователя.
Что такое демоны
Это специальные типы фоновых процессов, которые запускаются при запуске системы и продолжают работать вечно как служба; они не умирают. Они запускаются как системные задачи (запускаются как службы), самопроизвольно. Однако ими может управлять пользователь через процесс инициализации.
Создание процессов в Linux
Новый процесс обычно создается, когда существующий процесс делает свою точную копию в памяти. Дочерний процесс будет иметь ту же среду, что и его родитель, но отличается только идентификационный номер процесса.
Есть два традиционных способа создания нового процесса в Linux:
- Использование функции System() – этот метод относительно прост, однако он неэффективен и сопряжен со значительными рисками для безопасности.
- Использование функций fork() и exec(). Этот метод немного сложнее, но обеспечивает большую гибкость, скорость и безопасность.
Как Linux идентифицирует процессы?
Поскольку Linux является многопользовательской системой, а это означает, что разные пользователи могут запускать в системе различные программы, каждый запущенный экземпляр программы должен однозначно идентифицироваться ядром.
Программа идентифицируется по идентификатору процесса (PID), а также по идентификатору родительского процесса (PPID), поэтому процессы можно разделить на следующие категории:
- Родительские процессы — это процессы, которые во время выполнения создают другие процессы.
- Дочерние процессы — эти процессы создаются другими процессами во время выполнения.
Процесс инициализации
Процесс Init является материнским (родительским) для всех процессов в системе, это первая программа, которая выполняется при загрузке системы Linux; он управляет всеми другими процессами в системе. Он запускается самим ядром, поэтому в принципе не имеет родительского процесса.
Идентификатор процесса инициализации всегда равен 1. Он действует как приемный родитель для всех осиротевших процессов.
Вы можете использовать команду pidof, чтобы найти идентификатор процесса:
# pidof systemd # pidof top # pidof httpd
Чтобы найти идентификатор процесса и идентификатор родительского процесса текущей оболочки, выполните:
Запуск процесса в Linux
Как только вы запустите команду или программу (например, cloudcmd — CloudCommander), она запустит процесс в системе. Вы можете запустить процесс переднего плана (интерактивный) следующим образом, он будет подключен к терминалу, и пользователь сможет отправить ему ввод:
Фоновые задания Linux
Чтобы запустить процесс в фоновом режиме (не интерактивный), используйте символ & , здесь процесс не считывает ввод пользователя, пока он не будет перемещен на передний план.
Вы также можете перевести процесс в фоновый режим, приостановив его с помощью [Ctrl + Z] , это отправит процессу сигнал SIGSTOP, тем самым остановив его работу; становится бездействующим:
# tar -cf backup.tar /backups/* #press Ctrl+Z # jobs
Чтобы продолжить выполнение приостановленной выше команды в фоновом режиме, используйте команду bg:
Чтобы перевести фоновый процесс на передний план, используйте команду fg вместе с идентификатором задания, например:
Вам также может понравиться: Как запустить команду Linux в фоновом режиме и отсоединить процесс в терминале
Состояния процесса в Linux
Во время выполнения процесс переходит из одного состояния в другое в зависимости от его окружения/обстоятельств. В Linux процесс может находиться в следующих возможных состояниях:
- Выполняется — здесь он либо запущен (это текущий процесс в системе), либо готов к запуску (ожидает назначения одному из процессоров).
- Ожидание — в этом состоянии процесс ожидает возникновения события или системного ресурса. Кроме того, ядро также различает два типа ожидающих процессов; прерываемые процессы ожидания — могут быть прерваны сигналами, а непрерываемые процессы ожидания — ожидают непосредственно аппаратных условий и не могут быть прерваны каким-либо событием/сигналом.
- Остановлен — в этом состоянии процесс остановлен, обычно по сигналу. Например, отлаживаемый процесс.
- Зомби — здесь процесс мертв, он был остановлен, но запись о нем все еще есть в таблице процессов.
Как просмотреть активные процессы в Linux
Существует несколько инструментов Linux для просмотра/списка запущенных процессов в системе, две традиционные и хорошо известные команды являются главными:
1. пс команда
Он отображает информацию о выборе активных процессов в системе, как показано ниже:
2. вверху — Инструмент мониторинга системы
динамическое представление работающей системы в реальном времени, как показано на снимке экрана ниже:
Прочитайте это, чтобы узнать больше примеров использования: 12 лучших примеров команд в Linux.
3. взгляды — инструмент системного мониторинга
glances – относительно новый инструмент мониторинга системы с расширенными функциями:
Подробное руководство по использованию см. в статье Glances — расширенный инструмент мониторинга системы в реальном времени для Linux.
Есть несколько других полезных инструментов мониторинга системы Linux, которые вы можете использовать для получения списка активных процессов. Откройте ссылку ниже, чтобы узнать о них больше:
- 20 инструментов командной строки для мониторинга производительности Linux
- Ещё 13 полезных инструментов для мониторинга Linux
Как контролировать процессы в Linux
В Linux также есть несколько команд для управления такими процессами, как kill, pkill, pgrep и killall, ниже приведены несколько основных примеров их использования:
$ pgrep -u tecmint top $ kill 2308 $ pgrep -u tecmint top $ pgrep -u tecmint glances $ pkill glances $ pgrep -u tecmint glances
Чтобы узнать, как подробно использовать эти команды для уничтожения/завершения активных процессов в Linux, откройте ссылки ниже:
- Руководство по командам Kill, Pkill и Killall для завершения процесса Linux
- Как найти и остановить запущенные процессы в Linux
Обратите внимание, что вы можете использовать их для уничтожения не отвечающих приложений в Linux, когда ваша система зависает.
Отправка сигналов процессам
Основным способом управления процессами в Linux является отправка им сигналов. Есть несколько сигналов, которые вы можете отправить процессу, чтобы просмотреть все запущенные сигналы:
Чтобы отправить сигнал процессу, используйте команды kill, pkill или pgrep, о которых мы упоминали ранее. Но программы могут реагировать на сигналы только в том случае, если они запрограммированы на распознавание этих сигналов.
И большинство сигналов предназначены для внутреннего использования системой или для программистов, когда они пишут код. Ниже приведены сигналы, полезные для пользователя системы:
- SIGHUP 1 — отправляется процессу, когда его управляющий терминал закрыт.
- SIGINT 2 – отправляется процессу его управляющим терминалом, когда пользователь прерывает процесс, нажимая [Ctrl+C] .
- SIGQUIT 3 — отправляется процессу, если пользователь отправляет сигнал выхода [Ctrl+D] .
- SIGKILL 9 — этот сигнал немедленно завершает (убивает) процесс, и процесс не выполняет никаких операций по очистке.
- SIGTERM 15 — это сигнал завершения программы (по умолчанию kill отправит его).
- SIGTSTP 20 — посылается процессу его управляющим терминалом с запросом на его остановку (остановка терминала); инициируется нажатием пользователем [Ctrl+Z] .
Ниже приведены примеры команд kill для уничтожения приложения Firefox с использованием его PID после его зависания:
$ pidof firefox $ kill 9 2687 OR $ kill -KILL 2687 OR $ kill -SIGKILL 2687
Чтобы убить приложение, используя его имя, используйте pkill или killall следующим образом:
$ pkill firefox $ killall firefox
Изменение приоритета процесса Linux
В системе Linux все активные процессы имеют приоритет и определенное значение nice. Процессы с более высоким приоритетом обычно получают больше процессорного времени, чем процессы с более низким приоритетом.
Однако системный пользователь с привилегиями root может повлиять на это с помощью команд nice и renice.
Из вывода команды top NI показывает значение nice процесса:
Используйте команду nice, чтобы установить хорошее значение для процесса. Имейте в виду, что обычные пользователи могут присваивать значения nice от нуля до 20 процессам, которыми они владеют.
Чтобы изменить приоритет процесса, используйте команду renice следующим образом:
$ renice +8 2687 $ renice +8 2103
Ознакомьтесь с нашими полезными статьями о том, как управлять процессами Linux и контролировать их.
- Управление процессами Linux: загрузка, завершение работы и все, что между ними
- Найти 15 процессов с наибольшим объемом использования памяти с помощью параметра top в пакетном режиме
- Поиск самых запущенных процессов по максимальному использованию памяти и ЦП в Linux
- Как найти имя процесса по номеру PID в Linux
Это пока все! У вас есть какие-либо вопросы или дополнительные идеи, поделитесь ими с нами через форму обратной связи ниже.
Как запустить и завершить процесс в Ubuntu
Процесс — это серия шагов для выполнения некоторых конкретных задач. С точки зрения информатики, процесс — это программа, находящаяся в процессе выполнения. Часто одновременно выполняется несколько процессов. Один процесс связан с одной программой, и каждый процесс имеет различные компоненты, которые выполняют соответствующие задачи. С каждым процессом связаны различные свойства.
- Номер процесса
- Состояние процесса
- Имя процесса
- Уникальный номер процесса
- Происхождение процесса
- Время, затраченное каждым процессом
В этой статье мы рассмотрим, как запустить и завершить любой процесс через командную строку. В данном руководстве я использую распределенную систему Linux Ubuntu 20.04 LTS. Для полного понимания следуйте руководству полностью.
Запуск процесса через CLI
Чтобы запустить любой процесс через CLI, необходимо выполнить следующие шаги:
Откройте терминал Ubuntu
Перейдите в левую нижнюю часть рабочего стола и нажмите на значок меню. Перейдите к строке поиска в верхнем левом углу.
Введите там «terminal» и нажмите на «Terminal».
Нажав на «Терминал», вы увидите следующее окно.
Запуск процесса
Предположим, что в данном случае я хочу открыть процесс «Firefox». Чтобы открыть Firefox через ввод командной строки, выполните следующую команду в терминале:
Для этой конкретной статьи имя процесса «firefox» в приведенной выше команде. Когда вы выполните эту команду, она откроет процесс firefox в фоновом режиме, как показано на прикрепленном ниже изображении.
Вы также можете проверить версию открытого процесса через CLI. Чтобы проверить версию «firefox», выполните следующую команду.
Выполнение этой команды покажет версию процесса firefox, открытого в фоновом режиме. Это даст вам следующее отображение:
После запуска процесса вы также можете увидеть полный путь к исполняемому файлу для соответствующего процесса. Для этого используйте команду «which command»:
Это отобразит следующий путь относительно моей системы:
Завершение/прерывание процесса
Чтобы убить, завершить или остановить процесс через командную строку, выполните следующую команду:
Прежде чем убить процесс, сначала необходимо найти его PID, известный как «Идентификатор процесса». Каждый процесс имеет уникальный номер PID. Чтобы найти PID любого процесса, выполните следующую команду:
Команда отобразит PID всех текущих процессов. В данном случае мы взяли в качестве примера «firefox». Поэтому ищите его. Выполнив вышеуказанную команду, вы получите следующую информацию.
Далее необходимо убить процесс после получения его PID. Чтобы убить процесс, выполните следующую команду:
Как видно на прикрепленном выше снимке экрана, PID firefox равен «8490». Поэтому команда будет выглядеть следующим образом:
Выполнение вышеуказанной команды приведет к уничтожению, завершению или остановке процесса «firefox», работающего в фоновом режиме.
Заключение
Эта статья поможет вам понять концепцию процесса, как запускать и завершать процесс через ввод командной строки очень простым и понятным способом. Если вы новичок и учитесь всему самостоятельно, то эта статья будет для вас очень полезной, так как она объясняет руководство более простыми словами с помощью легко воспринимаемой практической демонстрации.