Запустить службу gpsd при перезагрузке

Я использую шапку GPS от adafruit.

Согласно документу

Запустите gpsd и направьте его на использование HW UART. Просто введите следующую команду:

sudo gpsd /dev/ttyAMA0 -F /var/run/gpsd.sock

Хотя это действительно работает, я пытаюсь найти способ автоматически вызывать это при перезагрузке. Я пытался поместить его в файл .py и вызывать его, когда машина перезагружается в cronjob, но это не работает. (Неверный синтаксис). Надеюсь, мне помогут в этом.

Спасибо


person Niana    schedule 10.04.2016    source источник


Ответы (1)


Самый быстрый и простой способ — поместить приведенную выше команду в /etc/rc.local файл (без sudo!). Это сценарий оболочки, вызываемый при загрузке.

Более правильный способ сделать это — создать служебный файл в каталоге /etc/init.d. Чтобы начать просмотр любого простого файла в этом каталоге, скопируйте и измените его и убедитесь, что он является исполняемым. Базовый (непроверенный) пример:

#!/bin/sh -e
### BEGIN INIT INFO
# Provides:          gpsd
# Required-Start:    
# Required-Stop:
# Default-Start:     1 2 3 4 5
# Default-Stop:
# Short-Description: Run my GPSd
### END INIT INFO
#

case "$1" in
  start)
    gpsd /dev/ttyAMA0 -F /var/run/gpsd.sock
    ;;
  stop)
    killall -KILL gpsd
    ;;
  restart|force-reload)
    killall -KILL gpsd
    sleep 3
    gpsd /dev/ttyAMA0 -F /var/run/gpsd.sock
    ;;
  *) echo "Usage: $0 {start|stop|restart|force-reload}" >&2; exit 1 ;;
esac

После этого убедитесь, что он включен при загрузке, чтобы ваша система автоматически вызывала service gpsd start. Это делается с помощью команды update-rc.d в дистрибутивах на основе Debian и systemctl в RHEL.

Если вы сообщите нам свой дистрибутив Linux, мы сможем уточнить его.

person urban    schedule 10.04.2016
comment
это малиновый пи, так что это rasberrian jessie. - person Niana; 10.04.2016
comment
Не уверен, что это связано, но инструкции по установке GPS Hat просили убить этот gpsd serv.ce. цитата здесь. Обратите внимание, что если вы используете Raspbian Jessie или более позднюю версию, вам необходимо отключить службу systemd, которую устанавливает gpsd. У этой службы systemd прослушивает локальный сокет и запускает gpsd, когда к ней подключаются клиенты, однако она также будет мешать другим экземплярам gpsd, которые запускаются вручную (как в этом руководстве). Вам нужно будет отключить службу gpsd systemd, выполнив следующие команды: - person Niana; 10.04.2016
comment
Похоже, у вас уже есть файл gpsd в /etc/init.d, который отключен, и вы просто хотите создать новый, работающий по-другому? Может быть, тогда /etc/rc.local будет лучшим решением... не уверен! - person urban; 10.04.2016
comment
Я запустил sudo nano /etc/rc.local и поместил gpsd /dev/ttyAMA0 -F /var/run/gpsd.sock в конец (после части о печати IP), но, похоже, он не запускается. Нужно ли раскомментировать первую строку? - person Niana; 10.04.2016
comment
Можете ли вы опубликовать свой rc.local где-нибудь? Мой пустой, но по общим правилам он начинается с шебанга (#!/bin/sh -e) и заканчивается на exit 0. Все ваши команды должны быть между ними (обратите внимание, что строка shebang является специальным комментарием и должна оставаться комментарием) - person urban; 10.04.2016
comment
exit 0 закрывает скрипт с кодом 0 == успех :) После этого ничего не выполняется - person urban; 10.04.2016
comment
кстати - примите, если этот ответ помог вам, так как я борюсь за репутацию 1K :) - person urban; 10.04.2016
comment
Давайте продолжим обсуждение в чате. - person Niana; 10.04.2016