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

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

Pidfile для сервиса превью

средне~7 мин

На сервере работают два одинаковых на вид Python-сервиса: превью сайта и документация. Скрипт деплоя ждёт PID сервиса превью в /run/preview.pid, а превью — это тот, что слушает порт 8002. Номера порта в командной строке процессов нет: он берётся из конфига. Определи PID и запиши в /run/preview.pid только число.

Что потренируешь:
  • pidfile
  • ss -p
  • поиск процесса по порту
  • grep -o
  • pid

Разбор темы

Pidfile — файл с одним числом, PID процесса; по нему скрипты управления понимают, кому слать сигналы. Найти PID по имени просто, пока процесс уникален, но два экземпляра одной программы pgrep не различит, если они отличаются только конфигом. Однозначный признак сетевого сервиса — порт, который он слушает: ss с ключом показа процессов выводит рядом с сокетом pid=… владельца, а фильтр по порту оставляет одну строку. В файл пишут только число, без пробелов и лишних строк, — иначе kill $(cat pidfile) сломается.

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

  1. файл /run/preview.pid создан
  2. в pidfile PID процесса на порту 8002

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