好的,我知道这个问题有很多变体。我几乎浏览了所有看起来可能相关的内容,但没有任何效果。
我有一个 USB 串行设备,设置在 /dev/ttyGPS 上,提供 GPS 信息。我已经安装并启用了 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.socket:
[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"