マシンが再起動するたびにこのsystemctlサービスを再起動する必要があるのはなぜですか?

マシンが再起動するたびにこのsystemctlサービスを再起動する必要があるのはなぜですか?

私はRaspberry Pi(Raspbian Buster)で動作する自家製ベビーモニターを持っています。モニターをsystemctl実行するには2つのサービスが必要です。

過去のある時点で、私はPiが再起動したときにストリームが自動的に開始されるようにこれらのサービスを設定しました。しかし、過去数ヶ月間、何らかの理由で(残念ながら、いつ起動したのか覚えていません)、再起動後にストリームにアクセスしようとすると、次のエラーが発生します。No such mountpoint/stream 1 Piの再起動後にストリームにアクセスしようとしたときにエラーが発生しました。

このエラーはJanus Gateway内で発生しているようです。この問題を解決する唯一の方法は、PiにSSHで接続して実行することです。sudo systemctl restart janus.service。なぜこれが起こるのか、または通常の起動動作を復元するためにそれを修正する方法はわかりません。

2つの理論があります。

  1. たぶん私のアプリケーションを以前と今すぐ実行する必要があるかもしれませんが、janus-stream.serviceそのようなことは起こりません。janus.serviceこれは、欠落しているストリームエラーを説明する可能性があります。これが問題ならこれらのサービスの開始順序をどのように保証しますか?
  2. これがどのように機能するのかはよくわかりませんが、systemctl数ヶ月前にJanus Gatewayの新機能を試したときにいくつかの間違いを犯した可能性がありますが、それ以降はすべての変更を以前に機能していたことに戻りました。systemctl無効なJanusゲートウェイ設定がキャッシュされ、起動時に必須コマンドの代わりに実行できますか?それでは、サービスを手動で再起動する必要がありますか?

助けてくれてありがとう!

ベストアンサー1

janus.service以降の部分が始まるjanus-stream.serviceようにするには、2行以上必要です。[Unit]janus.service

Wants=janus-stream.service
After=janus-stream.service

最初の行は必須であることを指定janus.servicejanus-stream.serviceますが、起動順序を指定しません。(時には、他のサービスを使用するサービスの場合と同様に問題ありませんが、ユーザーが実際にサービスに接続して特定のタスクを実行した後にのみ可能です。)

希望の開始順序を指定するには、このAfter=janus-stream.service行も必要です。

Requires=代わりに、依存関係を使用すると、依存関係がWants=満たされない場合、ブート操作全体が失敗と見なされ、ブートに失敗した場合、ブート時にシステムがパニックモードになるという副作用があります。おそらくjanus-stream.service...おそらく問題を解決するための最良の選択肢ではありません。

man systemd.unit説明する:

失敗したサービスを処理するときによりWants=強力なシステムを実装するには、代わりに使用する方が良い選択肢が多いです。Requires=

編集が完了したら、Tellをjanus.service実行して編集内容を適用するための設定とすべてのユニットファイルを再ロードする必要があります。systemctl daemon-reloadsystemd

おすすめ記事