systemd:启动请求重复得太快

systemd:启动请求重复得太快

如果我从终端运行此命令,它工作正常:

bundle exec /home/ubuntu/.rbenv/shims/puma -C /var/www/html/mysite/config/puma.rb

但如果我将其放入ExecStartsystemd 服务单元文件中:

[Unit]
Description=Puma Application HTTP Server
After=network.target

[Service]
Type=simple
WorkingDirectory=/var/www/html/mysite

ExecStart=bundle exec /home/ubuntu/.rbenv/shims/puma -C /var/www/html/mysite/config/puma.rb


Restart=always

[Install]
WantedBy=multi-user.target

我会收到错误:

可执行路径不是绝对的:bundle exec /home/ubuntu/.rbenv/sh

我认为它抱怨命令必须以绝对路径而不是“bundle exec”开头。所以我尝试这个:

ExecStart=/bin/bash -lc 'bundle exec /home/ubuntu/.rbenv/shims/puma -C /var/www/html/mysite/config/puma.rb'

现在,当我运行 systemctl daemon-reload 和 systemctl start puma-mysite 时,出现以下错误:

Jan 03 00:07:53 ip-10-0-1-133 systemd[1]: puma-mysite.service: 启动请求重复得太快。

Jan 03 00:07:53 ip-10-0-1-133 systemd[1]: puma-mysite.service: 失败,结果为“退出代码”。

Jan 03 00:07:53 ip-10-0-1-133 systemd[1]:无法启动 Puma 应用程序 HTTP 服务器。

这似乎是 SystemD 的问题,因为该命令在 SystemD 之外工作。

答案1

我也通过给bundle命令一个绝对路径来让它工作:

ExecStart=/home/ubuntu/.rbenv/shims/bundle exec /home/ubuntu/.rbenv/shims/puma -C /var/www/html/mysite/config/puma.rb

答案2

我在研究类似问题的解决方案时发现了这一点。

另一个论坛建议将此作为解决方案。

[Service]
ExecStartPre=-/bin/sleep 5
EnvironmentFile=/etc/default/bind9

https://askubuntu.com/questions/711535/delay-startup-service https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files

https://stackoverflow.com/questions/43001223/how-to-ensure-that-there-is-a-delay-before-a-service-is-started-in-systemd

这里提供的解决方案包括

ExecStartPost=/bin/sleep 30

[Timer]
OnActiveSec=5sec
AccuracySec=1s

[Install]
WantedBy=timers.target

https://askubuntu.com/questions/1144764/sleep-not-working-in-service

[service] 
TimeoutSec=infinity

相关内容