Systemd `ExecStartPost` 超时

Systemd `ExecStartPost` 超时

我在使用 systemd 服务时遇到了麻烦ExecStartPost。即使使用以下简单命令:

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不会超时的?

答案1

我最终发现问题在于PIDFile不存在。这似乎没有记录,但你需要一个有效的PIDFile才能使用ExecStartPost(可能 PIDFile可以工作,但是缺少文件肯定不行)。

讽刺的是,我本来打算ExecStartPost创造pid 文件,但想echo先用一些简单的东西(最初有一个)尝试一下。

更改ExecStartPost为以下内容使服务正常运行:

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

相关内容