서비스를 시작하거나 다시 시작할 때 systemd가 중단됩니다.

서비스를 시작하거나 다시 시작할 때 systemd가 중단됩니다.

16.04로 업그레이드한 후 systemd를 처음 사용하는데 서비스를 시작하고 다시 시작하는 데 문제가 발생했습니다. (예를 들어) 내가 달릴 때...

systemctl start djalbat.com

...작동하는 것 같지만 프롬프트가 다시 표시되지 않고 정지된 것처럼 보입니다. 프롬프트를 다시 받은 다음 ctrl-c서비스가 시작되었는지 테스트해 보면 서비스가 시작된 것 같습니다. 이런 일이 발생하는 구성이 무엇인지 궁금합니다. 여기있어:

[Unit]
Description=djalbat.com


[Service]
Type=forking
WorkingDirectory=/var/www/djalbat.com/
ExecStart=/usr/bin/node ./bin/main.js start 2>&1 >> /var/log/djalbat.com.log


[Install]
WantedBy=multi-user.target

또한 누군가 마지막 지시문의 필요성을 지적해 주시면 WantedBy감사하겠습니다.

답변1

그래서 구성으로 실행된 명령이 실행 ExecStart되지 않은 것으로 나타났습니다.포크서비스 systemd는 분기 실행 파일용으로 구성되었습니다. 이로 인해 systemctl실행 파일이 반환되지 않을 때까지 기다리게 됩니다.

그렇지 않은 실행 파일에 대한 올바른 구성포크을 사용하는 것입니다 Type=simple.

[Unit]
Description=djalbat.com

[Service]
Type=simple
WorkingDirectory=/var/www/djalbat.com/
ExecStart=/usr/bin/node ./bin/main.js start 2>&1 >> /var/log/djalbat.com.log

[Install]
WantedBy=multi-user.target

WantedBy이 장치를 대상과 연결하는 데 필요하므로 적절한 대상에 도달하면 이 장치 또는 서비스가 자동으로 시작되고 서비스가 자동으로 시작되도록 활성화됩니다 .

systemctl enable djalbat

systemd다음을 사용하여 서비스 파일을 변경한 후 새로 고치는 것을 잊지 마세요.

systemctl daemon-reload

관련 정보