← Назад к вопросам

Как найти запущенный процесс

1.3 Junior🔥 211 комментариев
#Linux и администрирование

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Поиск запущенных процессов в Linux: Основные инструменты и методики

Поиск запущенных процессов — одна из базовых, но критически важных задач в работе DevOps-инженера. Она требуется для диагностики проблем, мониторинга ресурсов, управления сервисами и обеспечения безопасности системы. Рассмотрю ключевые команды и подходы, которые использую в своей практике.

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

ps (Process Status) — фундаментальная утилита, показывающая текущие процессы. Имеет множество флагов, из которых наиболее полезны комбинации:

# Показать все процессы в удобном формате
ps aux

# Показать все процессы в иерархическом виде (деревом)
ps auxf

# Поиск процесса по имени
ps aux | grep nginx

# Показать процессы с детальной информацией (полная команда, пользователь, PID)
ps -ef

pgrep — специализированная команда для поиска процессов по различным критериям:

# Найти PID процесса по имени
pgrep nginx

# Найти PID с выводом имени процесса
pgrep -l nginx

# Поиск процессов, принадлежащих конкретному пользователю
pgrep -u www-data

# Поиск с учетом полного совпадения имени
pgrep -x mysqld

pidof — простой способ получить PID процесса по его имени:

# Получить PID процесса
pidof nginx

# При нескольких экземплярах — все PID через пробел
pidof apache2

Мощные инструменты для комплексного анализа

top и htop — интерактивные мониторы процессов, которые показывают процессы в реальном времени:

# Запуск top с сортировкой по использованию памяти
top -o %MEM

# Интерактивный поиск в top (нажать 'L' и ввести строку поиска)

# Более продвинутый htop (часто требует установки)
htop

# В htop поиск осуществляется клавишей F3

pstree — отображение процессов в виде дерева, что особенно полезно для понимания родительско-дочерних связей:

# Показать дерево процессов
pstree -p

# Показать дерево с именами пользователей
pstree -pu

# Показать дерево для конкретного процесса
pstree -p <PID>

Поиск по содержимому и использованию ресурсов

Иногда нужно найти процессы, использующие определенные ресурсы:

# Найти процессы, использующие конкретный порт
sudo lsof -i :80

# Или с помощью netstat
sudo netstat -tulpn | grep :80

# Найти процессы, использующие определенный файл или каталог
sudo lsof /var/log/nginx/access.log

# Найти процессы, потребляющие много памяти (топ-10)
ps aux --sort=-%mem | head -11

# Найти процессы, потребляющие много CPU (топ-10)
ps aux --sort=-%cpu | head -11

Продвинутые методы и скрипты

В реальной работе часто приходится создавать специализированные скрипты для мониторинга:

#!/bin/bash
# Скрипт для мониторинга и уведомления о критических процессах

SERVICE="nginx"
PID=$(pgrep -x "$SERVICE")

if [ -z "$PID" ]; then
    echo "Процесс $SERVICE не запущен!"
    # Здесь может быть команда для оповещения или перезапуска
    # systemctl restart $SERVICE
else
    echo "Процесс $SERVICE запущен с PID: $PID"
    # Дополнительная диагностика
    ps -p $PID -o %mem,%cpu,cmd
fi

Для контейнеризированных сред использую специализированные команды:

# Для Docker
docker ps --filter "name=web"

# Для Kubernetes
kubectl get pods | grep search-pattern

Рекомендации по использованию

В своей практике придерживаюсь следующих принципов:

  1. Использование точных имен — предпочитаю pgrep -x вместо grep в конвейере, чтобы избежать ложных срабатываний
  2. Проверка привилегий — некоторые процессы могут быть видны только под sudo
  3. Понимание контекста — всегда анализирую не только наличие процесса, но и его ресурсопотребление, родительские связи и состояние
  4. Автоматизация мониторинга — критически важные процессы отслеживаю через системы мониторинга (Prometheus, Zabbix) с автоматическим реагированием

Комбинация этих инструментов и методик позволяет быстро находить и диагностировать проблемы с процессами в любых условиях — от локальной отладки до управления распределенными production-системами. Ключевой навык — не просто знание команд, а понимание, когда и какую из них применить для эффективного решения конкретной задачи.

Как найти запущенный процесс | PrepBro