Unix / Linux - Управление процессами
Здравствуйте,野心勃勃的程序设计者们! Сегодня мы отправимся в увлекательное путешествие в мир процессов Unix/Linux. Как ваш доброжелательный сосед по компьютерным наукам, я с радостью провожу вас через это фундаментальное понятие. Не волнуйтесь, если вы новички в программировании - мы начнем с азов и будем двигаться вверх. Так что возьмите杯咖啡(или чай, если это ваше дело)и погружайтесь с нами!
Что такое процесс?
Прежде чем мы начнем, давайте поймем, что такое процесс на самом деле. Представьте, что вы находитесь на оживленной кухне. Каждый повар, работающий над конкретным блюдом, можно представить как процесс. У них есть своиingredientes (ресурсы), receta (программа) и objetivo (результат). В компьютерном мире процесс - это просто выполняемая программа.
Запуск процесса
Запуск процесса в Unix/Linux так же прост, как pie! Вы можете сделать это двумя основными способами:
- Процесс в前景е: Введите команду и нажмите Enter.
- Процесс в фоновом режиме: Добавьте значок и (&) в конце команды.
Давайте рассмотрим несколько примеров:
# Процесс в前景е
$ 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
Эта команда показывает вам древо процессов, иллюстрируя родительско-дочерние отношения.
Зомби и сиротские процессы
Теперь давайте поговорим о некоторых специальных типах процессов:
-
Зомби-процесс: Дочерний процесс, который完成了执行, но все еще имеет запись в таблице процессов. Это как повар, который закончил свое блюдо, но еще не ушел с работы.
-
Сиротский процесс: Процесс, чей родитель 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