いいですね。この質問にはさまざまなバリエーションがあることがわかります。関連性があるようなほとんどすべての項目を見ましたが、何も機能しません。
GPS情報を提供するUSBシリアルデバイスが/ dev / ttyGPSに設定されています。 GPSDをインストールして有効にしました。 gpsd.socketも同様です。問題なくこれらのサービスを手動で開始できます(または停止してから開始することもできます)。ただし、何らかの理由で起動すると起動しません。 gpsdのログ出力は次のとおりです。
systemd[1]: Dependency failed for GPS (Global Positioning System) Daemon. systemd[1]: Job gpsd.service/start failed with result 'dependency'.
これだけでも十分不思議だ。私はgpsd.socketを見てこれを見ました:
systemd[1]: gpsd.socket failed to listen on sockets: Address already in use systemd[1]: Failed to listen on GPS (Global Positioning System) Daemon Sockets. systemd[1]: Unit gpsd.socket entered failed state.
USBロードオプションを「true」と「false」に設定してみました。私はポート2947に何があるのか見てみましたが、何もありませんでした。 5秒ごとに自動的にサービスを再起動して問題を解決しようとしましたが、失敗した状態ではこの方法が機能しないようです。
起動時にポートがブロックされる理由を見つけるために私ができることを知っている人はいますか?または、起動が完了するまで開始を遅らせ、マニュアルのように起動することがうれしくない限り。これはCentOS 7システムにあります。非常にありがとう
編集:以下はgpsdサービスファイルです。
[Unit]
Description=GPS (Global Positioning System) Daemon
Requires=gpsd.socket
# Needed with chrony SOCK refclock
After=chronyd.service
[Service]
EnvironmentFile=-/etc/sysconfig/gpsd
ExecStart=/usr/sbin/gpsd -N $OPTIONS
[Install]
WantedBy=multi-user.target
Also=gpsd.socket
GPSd.ソケット:
[Unit]
Description=GPS (Global Positioning System) Daemon Sockets
[Socket]
ListenStream=/var/run/gpsd.sock
ListenStream=127.0.0.1:2947
SocketMode=0600
[Install]
WantedBy=sockets.target
そして、OPTIONSの/etc/sysconfig/gpsdファイルの内容
# Options for gpsd, including serial devices
OPTIONS="/dev/ttyGPS"
# Set to 'true' to add USB devices automatically via udev
USBAUTO="true"