Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Überwachung iobroker auf Absturz

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Überwachung iobroker auf Absturz

    This topic has been deleted. Only users with topic management privileges can see it.
    • sissiwup
      sissiwup last edited by

      Hallo,

      folgendes habe ich gebastelt, um meinen iobroker neu zu starten, falls er mal das zeitliche segnet (passiert bei mir so alle paar Tage)

      test-iobroker.sh:

      #!/bin/bash
      logfile=/opt/test-iobroker.log
      
      if [ $(ls -1 /opt | grep -c noiobroker) = 0 ];
      then 
        echo "$(date) ioBroker sollte laufen"
      else
        echo "$(date) ioBroker gestoppt"
        exit 0
      fi
      
      echo "$(date) Teste"
      
      if [ $(ps -A | grep -c io.js-controlle) = 0 ];
      then 
        echo "$(date) io.js-controlle laueft nicht" >> $logfile
        /opt/kill-iobroker.sh >> $logfile
        echo "$(date) Prozesse gestoppt" >> $logfile
        sleep 60
        echo "$(date) Starte iobroker" >> $logfile
        cd /opt/iobroker
        iobroker start >> $logfile
        echo "$(date) iobroker gestartet" >> $logfile 
      else
        echo "$(date) alle ok" >> $logfile
      fi
      
      

      Es wird geprüft ob die Datei /opt/noiobroker vorhanden ist, wenn ja, dann soll aktuell auch kein iobroker laufen

      z.B. beim Backup

      #!/bin/bash
      echo "$(date) Starte Backup"
      touch /opt/noiobroker
      

      Am Ende des Scripts natürlich nicht vergessen /opt/noiobroker zu löschen

      echo "$(date) Beende Backup"
      rm /opt/noiobroker
      
      

      Um das ganze zu automatisieren:

      /etc/crontab ergänzen um:

      (*/x = alle x Minuten)

      # /etc/crontab: system-wide crontab
      # Unlike any other crontab you don't have to run the `crontab'
      # command to install the new version when you edit this file
      # and files in /etc/cron.d. These files also have username fields,
      # that none of the other crontabs do.
      
      SHELL=/bin/sh
      PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
      
      # m h dom mon dow user	command
      17 *	* * *	root    cd / && run-parts --report /etc/cron.hourly
      25 6	* * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
      47 6	* * 7	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
      52 6	1 * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
      0  4    * * *   root    /opt/backup.sh >> /opt/backup.log
      */5 *   * * *   root    /opt/test-iobroker.sh >> /opt/test-iobroker.log
      #
      
      

      Und zu guter letzt noch das

      kill-iobroker.sh

      #!/bin/bash
      killall -9 io.js-controller
      killall -9 io.admin.0
      pgrep -f '^io.*' |xargs kill -9
      pgrep -f '^node-red*' |xargs kill -9
      
      

      Hier ggf. noch weitere Adapter ergänzen.

      Wenn ihr nach dem Neustart im log Meldungen seht das Adapter neu gestartet werden aber noch welche laufen, dann habt ihr hier einen Adapter vergessen.

      1 Reply Last reply Reply Quote 0
      • Bluefox
        Bluefox last edited by

        Hat OSX auch killall Kommando?

        1 Reply Last reply Reply Quote 0
        • sissiwup
          sissiwup last edited by

          @Bluefox:

          Hat OSX auch killall Kommando? `

          Ja:

          KILLALL(1)                BSD General Commands Manual               KILLALL(1)
          
          NAME
               killall -- kill processes by name
          
          SYNOPSIS
               killall [-delmsvz] [-help] [-u user] [-t tty] [-c procname] [-SIGNAL]
                       [procname ...]
          
          DESCRIPTION
               The killall utility kills processes selected by name, as opposed to the
               selection by pid as done by kill(1).  By default, it will send a TERM
               signal to all processes with a real UID identical to the caller of
               killall that match the name procname.  The super-user is allowed to kill
               any process.
          
               The options are as follows:
          
                     -v          Be more verbose about what will be done.
          
                     -e          Use the effective user ID instead of the (default) real
                                 user ID for matching processes specified with the -u
                                 option.
          
                     -help       Give a help on the command usage and exit.
          
                     -l          List the names of the available signals and exit, like
                                 in kill(1).
          
                     -m          Match the argument procname as a (case sensitive) regu-
                                 lar expression against the names of processes found.
                                 CAUTION!  This is dangerous, a single dot will match
                                 any process running under the real UID of the caller.
          
                     -s          Show only what would be done, but do not send any sig-
                                 nal.
          
                     -d          Print detailed information about the processes matched,
                                 but do not send any signal.
          
                     -SIGNAL     Send a different signal instead of the default TERM.
                                 The signal may be specified either as a name (with or
                                 without a leading SIG), or numerically.
          
                     -u user     Limit potentially matching processes to those belonging
                                 to the specified user.
          
                     -t tty      Limit potentially matching processes to those running
                                 on the specified tty.
          
                     -c procname
                                 When used with the -u or -t flags, limit potentially
                                 matching processes to those matching the specified
                                 procname.
          
                     -z          Do not skip zombies.  This should not have any effect
                                 except to print a few error messages if there are zom-
                                 bie processes that match the specified pattern.
          
          ALL PROCESSES
               Sending a signal to all processes with uid XYZ is already supported by
               kill(1).  So use kill(1) for this job (e.g. $ kill -TERM -1 or as root $
               echo kill -TERM -1 | su -m <user>)
          
          EXIT STATUS
               The killall command will respond with a short usage message and exit with
               a status of 2 in case of a command error.  A status of 1 will be returned
               if either no matching process has been found or not all processes have
               been signalled successfully.  Otherwise, a status of 0 will be returned.
          
          DIAGNOSTICS
               Diagnostic messages will only be printed if requested by -d options.
          
          SEE ALSO
               kill(1), sysctl(3)
          
          HISTORY
               The killall command appeared in FreeBSD 2.1\.  It has been modeled after
               the killall command as available on other platforms.
          
          AUTHORS
               The killall program was originally written in Perl and was contributed by
               Wolfram Schneider, this manual page has been written by Jorg Wunsch.  The
               current version of killall was rewritten in C by Peter Wemm using
               sysctl(3).</user> 
          
          1 Reply Last reply Reply Quote 0
          • T
            tesso last edited by

            Das killen der Prozesse lässt sich universeller lösen.

             pgrep -f '^io.*' |xargs kill -9
            pgrep -f '^node-red*' |xargs kill -9
            
            1 Reply Last reply Reply Quote 0
            • sissiwup
              sissiwup last edited by

              Hallo,

              Danke. Hab ich so übernommen.

              1 Reply Last reply Reply Quote 0
              • sissiwup
                sissiwup last edited by

                Anpassungen auf iobroker 0.8.0

                @sissiwup:

                Hallo,

                if [ $(ps -A | grep -c iobroker.js) = 0 ];
                then 
                  echo "$(date) iobroker.js-controller laueft nicht" >> $logfile
                
                

                Und zu guter letzt noch das

                kill-iobroker.sh

                #!/bin/bash
                killall -9 iobroker.js-controller
                killall -9 io.admin.0
                pgrep -f '^iobroker.*' |xargs kill -9
                pgrep -f '^io.*' |xargs kill -9
                pgrep -f '^node-red*' |xargs kill -9
                
                ```` ` 
                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate
                FAQ Cloud / IOT
                HowTo: Node.js-Update
                HowTo: Backup/Restore
                Downloads
                BLOG

                567
                Online

                31.8k
                Users

                80.0k
                Topics

                1.3m
                Posts

                3
                6
                2343
                Loading More Posts
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes
                Reply
                • Reply as topic
                Log in to reply
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                The ioBroker Community 2014-2023
                logo