저는 raspi() 에서 Ubuntu 기반 서버를 실행하고 있습니다 6.5.0-1015-raspi #18-Ubuntu
. 이 시스템에서는 knxd
KNX 버스를 실행하고 KNX 버스를 내 서버에 노출한 다음 Docker 컨테이너 내에서 Home Assitant를 실행했습니다. knxd
그리고 docker
systemctl 서비스로 구성됩니다.
knxd
/tmp/eib
명령줄 매개변수를 사용하여 UNIX 도메인 소켓을 생성하도록 구성합니다 -u /tmp/eib
. 예를 들어 systemctl start
시스템이 실행된 후 서비스를 시작할 때 작동합니다 .
그러나 재부팅 후 해당 도메인 소켓이 생성되지 않도록 하는 소유 /tmp/eib
의 디렉터리 가 있습니다. 그런 다음 (당연히) 시작 시 충돌이 발생합니다. 디렉토리를 수동으로 삭제하면 올바른 소켓이 생성되고 성공적으로 시작됩니다 .root:root
knxd
knxd
sudo rm -rf /tmp/eib
systemctl restart knxd
knxd
# 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
knxd
github 저장소는 다음 위치에 있습니다.https://github.com/knxd/knxd소켓이 생성되는 위치를 언급했습니다.
"Debian Jessie 또는 기타 시스템 기반 배포판을 사용하는 경우 /lib/systemd/system/knxd.socket
knxd 청취 클라이언트를 열기 위한 "표준" 소켓입니다. 더 이상 이전 -i 또는 -u 옵션이 필요하지 않습니다."
/run/
대신 다음 을 사용하는 것이 좋습니다 /tmp
.
"knxd용 Unix 소켓은 에 있으면 안 됩니다 . /tmp
기본값은 이제 입니다 /run/knx
. 필요한 경우 하나 -u /tmp/eib
또는 다른 옵션을 추가할 수 있지만 클라이언트를 수정하는 것이 좋습니다."