Практическое задание

Эта задача — шаг 18 курса «Процессы и сигналы»

Pidfile от умершего процесса

легко~3 мин

Демон отчётов не запускается: /opt/reporter/start.sh отвечает already running (pid 31337). Но такого процесса нет — демон упал ночью, а его pidfile /run/reporter.pid остался. Убедись, что процесс с этим PID действительно мёртв, убери устаревший pidfile и запусти демон через start.sh.

Что потренируешь:
  • pidfile
  • kill -0
  • ps -p
  • демоны
  • устаревший lock

Разбор темы

Pidfile — файл с PID работающего демона: по нему скрипты управления понимают, что демон запущен, и знают, кому слать сигналы. Если процесс погиб аварийно (SIGKILL, OOM, падение), он не успевает удалить pidfile, и простой стартовый скрипт продолжает считать демона живым. Проверить, существует ли процесс, позволяет «нулевой сигнал» kill -0 PID: он ничего не доставляет, только возвращает успех, если процесс есть. Убедившись, что PID мёртв, устаревший pidfile удаляют — иначе есть риск запустить второй экземпляр поверх живого.

Что проверяется

  1. демон запущен
  2. pidfile указывает на живой демон

Как это выглядит