Unix / Linux - Управление процессами

Здравствуйте,野心勃勃的程序设计者们! Сегодня мы отправимся в увлекательное путешествие в мир процессов Unix/Linux. Как ваш доброжелательный сосед по компьютерным наукам, я с радостью провожу вас через это фундаментальное понятие. Не волнуйтесь, если вы новички в программировании - мы начнем с азов и будем двигаться вверх. Так что возьмите杯咖啡(или чай, если это ваше дело)и погружайтесь с нами!

Unix / Linux - Processes

Что такое процесс?

Прежде чем мы начнем, давайте поймем, что такое процесс на самом деле. Представьте, что вы находитесь на оживленной кухне. Каждый повар, работающий над конкретным блюдом, можно представить как процесс. У них есть своиingredientes (ресурсы), receta (программа) и objetivo (результат). В компьютерном мире процесс - это просто выполняемая программа.

Запуск процесса

Запуск процесса в Unix/Linux так же прост, как pie! Вы можете сделать это двумя основными способами:

  1. Процесс в前景е: Введите команду и нажмите Enter.
  2. Процесс в фоновом режиме: Добавьте значок и (&) в конце команды.

Давайте рассмотрим несколько примеров:

# Процесс в前景е
$ ls -l

# Процесс в фоновом режиме
$ long_running_command &

В первом примере, ls -l работает в前景е, показывая вам содержимое каталога. Во втором, команда работает в фоновом режиме, позволяя вам продолжать использовать терминал.

Список работающих процессов

Теперь, что если вы хотите увидеть всех поваров (процессы), работающих на вашей кухне (системе)? Тогда вам пригодится команда ps!

$ ps aux

Эта команда покажет вам все работающие процессы. Это как заглянуть в каждый уголок вашей кухни!

Вот разъяснение того, что вы увидите:

Column Описание
USER Владелец процесса
PID ID процесса
%CPU Использование процессора
%MEM Использование памяти
VSZ Виртуальный размер памяти
RSS Размер резидентного набора
TTY Тип терминала
STAT Состояние процесса
START Время старта
TIME Время работы процессора
COMMAND Имя команды

Остановка процессов

Иногда процесс может пойти наперекосяк (как повар, который все烧掉). В таких случаях его нужно остановить. Вот как это сделать:

$ kill PID

Замените PID ID процесса, который вы хотите завершить. Если вы чувствуете себя особенно решительно, можете использовать:

$ kill -9 PID

Это как увольнение повара на месте - насильственное завершение!

Родительские и дочерние процессы

В Unix/Linux у процессов есть родословная. Когда процесс создает другой процесс, он становится родителем, а новый процесс - его ребенком. Это как шеф-повар (родительский процесс) assigns задачи sous-шефам (дочерние процессы).

Вы можете увидеть это отношение, используя:

$ pstree

Эта команда показывает вам древо процессов, иллюстрируя родительско-дочерние отношения.

Зомби и сиротские процессы

Теперь давайте поговорим о некоторых специальных типах процессов:

  1. Зомби-процесс: Дочерний процесс, который完成了执行, но все еще имеет запись в таблице процессов. Это как повар, который закончил свое блюдо, но еще не ушел с работы.

  2. Сиротский процесс: Процесс, чей родитель finished или terminated, но он все еще работает. Представьте sous-шефа, который продолжает работать после ухода шеф-повара.

Чтобы увидеть, есть ли у вас зомби-процессы, вы можете использовать:

$ ps aux | grep Z

Демонные процессы

Демонные процессы resemble кухонный персонал, который работает 24/7. Они работают в фоновом режиме и предоставляют различные услуги. Например, демон sshd listens для входящих SSH-соединений.

Чтобы列出 все демонные процессы, вы можете использовать:

$ ps -eo 'tty,pid,comm' | grep ^?

Команда top

Команда top - это ваш универсальный kitchen monitor. Она предоставляет динамический реальный вид работающей системы. Вот как ею пользоваться:

$ top

Вы увидите таблицу, подобную ps, но она обновляется в реальном времени. Это как live feed вашей кухни!

Job ID против Process ID

Наконец, давайте уточним разницу между Job ID и Process ID:

  • Process ID (PID): Уникальный идентификатор для каждого процесса в системе.
  • Job ID: Номер, присвоенный shellem для процесса, запущенного в фоновом режиме.

Вы можете увидеть job IDs, используя:

$ jobs

И вы можете вернуть фоновую задачу в前景, используя:

$ fg %job_id

Помните, Job IDs específicas для вашей текущей сессии shell, в то время как PIDs являются системными.

И вот это все,朋友们! Мы рассмотрели основы управления процессами в Unix/Linux. Помните, что практика makes perfect, так что не стесняйтесь пробовать эти команды на вашей системе. Просто будьте осторожны с командой kill - мы не хотим никаких случайных завершений на нашей кухне!

Заканчивая, я вспоминаю забавный инцидент из моих первых дней преподавания. Я однажды случайно killed мой текстовый процессор, демонстрируя команду kill, потеряв час работы без сохранения. Давайте это будет урок - всегда сохраняйте свою работу перед экспериментами с процессами!

Продолжайте готовить свои процессы и快乐计算!

Credits: Image by storyset