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