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

Как найти и завершить зависший Python-процесс одной командой?

2.0 Middle🔥 101 комментариев
#DevOps и инфраструктура

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

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

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

Найти и завершить зависший Python-процесс одной командой

Есть несколько подходов, от простых до сложных.

1. Базовый способ — поиск по имени скрипта

ps aux | grep python
pkill -f my_script.py
pkill -9 -f my_script.py

2. По названию приложения/модуля

pkill -9 -f celery
pkill -9 -f "celery worker"
pkill -9 -f "uvicorn"
pkill -9 -f "flask run"

3. По PID

kill -15 1234
kill -9 1234

4. Поиск + Убийство одной командой

ps aux | grep my_script.py | grep -v grep | awk '{print $2}' | xargs kill -9

5. По CPU нагрузке

pid=$(ps aux --sort=-%cpu | grep python | head -1 | awk '{print $2}'); kill -9 $pid

6. По времени запуска

pid=$(ps aux --sort=+etime | grep python | head -1 | awk '{print $2}'); kill -9 $pid

7. По порту

kill -9 $(lsof -t -i :8000)
fuser -k 8000/tcp

8. Сигналы завершения

kill -15 1234  # SIGTERM мягко
kill -9 1234   # SIGKILL жёсткое
kill -2 1234   # SIGINT как Ctrl+C

9. Python для автоматического завершения

import psutil

def kill_hung_processes(script_name, cpu_threshold=90):
    for proc in psutil.process_iter(['pid', 'name', 'cpu_percent']):
        try:
            if script_name in proc.cmdline():
                cpu = proc.cpu_percent(interval=1)
                if cpu > cpu_threshold:
                    proc.terminate()
        except (psutil.NoSuchProcess, psutil.AccessDenied):
            pass

10. Production подход

pkill -15 -f my_app
sleep 5
pkill -9 -f my_app

Сначала мягко (SIGTERM), потом жёсткое завершение (SIGKILL).

Как найти и завершить зависший Python-процесс одной командой? | PrepBro