Ankündigung

Einklappen
Keine Ankündigung bisher.

Beenden / Neu Starten schlägt teilweise fehl

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • ivande
    antwortet
    Code:
    sudo nano /lib/systemd/system/smarthome.service
    
    [Unit]
    Description=SmartHomeNG daemon
    After=network.target
    After=knxd.service
    After=knxd.socket
    
    [Service]
    Type=forking
    ExecStart=/usr/bin/python3 /usr/local/smarthome/bin/smarthome.py
    User=smarthome
    PIDFile=/usr/local/smarthome/var/run/smarthome.pid
    Restart=on-abort
    
    [Install]
    WantedBy=default.target

    Code:
    sudo systemctl status smarthome.service
    ● smarthome.service - SmartHomeNG daemon
       Loaded: loaded (/lib/systemd/system/smarthome.service; enabled; vendor preset: enabled)
       Active: active (running) since Tue 2019-12-03 22:09:50 CET; 3min 56s ago
      Process: 389 ExecStart=/usr/bin/python3 /usr/local/smarthome/bin/smarthome.py (code=exited, status=0/SUCCESS)
     Main PID: 635 (python3)
        Tasks: 50 (limit: 4915)
       CGroup: /system.slice/smarthome.service
               ├─635 /usr/bin/python3 /usr/local/smarthome/bin/smarthome.py
               ├─801 /bin/sh -c /usr/bin/python3 /usr/local/smarthome/bin/smarthome.py -r
               └─802 /usr/bin/python3 /usr/local/smarthome/bin/smarthome.py -r
    
    Dez 03 22:09:58 debian64v10 systemd[1]: Starting SmartHomeNG daemon...
    Dez 03 22:09:50 debian64v10 python3[389]: Daemon PID 635
    Dez 03 22:09:50 debian64v10 systemd[1]: smarthome.service: Supervising process 635 which is not our child. We'll most likely not notice when it exits.
    Dez 03 22:09:50 debian64v10 systemd[1]: Started SmartHomeNG daemon.
    
    
    
    
    sudo systemctl status smarthome.service
    ● smarthome.service - SmartHomeNG daemon
       Loaded: loaded (/lib/systemd/system/smarthome.service; enabled; vendor preset: enabled)
       Active: inactive (dead) since Tue 2019-12-03 22:14:02 CET; 11s ago
      Process: 389 ExecStart=/usr/bin/python3 /usr/local/smarthome/bin/smarthome.py (code=exited, status=0/SUCCESS)
     Main PID: 635 (code=exited, status=0/SUCCESS)
    
    Dez 03 22:09:58 debian64v10 systemd[1]: Starting SmartHomeNG daemon...
    Dez 03 22:09:50 debian64v10 python3[389]: Daemon PID 635
    Dez 03 22:09:50 debian64v10 systemd[1]: smarthome.service: Supervising process 635 which is not our child. We'll most likely not notice when it exits.
    Dez 03 22:09:50 debian64v10 systemd[1]: Started SmartHomeNG daemon.
    Zuletzt geändert von ivande; 03.12.2019, 22:18.

    Einen Kommentar schreiben:


  • TCr82
    antwortet
    Wie sieht deine Dienst Einstellung aus? Ich vermute du benutzt systemd?
    Ich vermute, dass der eben die eine PID Überwacht - die dann eben beim Restart gekiillt wird, und dass er dann denkt der Prozess ist beendet und macht dann alles dicht?

    Edit: hier mal meine, damit habe ich eben mal einen restart über das Admin Interface getestet und das hatte funktioniert:
    Code:
    cat /etc/systemd/system/smarthome.service
    [Unit]
    Description=SmartHomeNG daemon
    After=network.target
    After=knxd.service
    After=owserver.service
    
    [Service]
    Type=forking
    ExecStart=/usr/bin/python3 /usr/local/smarthome-dev/bin/smarthome.py
    User=smarthome
    PIDFile=/usr/local/smarthome-dev/var/run/smarthome.pid
    Restart=on-abort
    
    [Install]
    WantedBy=multi-user.target
    Wobei ich glaube, er hat den Dienst sogar auch als Neu gestartet betrachtet:

    Code:
    # systemctl status smarthome.service
    ● smarthome.service - SmartHomeNG daemon
       Loaded: loaded (/etc/systemd/system/smarthome.service; enabled; vendor preset: enabled)
       Active: active (running) since Tue 2019-12-03 08:50:53 CET; 2min 12s ago
      Process: 6779 ExecStart=/usr/bin/python3 /usr/local/smarthome-dev/bin/smarthome.py (code=exited, status=0/SUCCESS)
     Main PID: 6804 (python3)
        Tasks: 30 (limit: 4226)
       CGroup: /system.slice/smarthome.service
               └─6804 /usr/bin/python3 /usr/local/smarthome-dev/bin/smarthome.py
    
    Dez 03 08:50:51 zentrale systemd[1]: Starting SmartHomeNG daemon...
    Dez 03 08:50:53 zentrale python3[6779]: Daemon PID 6804
    Dez 03 08:50:53 zentrale systemd[1]: Started SmartHomeNG daemon.
    Zuletzt geändert von TCr82; 03.12.2019, 08:54.

    Einen Kommentar schreiben:


  • ivande
    antwortet
    wenn ich SH über die Konsole starte
    Code:
     python3 /usr/local/smarthome/bin/smarthome.py
    dann lässt sich SH über das admin-interface neu starten.

    wenn SH als Dienst gestartet wird
    Code:
    sudo systemctl start smarthome.service
    dann ist dies der letzte log-Eintrag:
    Code:
    2019-12-01  12:09:36 WARNING  __main__          SmartHomeNG stopped
    Gruß Ivan

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Das Admin Interface interessiert sich nicht für den Serivce. Es startet eine weitere Instanz von smarthome.py mit der Option -r.

    Die neue Instanz führt durch die restart Option folgende Befehle aus, bevor sie sich zu starten versucht:
    Code:
    time.sleep(5)
    lib.daemon.kill(PIDFILE, 30)
    - 5 Sekunden warten
    und danach
    - Versuch den alten Prozess zu beenden (die Process ID wird dazu aus dem PIDFILE genommen
    - 30 Sekunden warten, ob der alte shng Prozess sich ordnungsgemäß beendet
    - nach 30 Sekunden versuchen den Prozess (falls er noch läuft) zu killen

    Danach starten die neue Instanz normal.

    Probleme können nur auftreten, falls die laufende Instanz sich nicht innerhalb von 30 Sekunden beendet.

    Zum Testen könnt ihr die Wartezeit mal erhöhen:

    In bin/smarthome.py ab Zeile 1220:
    Code:
        elif args.restart:
            time.sleep(5)
            lib.daemon.kill(PIDFILE, 30)
            pass
        elif args.debug:
    im Aufruf von lib.daemon.kill mal den 2. Parameter auf eine Zeit größer 30 Sekunden setzen

    Einen Kommentar schreiben:


  • ivande
    antwortet
    wie ich das sehe werden von telegram alle threads beendet:

    Code:
    019-11-30  09:56:58 DEBUG    telegram.ext.dispatcher Waiting for async thread 1/4 to end
    2019-11-30  09:56:58 DEBUG    telegram.ext.dispatcher Closing run_async thread 1289ae16-9d82-40d2-af96-f5bc6b393546_0/4
    2019-11-30  09:56:58 DEBUG    telegram.ext.dispatcher Closing run_async thread 1289ae16-9d82-40d2-af96-f5bc6b393546_1/4
    2019-11-30  09:56:58 DEBUG    telegram.ext.dispatcher Closing run_async thread 1289ae16-9d82-40d2-af96-f5bc6b393546_2/4
    2019-11-30  09:56:58 DEBUG    telegram.ext.dispatcher Closing run_async thread 1289ae16-9d82-40d2-af96-f5bc6b393546_3/4
    2019-11-30  09:56:58 DEBUG    telegram.ext.dispatcher async thread 1/4 has ended
    2019-11-30  09:56:58 DEBUG    telegram.ext.dispatcher Waiting for async thread 2/4 to end
    2019-11-30  09:56:58 DEBUG    telegram.ext.dispatcher async thread 2/4 has ended
    2019-11-30  09:56:58 DEBUG    telegram.ext.dispatcher Waiting for async thread 3/4 to end
    2019-11-30  09:56:58 DEBUG    telegram.ext.dispatcher async thread 3/4 has ended
    2019-11-30  09:56:58 DEBUG    telegram.ext.dispatcher Waiting for async thread 4/4 to end
    2019-11-30  09:56:58 DEBUG    telegram.ext.dispatcher async thread 4/4 has ended
    2019-11-30  09:56:58 DEBUG    telegram.ext.updater Waiting for Telegram Dispatcher thread to end
    2019-11-30  09:56:58 DEBUG    telegram.ext.updater Telegram Dispatcher thread has ended
    2019-11-30  09:56:58 DEBUG    telegram.ext.updater Waiting for Telegram Updater thread to end
    
    2019-11-30  09:56:59 DEBUG    telegram.ext.updater Timed out getting Updates: Timed out
    2019-11-30  09:56:59 DEBUG    telegram.ext.updater updater - ended
    2019-11-30  09:56:59 DEBUG    telegram.ext.updater Telegram Updater thread has ended
    2019-11-30  09:56:59 DEBUG    plugins.telegram  telegram plugin stopped
    
    2019-11-30  09:57:06 WARNING  __main__          SmartHomeNG stopped
    wenn ich das telegram-plugin raus nehme restartet SH über das admin interface bei mir auch nicht,..

    über die Konsole jedoch kann ich sh neu starten. (mit und ohne telegram-plugin)
    sudo systemctl restart smarthome.service

    threads scheinen alle geschlossen zu sein:
    Code:
    top - 13:41:44 up  3:34,  1 user,  load average: 0,01, 0,11, 0,09
    Threads:   0 total,   0 running,   0 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0,0 us,  0,0 sy,  0,0 ni,100,0 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
    KiB Mem :  4050964 total,  3391316 free,   220392 used,   439256 buff/cache
    KiB Swap:  4192252 total,  4192252 free,        0 used.  3590080 avail Mem
    
      PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND


    smarthome@debian64v10:~$ sudo systemctl status smarthome.service
    ● smarthome.service - SmartHomeNG daemon
    Loaded: loaded (/lib/systemd/system/smarthome.service; enabled; vendor preset: enabled)
    Active: inactive (dead) since Sat 2019-11-30 13:49:09 CET; 17s ago
    Process: 2426 ExecStart=/usr/bin/python3 /usr/local/smarthome/bin/smarthome.py (code=exited, status=0/SUCCESS)
    Main PID: 2432 (code=exited, status=0/SUCCESS)

    Nov 30 13:42:59 debian64v10 systemd[1]: Starting SmartHomeNG daemon...
    Nov 30 13:42:59 debian64v10 python3[2426]: Daemon PID 2432
    Nov 30 13:42:59 debian64v10 systemd[1]: smarthome.service: Supervising process 2432 which is not our child. We'll most likely not notice when it exits.
    Nov 30 13:42:59 debian64v10 systemd[1]: Started SmartHomeNG daemon.

    ​​​​​​​

    Einen Kommentar schreiben:


  • mode
    antwortet
    kill -9 meinst du? Weil kill alleine in dem Fall auch nicht reicht.
    Könnte man nicht als Workaround beim Beenden für smarthomeng die telegram threads hard (also kill -9 art) beenden?

    Einen Kommentar schreiben:


  • Msinn
    antwortet
    Das Problem tritt „nur“ auf, weil SmartHomeNG sich ordnungsgemäß beenden möchte. Wenn andere Programme endlos laufen oder per kill beendet werden, haben sie das Problem nicht.

    Einen Kommentar schreiben:


  • mode
    antwortet
    Meinst du es macht Sinn hier ein Issue aufzumachen?
    https://github.com/python-telegram-b...ram-bot/issues
    Oder tritt dieser Fehler nur in Zusammenspiel mit SmarthomeNG auf?

    Einen Kommentar schreiben:


  • bmx
    antwortet
    Zitat von mode Beitrag anzeigen
    Wenn ich das könnte, würde ich es tun
    Ja, das kenne ich gut ...

    Einen Kommentar schreiben:


  • mode
    antwortet
    Du kannst ja das Problem fixen
    Wenn ich das könnte, würde ich es tun

    Einen Kommentar schreiben:


  • bmx
    antwortet
    Der Thread, der auf Telegram wartet bekommt das schlicht nicht mit. Das müsste innerhalb der externen Lib geändert werden und da haben wir keinen Zugang zu. Du kannst ja das Problem fixen und den Entwicklern einen PR geben, vielleicht bauen die das dann ein.

    Einen Kommentar schreiben:


  • mode
    antwortet
    Stimmt, sobald man Telegram rausnimmt ist das beenden kein Problem. Aus welchem Grund tritt dieses Problem auf?

    Einen Kommentar schreiben:


  • bmx
    antwortet
    Ich tippe auf das telegram Plugin.Das kann bis zu zwei Minuten brauchen. Es gibt einen Parameter long_polling_timeout den Du mal setzen kannst. Ob das was hilft in Deinem Fall, weiß ich nicht. Es kann auch derzeit IMHO nicht anders gelöst werden.

    Einen Kommentar schreiben:


  • mode
    hat ein Thema erstellt Beenden / Neu Starten schlägt teilweise fehl

    Beenden / Neu Starten schlägt teilweise fehl

    Hallo,

    ich habe es relativ oft (ca 30% aller Fälle) dass sich SmarthomeNG nicht beenden bzw neustarten lässt.
    Egal ob ich mit kill oder smarthome.py -s arbeite, bei Stopping Plugins bleibt es oft stehen. Teilweise beendet es sich dann noch nach 30 Sekunden. Teilweise muss kill -9 herhalten.
    Woran liegt das? Kann ich feststellen welches Plugin sich hier nicht beenden lassen will?
    Ich habe folgende im Einsatz
    • Alexa4p3
    • Artnet
    • BackendServer
    • cli
    • database
    • enigma2
    • ical
    • knx
    • mqtt
    • network
    • onewire
    • telegram
    • visu_websocket

    SmarthomeNG und Plugins sind auf dem Stand des aktuellen Master Branches.

    LG

    mode

Lädt...
X