/ tmpのUnixソケットは再起動時にディレクトリになります。

/ tmpのUnixソケットは再起動時にディレクトリになります。

私はraspi()でUbuntuベースのサーバーを実行しています6.5.0-1015-raspi #18-Ubuntu。このシステムでは、knxdKNXバスを実行し、KNXバスを自分のサーバーに公開してから、Dockerコンテナ内でHome Assitantを実行しました。knxdそしてdockersystemctlサービスで構成されています。

knxd/tmp/eibコマンドラインパラメータを使用してUNIXドメインソケットを生成するように設定します-u /tmp/eib。たとえば、systemctl startシステムの起動後にサービスを開始したときに機能します。

ただし、再起動後にそのドメインソケットが作成されないようにする所有/tmp/eibディレクトリがあります。その後(当然)起動時にクラッシュが発生します。ディレクトリを手動で削除すると、正しいソケットが作成され、正常に起動します。root:rootknxdknxdsudo rm -rf /tmp/eibsystemctl restart knxdknxd

# after reboot. With this in place, knxd crashes on startup.
$ ll -d /tmp/eib
drwxr-xr-x 2 root root 4096 Apr 27 09:33 /tmp/eib/
# If I manually remove the file...
$ sudo rm -rf /tmp/eib
$ sudo systemctl restart knxd
# ... wait a bit ...
# ... then knxd comes up successfully and creates the correct file+permissions
$ ll -d /tmp/eib
srwxr-xr-x 1 knxd knxd 0 Apr 27 09:39 /tmp/eib=
# now knxd and everything depending on it works fine

ファイルを作成した人をどのようにデバッグできますか?knxd再起動後に正常に表示されるようにどのように設定しますか?

答え1

knxdgithubリポジトリは次の場所にあります。https://github.com/knxd/knxdソケットが作成される場所について言及しました。

「Debian Jessieまたは他のシステムベースのディストリビューションを使用している場合は、/lib/systemd/system/knxd.socketknxdリスニングクライアントを開くための「標準」ソケットです。以前の-iまたは-uオプションは必要ありません。

/run/代わりに、以下を使用することをお勧めします/tmp

「knxd用のUnixソケットは存在しないでください。/tmpデフォルトは現在です。/run/knx必要に応じて1つ-u /tmp/eibまたは別のオプションを追加できますが、クライアントを変更することをお勧めします。」

関連情報