我确实有一个在启动时启动并通过gpsd python api连接到gpsd的服务。因此,gpsd将在引导后立即启动。
如果我在系统运行时手动启动任何服务,一切工作正常。但是,当我重新启动系统时,service gpsd status将打印以下内容:
# service gpsd status
● gpsd.service - GPS (Global Positioning System) Daemon
Loaded: loaded (/lib/systemd/system/gpsd.service; indirect; vendor preset: enabled)
Active: active (running) since Tue 2020-07-21 08:15:47 EDT; 2min 47s ago
Process: 5659 ExecStart=/usr/sbin/gpsd $GPSD_OPTIONS $DEVICES (code=exited, status=0/SUCCESS)
Main PID: 5690 (gpsd)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/gpsd.service
└─5690 /usr/sbin/gpsd /dev/ttyUSB1
Jul 21 08:15:47 nvidia-desktop systemd[1]: Starting GPS (Global Positioning System) Daemon...
Jul 21 08:15:47 nvidia-desktop systemd[1]: Started GPS (Global Positioning System) Daemon.
Jul 21 08:15:47 nvidia-desktop gpsd[5690]: gpsd:ERROR: SER: device open of /dev/ttyUSB1 failed: No such file or directory - retrying read-only
Jul 21 08:15:47 nvidia-desktop gpsd[5690]: gpsd:ERROR: SER: read-only device open of /dev/ttyUSB1 failed: No such file or directory
Jul 21 08:15:47 nvidia-desktop gpsd[5690]: gpsd:ERROR: /dev/ttyUSB1: device activation failed.
Jul 21 08:15:47 nvidia-desktop gpsd[5690]: gpsd:ERROR: /dev/ttyUSB1: activation failed, freeing devicegpsd就是不能工作。
我的猜测是,gpsd-daemon试图在内核能够创建该设备之前打开/dev/ttyUSB1,然后进入错误状态。
我能做些什么来让它以一种干净的方式运行?
编辑:我目前的工作是在gpsd客户端脚本中进行休眠。
发布于 2020-07-21 20:46:18
我能做些什么才能让它以干净的方式运行?
让gpsd服务等待/dev/ttyUSB1。
编辑服务:systemctl edit gpsd.service,我认为它应该这样做:
[Unit]
BindsTo=dev-ttyUSB1.device
# or maybe also
After=dev-ttyUSB1.device一种真正“干净”的方式来精确匹配你的设备,那就是编写udev规则来匹配你的设备,创建一个特殊的/dev/your_device dev条目,然后等待并在你的systemd服务中专门打开那个设备。
https://stackoverflow.com/questions/63014509
复制相似问题