systemd / init привязывается к порту

У меня возникла проблема с запуском GPSD на Beaglebone Green. Я получаю ошибку привязки сокета:

root@BBG1:/etc/init# gpsd -D3 -n -N /dev/ttyUSB0
gpsd:INFO: launching (Version 3.16)
gpsd:ERROR: can't bind to IPv4 port gpsd, Address already in use
gpsd:ERROR: maybe gpsd is already running!
gpsd:ERROR: can't bind to IPv6 port gpsd, Address already in use
gpsd:ERROR: maybe gpsd is already running!
gpsd:INFO: command sockets creation failed, netlib errors -1, -1

Похоже, проблема распространена на этих мини-досках (включая малину Pi), но то, что кажется проблемой для большинства людей, не сработало для меня. Близко, как я могу судить, это потому, что systemd/init били gspd.

root@BBG1:/etc/init# netstat -lnpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:2947            0.0.0.0:*               LISTEN      1/init
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      375/connmand
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      493/sshd
tcp6       0      0 ::1:2947                :::*                    LISTEN      1/init
tcp6       0      0 :::8080                 :::*                    LISTEN      631/apache2
tcp6       0      0 :::80                   :::*                    LISTEN      1/init
tcp6       0      0 ::1:53                  :::*                    LISTEN      375/connmand
tcp6       0      0 :::22                   :::*                    LISTEN      493/sshd
tcp6       0      0 :::1880                 :::*                    LISTEN      1/init
tcp6       0      0 :::3000                 :::*                    LISTEN      1/init

Я пробовал:

изменить /lib/systemd/system/gpsd.socket, чтобы изменить ListenStream с [ f10] до 0.0.0.0:2947, но когда я перезагружаюсь, init привязывается к этому вместо этого (как видно из кода выше). sudo killall gspd, а затем снова перезапустить, но это, похоже, не помогает. измените /etc/default/gpsd на следующее:
START_DAEMON="true"
GPSD_OPTIONS=""
DEVICES="/dev/ttyUSB0"
USBAUTO="false"
GPSD_SOCKET="/var/run/gpsd.sock"
пользовательский сценарий загрузки в /etc/rc.local (предполагается, что он задерживает запуск gpsd, но он не работает, потому что файл startgpsd.txt никогда не обновляется)
#Start the gpsd daemon
/etc/booted/startgpsd.sh
exit 0
[ ! d3]

, который указывает на startgpsd.sh

    #!/bin/sh -e
    #Need to wait past boot so everything is done
    date "+%Y-%m-%d %H:%M:%S" > /startgpsd.txt
    sleep 2
    echo "Starting GPSD" >> /startgpsd.txt
    /usr/local/sbin/gpsd /dev/ttyUSB0 -G -n -F /var/run/gpsd.sock
    date "+%Y-%m-%d %H:%M:%S" >> /startgpsd.txt
    exit 0
    p

В какой-то момент, когда я обновил GSPD от v 3.11 (загружен с apt-get) до v 3.16 (загрузил двоичный файл и концерт + другой способ, чтобы я мог его построить), но он начал работать, но как только я перезагрузился, я вернулся к той же проблеме.

Есть ли способ остановить systemd от привязки к порту, чтобы вместо этого gpsd ( или это даже моя проблема)? Killing PID 1 не похоже на умную вещь, поэтому я еще не пробовал. Я почти готов уничтожить все и начать все сначала, но я подумал, что сначала попытаюсь использовать здесь «коллективную силу гения» (учитывая, что в прошлом я уже нашел несколько ответов на другие проблемы) .

Спасибо!

Изменить: добавление содержимого /lib/systemd/system/gpsd.socket

[Unit]
Description=GPS (Global Positioning System) Daemon Sockets

[Socket]
ListenStream=/var/run/gpsd.sock
ListenStream=[::1]:2947
ListenStream=0.0.0.0:2947
SocketMode=0600

[Install]
WantedBy=sockets.target
1
задан 31 August 2016 в 00:43

0 ответов

Другие вопросы по тегам:

Похожие вопросы: