Назад | Перейти на главную страницу

Истекло время ожидания Systemd `ExecStartPost`

У меня проблемы с использованием ExecStartPost в сервисе systemd. Даже с помощью следующей простой команды:

ExecStartPost=/bin/sh -c "exit 0"

... когда я запускаю службу, я получаю ошибку "тайм-аут":

start-post operation timed out. Stopping.

Вот мое полное определение услуги. mbtileserver это программа-блокировка, а не демон.

[Unit]
Description=mbtileserver daemon
After=network.target

[Service]
Type=simple
PIDFile=/home/crp/var/run/mbtileserver.pid
User=crp
Group=crp
WorkingDirectory=/home/crp
ExecStart=/home/crp/go/bin/mbtileserver -d /home/crp/tiles/ -p 8080 -s "eGJ0NwI9_OyxHEFvBcU-9zR6O89z_S0RNfIOSP3utSU"
ExecStartPost=/bin/sh -c "exit 0"
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Как мне создать ExecStartPost это не тайм-аут?

В конце концов я обнаружил, что проблема в том, что PIDFile не существовало. Это не задокументировано, но вам нужен действующий PIDFile чтобы использовать ExecStartPost (возможно нет PIDFile будет работать, но отсутствующий файл определенно не работает).

По иронии судьбы, я собирался использовать ExecStartPost к Создайте файл pid, но хотел попробовать что-нибудь простое (изначально имел echo) первый.

Изменение ExecStartPost к следующему заставили сервис работать:

ExecStartPost=/bin/sh -c "pgrep -o mbtileserver > /home/crp/var/run/mbtileserver.pid"