저는 Raspberry Pi(Raspbian Buster)에서 실행되는 홈메이드 베이비 모니터를 가지고 있습니다. 모니터를 systemctl
실행하려면 2개의 서비스가 필요합니다.
- 야누스 스트림.서비스: Jaanus Gateway 소프트웨어에서 사용할 GStreamer 파이프라인 설정
- 젠펑 서비스: 스트림에 대한 WebRTC 연결을 용이하게 하기 위해 Janus Gateway를 시작합니다.
과거 어느 시점에서 저는 Pi가 재부팅될 때 스트림이 자동으로 시작되도록 이러한 서비스를 설정했습니다. 하지만 지난 몇 달 동안 어떤 이유로(안타깝게도 언제 시작했는지 기억이 나지 않습니다) 재부팅 후 스트림에 액세스하려고 하면 다음 오류가 발생합니다.No such mountpoint/stream 1
이 오류는 Janus Gateway 내에서 발생하는 것으로 보입니다.이 문제를 해결하는 유일한 방법은 Pi에 SSH로 연결하고 실행하는 것입니다.sudo systemctl restart janus.service
. 왜 이런 일이 발생하는지 또는 정상적인 시작 동작을 복원하기 위해 이를 수정하는 방법을 알 수 없습니다.
두 가지 이론이 있습니다.
- 어쩌면 내 애플리케이션을 이전과 지금 실행해야 할 수도 있지만
janus-stream.service
그런 일은 일어나지 않습니다.janus.service
이는 누락된 스트림 오류를 설명할 수 있습니다. 이것이 문제라면이러한 서비스의 시작 순서를 어떻게 보장하나요? - 이것이 어떻게 작동하는지 잘 모르겠지만
systemctl
몇 달 전에 Janus Gateway의 새로운 기능을 시험할 때 몇 가지 실수를 저질렀을 수도 있지만 그 이후로 모든 변경 사항을 이전에 작동했던 것으로 되돌렸습니다.systemctl
잘못된 Janus 게이트웨이 구성이 캐시되어 시작 시 필수 명령 대신 실행될 수 있습니까 ?그렇다면 서비스를 수동으로 다시 시작해야 합니까?
도움을 주셔서 미리 감사드립니다!
답변1
janus.service
이후 부분 이 시작 janus-stream.service
되도록 하려면 두 줄이 더 필요합니다.[Unit]
janus.service
Wants=janus-stream.service
After=janus-stream.service
첫 번째 줄은 janus.service
필수임을 지정 janus-stream.service
하지만부팅 순서를 지정하지 않습니다.(때로는 다른 서비스를 사용하는 서비스의 경우와 같이 괜찮을 수도 있지만 사용자가 실제로 서비스에 연결하고 특정 작업을 수행한 후에만 가능합니다.)
원하는 시작 순서를 지정하려면 이 After=janus-stream.service
줄도 필요합니다.
Requires=
대신 종속성을 사용하면 Wants=
종속성이 충족되지 않으면 전체 부팅 작업이 실패로 간주되어 부팅에 실패하면 부팅 시 시스템이 패닉 모드로 전환되는 부작용이 있습니다. 아마도 janus-stream.service
... 아마도 문제를 해결하기 위한 최선의 선택이 아닙니다.
man systemd.unit
설명하다:
실패한 서비스를 처리할 때
Wants=
보다 강력한 시스템을 구현하려면 대신 를 사용하는 것이 더 나은 선택인 경우가 많습니다.Requires=
편집이 완료되면 Tell을 janus.service
실행하여 편집 내용을 적용하기 위한 구성과 모든 유닛 파일을 다시 로드해야 합니다.systemctl daemon-reload
systemd