Мир Линукса
Что на самом деле делает kill -0 <PID> и почему это один из самых недооценённых приёмов в Linux
Что делает kill -0 <PID>?
Проверяет, существует ли процесс и можно ли к нему обращаться сигналами - при этом не посылает никакого сигнала.
Это просто тест на доступность процесса.
Почему это важно?
Потому что иногда нужно узнать:
⚪️ жив ли процесс?
⚪️ есть ли права взаимодействовать с ним?
⚪️ не “повис” ли PID после падения?
⚪️ стоит ли перезапускать сервис или это ложная тревога?
И всё это - без риска его случайно убить.
Как это работает?
Команда
kill -0 <PID>
делает системный вызов kill(), но с “нулевым” сигналом.
Нулевой сигнал - это не сигнал. Это проверка.
Возможные результаты:
⚪️Выходит без ошибки → процесс существует, доступен, жив.
⚪️ESRCH → процесса с таким PID нет.
⚪️EPERM → процесс есть, но нет прав для сигналов.
Выглядит как мелочь, а в продакшене - спасает от ложных срабатываний мониторинга и бесконечных перезапусков.
Где используют kill -0 в реальной работе
1. В health-check скриптах
Перед тем как перезапустить сервис, проверяют, жив ли текущий PID.
2. В init-скриптах systemd и supervisord
Чтобы не запустить дублирующие процессы.
3. В CI/CD пайплайнах
Для проверки зависших тестов или фоновых задач.
4. В мониторинге
Zabbix, Prometheus exporters, cron - все любят быструю проверку на существование процесса.
Почему не стоит игнорировать этот приём
Это очень безопасный, надёжный и почти бесплатный способ понять текущее состояние процесса без взаимодействия с ним.
ps, pgrep, pidof - полезны, но kill -0 проверяет ещё и права, что особенно критично в мультипользовательских системах и контейнерах.
11 · 501 ·