나는 thisismywebserver라는 웹 서버를 기본적으로 실행하는 사용자 정의 서비스를 사용하고 있습니다. 현재는 작동하지 않습니다(예: 페이지에 액세스하려고 할 때 "연결할 수 없음" 오류가 발생함).
service thisismywebserver status
서비스 상태를 확인하기 위해 이 명령을 실행하면 상태가 "활성(종료)"으로 표시됩니다. 이는 서비스 작동이 중지되었음을 의미합니까? 그렇지 않다면 이것은 무엇을 의미합니까?
root@thisismywebserver-testing:~# service thisismywebserver status
● thisismywebserver.service - LSB: ThisIsMyWebServer server
Loaded: loaded (/etc/init.d/thisismywebserver)
Active: active (exited) since Sun 2015-11-08 23:01:33 EST; 18h ago
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
답변1
systemd를 사용하여 시스템을 실행 중인 것처럼 보이지만 sysV 명령을 사용하고 있습니다. sysV init 스크립트나 systemd 유닛 파일을 생성하셨나요?
활성(종료) 상태는 systemd가 명령을 성공적으로 실행했지만 모니터링할 데몬이 있다는 것을 몰랐음을 의미합니다.
그렇다면 시작하는 프로세스가 기본 프로세스인지, 하위 프로세스를 분기하는지, 종료하는지 등에 따라 Type 및 ExecStart 옵션을 적절하게 구성하여 단위 파일에서 이를 정의해야 합니다.
다른 시스템 매뉴얼 페이지를 확인하거나 질문을 업데이트하고 단위 파일 또는 초기화 스크립트를 게시하십시오.
답변2
나는 같은 문제에 직면했다 active (exited)
. 근본 원인은 start-stop-daemon 명령을 통해 일부 서비스 데몬 프로세스를 시작한 후 내 쉘 프로세스가 종료되었기 때문입니다.
해결책은 쉘 프로세스를 직접 종료하는 대신 무한 루프로 변경하는 것이었습니다. 이런 식으로 active (running)
실행 후 표시됩니다 systemctl start my-service-name.service
.
또한 이 루프 중에 셸 프로세스는 서비스 데몬의 상태를 모니터링합니다. 쉘 프로세스가 서비스 데몬이 오류 상태에 들어간 것을 감지하면 무한 루프에서 벗어나 종료됩니다.