У меня проблемы с использованием 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"