Sie befinden sich hier: DG9VH WIKI » DMR - Themen » DV4mini » Automatischer Neustart der dv_serial auf einem Banana Pi Pro
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| dmr:dv4mini:automatischer_neustart_der_dv_serial_auf_einem_banana_pi_pro [2015/12/03 19:03] – angelegt dg9vh | dmr:dv4mini:automatischer_neustart_der_dv_serial_auf_einem_banana_pi_pro [2015/12/21 15:17] (aktuell) – dg9vh | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== Automatischer Neustart der dv_serial auf einem Banana Pi Pro ====== | ====== Automatischer Neustart der dv_serial auf einem Banana Pi Pro ====== | ||
| + | ===== Warum diese Skripte? ===== | ||
| + | Manchmal kann es unter verschiedenen Umständen zum Absturz der dv_serial kommen. Die Ursachen können vielfältig sein und werden hier nicht näher beleuchtet. Um dieses Problem zumindest automatisch zu beheben, sind nachstehende Scripte entstanden. | ||
| + | |||
| ===== Voraussetzungen ===== | ===== Voraussetzungen ===== | ||
| Das Script setzt voraus, dass die dv_serial unter / | Das Script setzt voraus, dass die dv_serial unter / | ||
| Zeile 9: | Zeile 12: | ||
| / | / | ||
| - | #!/bin/bash | ||
| - | ### BEGIN INIT INFO | ||
| - | # | ||
| - | # Provides: | ||
| - | # Required-Start: | ||
| - | # Required-Stop: | ||
| - | # Default-Start: | ||
| - | # Default-Stop: | ||
| - | # Short-Description: | ||
| - | | ||
| - | # | ||
| - | ### END INIT INFO | ||
| - | ## Fill in name of program here. | ||
| - | PROG=" | ||
| - | PROG_PATH="/ | ||
| - | PROG_ARGS="" | ||
| - | PIDFILE="/ | ||
| - | | ||
| - | start() { | ||
| - | if [ -e $PIDFILE ]; then | ||
| - | ## Program is running, exit with error. | ||
| - | echo " | ||
| - | exit 1 | ||
| - | else | ||
| - | cd $PROG_PATH | ||
| - | sudo -u pi / | ||
| - | echo "$PROG started" | ||
| - | touch $PIDFILE | ||
| - | sleep 2 | ||
| - | | ||
| - | | ||
| - | } | ||
| - | | ||
| - | stop() { | ||
| - | if [ -e $PIDFILE ]; then | ||
| - | ## Program is running, so stop it | ||
| - | echo "$PROG is running" | ||
| - | rm -f $PIDFILE | ||
| - | | ||
| - | echo "$PROG stopped" | ||
| - | else | ||
| - | ## Program is not running, exit with error. | ||
| - | echo " | ||
| - | exit 1 | ||
| - | fi | ||
| - | } | ||
| - | | ||
| - | ## Check to see if we are running as root first. | ||
| - | ## Found at | ||
| - | http:// | ||
| - | if [ "$(id -u)" != " | ||
| - | then echo "This script must be run as root" 1>&2 | ||
| - | exit 1 | ||
| - | fi | ||
| - | case " | ||
| - | start) | ||
| - | start | ||
| - | exit 0 | ||
| - | ;; | ||
| - | stop) | ||
| - | stop | ||
| - | exit 0 | ||
| - | ;; | ||
| - | reload|restart|force-reload) | ||
| - | stop | ||
| - | sleep 2 | ||
| - | start | ||
| - | exit 0 | ||
| - | ;; | ||
| - | **) | ||
| - | echo " | ||
| - | exit 1 | ||
| - | ;; | ||
| - | esac | ||
| - | exit 0 | ||
| - | | ||
| - | ### END | ||
| + | # | ||
| + | ### BEGIN INIT INFO | ||
| + | # | ||
| + | # Provides: | ||
| + | # Required-Start: | ||
| + | # Required-Stop: | ||
| + | # Default-Start: | ||
| + | # Default-Stop: | ||
| + | # Short-Description: | ||
| + | |||
| + | # | ||
| + | ### END INIT INFO | ||
| + | ## Fill in name of program here. | ||
| + | PROG=" | ||
| + | PROG_PATH="/ | ||
| + | PROG_ARGS="" | ||
| + | PIDFILE="/ | ||
| + | USER=" | ||
| + | |||
| + | start() { | ||
| + | if [ -e $PIDFILE ]; then | ||
| + | ## Program is running, exit with error. | ||
| + | echo " | ||
| + | exit 1 | ||
| + | else | ||
| + | ## Change from /dev/null to something like / | ||
| + | cd $PROG_PATH | ||
| + | echo " | ||
| + | sudo -u $USER / | ||
| + | echo "$PROG started" | ||
| + | touch $PIDFILE | ||
| + | sleep 2 | ||
| + | ionice --class 1 --pid=" | ||
| + | renice -10 --pid " | ||
| + | fi | ||
| + | } | ||
| + | |||
| + | stop() { | ||
| + | if [ -e $PIDFILE ]; then | ||
| + | ## Program is running, so stop it | ||
| + | echo "$PROG is running" | ||
| + | rm -f $PIDFILE | ||
| + | | ||
| + | echo "$PROG stopped" | ||
| + | else | ||
| + | ## Program is not running, exit with error. | ||
| + | echo " | ||
| + | exit 1 | ||
| + | fi | ||
| + | } | ||
| + | |||
| + | ## Check to see if we are running as root first. | ||
| + | ## Found at http:// | ||
| + | if [ "$(id -u)" != " | ||
| + | echo "This script must be run as root" 1>&2 | ||
| + | exit 1 | ||
| + | fi | ||
| + | |||
| + | case " | ||
| + | start) | ||
| + | start | ||
| + | exit 0 | ||
| + | ;; | ||
| + | stop) | ||
| + | stop | ||
| + | exit 0 | ||
| + | ;; | ||
| + | reload|restart|force-reload) | ||
| + | stop | ||
| + | sleep 2 | ||
| + | start | ||
| + | exit 0 | ||
| + | ;; | ||
| + | **) | ||
| + | echo " | ||
| + | exit 1 | ||
| + | ;; | ||
| + | esac | ||
| + | exit 0 | ||
| + | ### END | ||
| Zeile 120: | Zeile 126: | ||
| quasi 2 mal in der Minute (nach einer Pause von 30 Sekunden) prüft, ob | quasi 2 mal in der Minute (nach einer Pause von 30 Sekunden) prüft, ob | ||
| der Prozess noch vorhanden ist... es wird also automatisch nach dem | der Prozess noch vorhanden ist... es wird also automatisch nach dem | ||
| - | Start die dv_serial gestartet über den Watchdog... | + | Start die dv_serial gestartet über den Watchdog. |
| + | ===== Abschließendes ===== | ||
| + | Möchte man das Script auf einem Raspberry Pi einsetzen, ist der Installationspfad und der Benutzer des Programmaufrufs auf " | ||