在Linux中以编程方式启动GPSD守护进程

3

我正在进行一个项目,需要从GPS dongle中读取GPS值,并需要编程启动gpsd守护进程。

也就是说,我需要自动化以下命令: sudo gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock

在手动启动守护进程后,我能够通过代码读取坐标。但不知道如何通过代码启动守护进程。


2
避免在程序内部使用 sudo。也许您可以配置您的 udev,当插入或激活 dongle 时启动守护进程。 - Basile Starynkevitch
实际上,那就是我需要知道的...如何配置在插入 dongle 时启动守护进程。 - Taani
仔细研究 udev 的文档... - Basile Starynkevitch
然后告诉我们其他人 ;) - rob
2个回答

3

由于gpsd是一个守护进程,因此您可以将守护进程设置为在启动时自动运行。如何做到这一点取决于您使用的启动系统。例如,如果您使用systemd,则需要编写一个 gpsd.service 文件,类似于以下内容:

[Unit]
Description=GPSd daemon service file

[Service]
Type=forking
User=root
Group=dialout
TimeoutStartSec=0
ExecStart=/usr/local/sbin/gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock


[Install]
# Grouping mechanism that let systemd start groups of processes up at the same time
WantedBy=multi-user.target

然后将其安装在/lib/systemd/system中,最后使用以下命令。
$ sudo systemctl enable gpsd
$ sudo systemctl start gpsd

start命令只是将gpsd作为systemd守护进程运行,而无需重新启动系统。


1
对于 Debian,只需要这样:
dpkg-reconfigure gps

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接