Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
dmr:dv4mini:automatischer_neustart_der_dv_serial_auf_einem_banana_pi_pro [2015/12/03 19:04] – [Skripte] dg9vhdmr: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 /home/bananapi/DV4mini Das Script setzt voraus, dass die dv_serial unter /home/bananapi/DV4mini
Zeile 9: Zeile 12:
 /etc/init.d/dv_serial.sh /etc/init.d/dv_serial.sh
  
-      #!/bin/bash 
-      ### BEGIN INIT INFO 
-      # 
-      # Provides:             dv_serial 
-      # Required-Start:       $remote_fs 
-      # Required-Stop:        $remote_fs 
-      # Default-Start:        2 3 4 5 
-      # Default-Stop:         0 1 6 
-      # Short-Description:    dv_serial initscript 
-       
-      # 
-      ### END INIT INFO 
-      ## Fill in name of program here. 
-      PROG="dv_serial" 
-      PROG_PATH="/home/bananapi/DV4mini/" 
-      PROG_ARGS="" 
-      PIDFILE="/var/run/dv_serial.pid" 
-       
-      start() { 
-            if [ -e $PIDFILE ]; then 
-                ## Program is running, exit with error. 
-                echo "Error! $PROG is currently running!" 1>&2 
-                exit 1 
-            else 
-               cd $PROG_PATH 
-               sudo -u pi /usr/bin/stdbuf -i0 -o0 -e0 ./$PROG $PROG_ARGS 2>&1 >> /var/log/dv_serial.log &    
-               echo "$PROG started"  
-               touch $PIDFILE  
-               sleep 2  
-               ionice --class 1 --pid="$(pidof dv_serial)"  
-               renice -10 --pid "$(pidof dv_serial)" fi 
-      } 
-       
-      stop() { 
-            if [ -e $PIDFILE ]; then 
-                ## Program is running, so stop it 
-               echo "$PROG is running" 
-               rm -f $PIDFILE 
-               killall $PROG 
-               echo "$PROG stopped" 
-            else 
-                ## Program is not running, exit with error. 
-                echo "Error! $PROG not started!" 1>&2 
-                exit 1 
-            fi 
-      } 
-       
-      ## Check to see if we are running as root first. 
-      ## Found at http://www.cyberciti.biz/tips/shell-root-user-check-script.html  
-      if [ "$(id -u)" != "0" ];  
-            then echo "This script must be run as root" 1>&2 
-            exit 1 
-      fi 
-      case "$1" in 
-            start) 
-                start 
-                exit 0 
-            ;; 
-            stop) 
-                stop 
-                exit 0 
-            ;; 
-            reload|restart|force-reload) 
-                stop 
-                sleep 2 
-                start 
-                exit 0 
-            ;; 
-            **) 
-                echo "Usage: $0 {start|stop|reload}" 1>&2 
-                exit 1 
-            ;; 
-      esac 
-      exit 0 
-       
-      ### END 
  
 + #!/bin/bash
 + ### BEGIN INIT INFO
 + #
 + # Provides:             dv_serial
 + # Required-Start:       $remote_fs
 + # Required-Stop:        $remote_fs
 + # Default-Start:        2 3 4 5
 + # Default-Stop:         0 1 6
 + # Short-Description:    dv_serial initscript
 +
 + #
 + ### END INIT INFO
 + ## Fill in name of program here.
 + PROG="dv_serial"
 + PROG_PATH="/home/bananapi/DV4mini/"
 + PROG_ARGS=""
 + PIDFILE="/var/run/dv_serial.pid"
 + USER="bananapi"
 +
 + start() {
 +       if [ -e $PIDFILE ]; then
 +           ## Program is running, exit with error.
 +           echo "Error! $PROG is currently running!" 1>&2
 +           exit 1
 +       else
 +           ## Change from /dev/null to something like /var/log/$PROG if you want to save output.
 +           cd $PROG_PATH
 +           echo "******* RESTART of dv_serial *******" >> /var/log/dv_serial.log
 +           sudo -u $USER /usr/bin/stdbuf -i0 -o0 -e0 ./$PROG $PROG_ARGS 2>&1 >> /var/log/dv_serial.log &
 +           echo "$PROG started"
 +           touch $PIDFILE
 +           sleep 2
 +           ionice --class 1 --pid="$(pidof dv_serial)"
 +           renice -10 --pid "$(pidof dv_serial)"
 +       fi
 + }
 +
 + stop() {
 +       if [ -e $PIDFILE ]; then
 +           ## Program is running, so stop it
 +          echo "$PROG is running"
 +          rm -f $PIDFILE
 +          killall $PROG
 +          echo "$PROG stopped"
 +       else
 +           ## Program is not running, exit with error.
 +           echo "Error! $PROG not started!" 1>&2
 +           exit 1
 +       fi
 + }
 +
 + ## Check to see if we are running as root first.
 + ## Found at http://www.cyberciti.biz/tips/shell-root-user-check-script.html
 + if [ "$(id -u)" != "0" ]; then
 +       echo "This script must be run as root" 1>&2
 +       exit 1
 + fi
 +
 + case "$1" in
 +       start)
 +           start
 +           exit 0
 +       ;;
 +       stop)
 +           stop
 +           exit 0
 +       ;;
 +       reload|restart|force-reload)
 +           stop
 +           sleep 2
 +           start
 +           exit 0
 +       ;;
 +       **)
 +           echo "Usage: $0 {start|stop|reload}" 1>&2
 +           exit 1
 +       ;;
 + esac
 + exit 0
 + ### END
  
  
Zeile 119: 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 "pi" anzupassen (also die Stellen, wo bananapi steht, durch pi ersetzen).