Ответ
В Linux есть несколько основных команд для поиска запущенных процессов.
1. Использование ps и grep (классический способ):
# Поиск по имени процесса
ps aux | grep nginx
# Более точный поиск (исключает сам процесс grep)
ps aux | grep -v grep | grep nginx
2. Использование pgrep (более удобная альтернатива):
# Найти PID процесса по имени
pgrep nginx
# Найти PID и полную командную строку
pgrep -af nginx
3. Использование pidof (для поиска по точному имени исполняемого файла):
pidof nginx
4. Поиск процесса, использующего определённый порт:
# Использование lsof
sudo lsof -i :80
# Использование ss или netstat
sudo ss -ltnp | grep :80
sudo netstat -tulpn | grep :80
5. Интерактивные мониторы процессов:
top # Базовый монитор
htop # Улучшенный, с поддержкой мыши и цветов
btop / btm # Современные мониторы с графиками
6. Поиск по пользователю:
ps -u username
Практический пример из DevOps-практики: Допустим, служба не отвечает на порту 8080.
# 1. Проверяем, слушает ли кто-то порт
sudo lsof -i :8080
# 2. Если процесс найден (например, PID 12345), смотрим о нём детальную информацию
ps -fp 12345
# 3. Или смотрим его открытые файлы и сокеты
ls -la /proc/12345/fd/
Ключевые опции:
ps aux— показать все процессы всех пользователей в детализированном формате.pgrep -f— искать по полной командной строке, а не только по имени исполняемого файла.lsof -i— показать процессы, использующие сетевые соединения.
Ответ 18+ 🔞
Ага, слушай, вот ты сидишь, а у тебя какой-то процесс на сервере творится непонятная дичь — то ли висит, то ли сдох, то ли порт занял и молчит как партизан. Ну, ёпта, с чего начать-то? Давай по порядку, как нормальные люди.
1. Старый добрый ps с grep — классика, которую все знают, но вечно путают.
# Ищешь, скажем, nginx
ps aux | grep nginx
Но тут же, бля, подстава: в выводе будет и сам твой grep nginx болтаться, манда с ушами! Чтобы его убрать, делают так:
ps aux | grep -v grep | grep nginx
Вот это уже чище. Но способ, честно, для дедов. Работает — да, но есть варианты поприятнее.
2. pgrep — вот это уже инструмент для умных. Создали же его не просто так.
# Просто найдет все PID'ы по имени
pgrep nginx
# А если хочешь не только номер, но и увидеть, что это за команда была (а то мало ли, одно имя, а запусков — овердохуища)
pgrep -af nginx
Вот это уже, бля, удобно. Прямо создан для таких ленивых, как мы.
3. pidof — ещё один узкий специалист.
pidof nginx
Ищет строго по имени исполняемого файла. Быстрый, простой. Если знаешь точно, что ищешь — в самый раз.
4. А вот это, чувак, самый частый кейс: «Какого хуя порт 8080 занят? Кто его съел?». Тут два главных подозреваемых:
# lsof — мощная штука, показывает кто что открыл
sudo lsof -i :80
Или старички ss с netstat (последний уже не везде стоит, его ss вытесняет):
sudo ss -ltnp | grep :80
sudo netstat -tulpn | grep :80 # если ещё жив, этот старичок
Вот тут главное — смотреть столбец PID/Process. Нашёл — и уже полдела сделано.
5. Ну а если вообще непонятно, что творится в системе — включаем тяжёлую артиллерию: мониторы.
top # База. Есть везде. Скучновато, но работает.
htop # Вот это любовь! Цвета, мышь, деревья процессов. Красота.
btop / btm # Современные штуки, с графиками ресурсов. Выглядит, будто с космического корабля панель.
Запустил htop, нажал F4, вбил имя процесса — и вот он, красавец, сразу видно, сколько памяти жрёт, этот хитрожопый.
6. Ну и поиск по юзеру — тоже пригождается.
ps -u deploy
Смотришь и думаешь: «И что это наш деплой-пользователь тут такого наворотил?».
Вот тебе реальный пример из жизни, когда всё пошло по пизде: Допустим, твой сервис на 8080 порту не отвечает. Делаем так:
# 1. Сначала смотрим — а есть ли кто вообще на том конце провода?
sudo lsof -i :8080
# 2. Допустим, нашёл процесс с PID 12345. Теперь смотришь на него пристальнее:
ps -fp 12345
# 3. А если совсем паранойя, можно глянуть, какие файлы и сокеты он держит открытыми:
ls -la /proc/12345/fd/
Часто вот в этом /proc/PID/fd/ и кроется ответ, куда процесс упёрся и почему не может стартануть.
Запомни ключевые флаги, чтобы не выглядеть распиздяем:
ps aux— это наш «швейцарский нож», показывает ВСЁ, что шевелится.pgrep -f— ищет не только по имени бинарника, а по всей командной строке. Очень помогает, когда скрипт на питоне или джаве запущен.lsof -i— твой лучший друг в расследовании сетевых косяков. Кто, куда и через какой порт говорит.
В общем, инструментов — вагон. Главное — понять, что именно тебе нужно: просто найти PID, посмотреть, кто порт занял, или устроить полную разборку полётов всему серверу. Выбирай по ситуации и не паникуй.