Skip to main content

Процессы и демоны

Linux

kliganN - Overview

info

Процессы в Linux - это работающие программы, которые выполняются в операционной системе. Каждый процесс имеет свой уникальный идентификатор (PID), который позволяет операционной системе отслеживать и управлять процессами.

Основные системные вызовы для работы с процессами

  • fork() - создает дочерний процесс, который является копией родительского процесса.
  • exec() - заменяет текущий процесс на новый процесс.
  • wait() - ожидает завершения дочернего процесса.
  • exit() - завершает текущий процесс.

Код завершения процесса определяется значением, возвращаемым командой exit(). Если код завершения равен 0, это означает, что процесс завершился без ошибок. Если код завершения равен 1, это означает, что в процессе возникла ошибка.

Команды для работы с процессами

  • wc -l - подсчет количества строк в файле.
  • ls -l /proc/ | wc -l - узнать количество процессов в системе.
  • ls -ld /proc/* | grep <username> - найти все процессы пользователя.
  • ps - команда для просмотра информации о запущенных процессах.
  • ps -aux - показывает все процессы в системе, включая системные.
  • ps -elf - показывает все процессы в системе в виде дерева.
  • pstree - показывает процессы в виде дерева.
  • kill - посылает сигнал процессу.

Сигналы

Сигналы - это механизм, который используется для уведомления процесса о происходящих в системе событиях. В Linux существует 28 различных сигналов. Некоторые из наиболее распространенных сигналов:

  • SIGKILL (9) - завершение процесса безусловно.
  • SIGTERM (15) - завершение процесса по запросу.
  • SIGINT (2) - отправляется при нажатии на Ctrl+C в терминале.

Чтобы послать сигнал процессу, воспользуйтесь командой kill. По умолчанию kill посылает сигнал SIGTERM (15).

Например, чтобы послать сигнал SIGTERM (15) процессу с определенным PID, выполните команду:

kill <PID>

Чтобы послать другой сигнал, укажите его с помощью опции -s:

kill -s <SIGNAL> <PID>

Например, чтобы послать сигнал SIGKILL (9) процессу с определенным PID, выполните команду:

kill -s 9 <PID>