systemd: 시작 요청이 너무 빨리 반복됩니다.

systemd: 시작 요청이 너무 빨리 반복됩니다.

터미널에서 이 명령을 실행하면 정상적으로 작동합니다.

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

ExecStart하지만 시스템 서비스 단위 파일 에 넣으면 다음과 같습니다 .

[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: 시작 요청이 너무 빠르게 반복되었습니다.

1월 3일 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

또한 번들 명령에 절대 경로를 제공하여 작동하도록 했습니다.

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

관련 정보