Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. ioBroker Allgemein
  4. IObroker VM braucht ewig lange zum runterfahren (Grund Redis - Erneut)

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.6k

IObroker VM braucht ewig lange zum runterfahren (Grund Redis - Erneut)

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
abhängigkeit redis-server
31 Beiträge 7 Kommentatoren 2.4k Aufrufe 10 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • AlCalzoneA AlCalzone

    Die Datei die du suchst ist /lib/systemd/system/iobroker.service. Diese sieht aktuell in etwa so aus (ein paar Variablen sind ersetzt):

    [Unit]
    Description=ioBroker Server
    Documentation=http://iobroker.net
    After=network.target
    
    [Service]
    Type=simple
    User=$IOB_USER
    Environment="NODE=\$(which node)"
    ExecStart=/bin/bash -c '\${NODE} $CONTROLLER_DIR/controller.js'
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    EOF
    

    Diese kannst du mit sudo nano /lib/systemd/system/iobroker.service editieren.

    Es müsste reichen, den ersten Block zu ändern zu:

    [Unit]
    Description=ioBroker Server
    Documentation=http://iobroker.net
    After=network.target redis.service
    Wants=redis.service
    

    Lass mich bitte wissen, ob das funktioniert. Dann kann ich das in den Installer aufnehmen.

    BlackmikeB Offline
    BlackmikeB Offline
    Blackmike
    schrieb am zuletzt editiert von Blackmike
    #9

    @AlCalzone So... deine Änderung tuts: Das gab mir ja keine Ruhe, bisschen über VPN gespielt.
    Ergebnisse:

    in /lib/systemd/system/iobroker.service eingefügt.

    gespeichert
    bei iobroker stop bekam ich eine warnung, dass die datei geändert wurde, und ich systemctl daemon-reload nochmal laufen lassen müsste.

    getan

    iobroker setup custom
    states auf redis geändert

    iobroker start
    iobroker json geprüft
    States sieht da nun so aus:
    "states": {
    "type": "redis",
    "typeComment": "Possible values: 'file' - [port 9000], 'redis' - [port 6379].",
    "host": "127.0.0.1",
    "port": 6379,
    "options": {
    "auth_pass": null,
    "retry_max_delay": 15000
    },
    "dataDir": "../../iobroker-data/"
    },

    steht also auf redis.
    dann in Proxmox mehrfach die VM herunterfahren, neustart. die VM war mit der änderung von dir binnen 3 Sekunden unten.
    also erfolgreich. bis jetzt
    nochmal iobroker.json geprüft, Eintrag steht definitiv auf redis.

    Härteprobe auch probiert: einen Javascript State manuell den Wert geändert, unmittelbar daraf VM heruntergefahren.
    Stop zügig. Neustart, javascript wert überprüft, Wert war da. redis fährt wohl mit ordentlichem Dump sauber runter,

    Wenn du den Installer aber änderst und jemand das system installiert aber kein Redis server bei sich hat, dann kommt das system ja nie hoch dann, oder ?

    Vllt aber noch die FAQ abändern auf den neuen Weg hier, der dort beschriebene ist ja nicht mehr gültig auf neuem System und der Forenlink da zeigt in Nirvana.

    Vielen Dank erstmal, Black

    die Wahrheit ist ein Chor aus Wind

    AlCalzoneA 1 Antwort Letzte Antwort
    0
    • BlackmikeB Blackmike

      @AlCalzone So... deine Änderung tuts: Das gab mir ja keine Ruhe, bisschen über VPN gespielt.
      Ergebnisse:

      in /lib/systemd/system/iobroker.service eingefügt.

      gespeichert
      bei iobroker stop bekam ich eine warnung, dass die datei geändert wurde, und ich systemctl daemon-reload nochmal laufen lassen müsste.

      getan

      iobroker setup custom
      states auf redis geändert

      iobroker start
      iobroker json geprüft
      States sieht da nun so aus:
      "states": {
      "type": "redis",
      "typeComment": "Possible values: 'file' - [port 9000], 'redis' - [port 6379].",
      "host": "127.0.0.1",
      "port": 6379,
      "options": {
      "auth_pass": null,
      "retry_max_delay": 15000
      },
      "dataDir": "../../iobroker-data/"
      },

      steht also auf redis.
      dann in Proxmox mehrfach die VM herunterfahren, neustart. die VM war mit der änderung von dir binnen 3 Sekunden unten.
      also erfolgreich. bis jetzt
      nochmal iobroker.json geprüft, Eintrag steht definitiv auf redis.

      Härteprobe auch probiert: einen Javascript State manuell den Wert geändert, unmittelbar daraf VM heruntergefahren.
      Stop zügig. Neustart, javascript wert überprüft, Wert war da. redis fährt wohl mit ordentlichem Dump sauber runter,

      Wenn du den Installer aber änderst und jemand das system installiert aber kein Redis server bei sich hat, dann kommt das system ja nie hoch dann, oder ?

      Vllt aber noch die FAQ abändern auf den neuen Weg hier, der dort beschriebene ist ja nicht mehr gültig auf neuem System und der Forenlink da zeigt in Nirvana.

      Vielen Dank erstmal, Black

      AlCalzoneA Offline
      AlCalzoneA Offline
      AlCalzone
      Developer
      schrieb am zuletzt editiert von
      #10

      @Blackmike sagte in IObroker VM braucht ewig lange zum runterfahren (Grund Redis - Erneut):

      Wenn du den Installer aber änderst und jemand das system installiert aber kein Redis server bei sich hat, dann kommt das system ja nie hoch dann, oder ?

      Ich habe die Dokumentation so verstanden, dass nicht existierende Services beim Start ignoriert werden. Von daher müsste es passen.

      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

      1 Antwort Letzte Antwort
      0
      • AlCalzoneA AlCalzone

        Die Datei die du suchst ist /lib/systemd/system/iobroker.service. Diese sieht aktuell in etwa so aus (ein paar Variablen sind ersetzt):

        [Unit]
        Description=ioBroker Server
        Documentation=http://iobroker.net
        After=network.target
        
        [Service]
        Type=simple
        User=$IOB_USER
        Environment="NODE=\$(which node)"
        ExecStart=/bin/bash -c '\${NODE} $CONTROLLER_DIR/controller.js'
        Restart=on-failure
        
        [Install]
        WantedBy=multi-user.target
        EOF
        

        Diese kannst du mit sudo nano /lib/systemd/system/iobroker.service editieren.

        Es müsste reichen, den ersten Block zu ändern zu:

        [Unit]
        Description=ioBroker Server
        Documentation=http://iobroker.net
        After=network.target redis.service
        Wants=redis.service
        

        Lass mich bitte wissen, ob das funktioniert. Dann kann ich das in den Installer aufnehmen.

        smartboartS Offline
        smartboartS Offline
        smartboart
        schrieb am zuletzt editiert von smartboart
        #11

        @AlCalzone Also bei mir war die Datei /lib/systemd/system/iobroker.service
        zwar vorhanden aber leer.
        Hab dan den Part
        [Unit]
        Description=ioBroker Server
        Documentation=http://iobroker.net
        After=network.target redis.service
        Wants=redis.service
        dennoch eingefügt..Danach zwar sauber rebootet, aber iobroker braucht jetzt start Hilfe.
        Also iobroker start nach reboot, damit er wieder hoch fährt...Dazu ne idee?
        Unbenannt.PNG

        1 Antwort Letzte Antwort
        0
        • AlCalzoneA Offline
          AlCalzoneA Offline
          AlCalzone
          Developer
          schrieb am zuletzt editiert von AlCalzone
          #12

          @smartboart Kannst du deine Datei mal vollständig zeigen? Mir sieht es aus als fehlt da was im Vergleich zum Screenshot.

          Ansonsten probiere das Fixer-Skript mal aus, das sollte eigentlich alles richten.

          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

          1 Antwort Letzte Antwort
          0
          • smartboartS Offline
            smartboartS Offline
            smartboart
            schrieb am zuletzt editiert von
            #13

            Habe gestern das image wieder hergestellt und mein backup installiert um zu schauen ob es die Datei überhaupt gibt. /lib/systemd/system/iobroker.service
            Die Datei ist im ursprünglichen Zustand nicht vorhanden. Habe auch eine ältere Installation auf meinem Tinker. Aber alle Updates durchgeführt. Also alles aktuell ebenfalls iobroker und adapter auf latest.
            In dem Zustand funktioniert alles tadellos. Nur der langsame reboot und shutdown nach umstellung auf redis im Multihostsystem...Muss die datei acuh in älteren installationen vorhanden sein? Ist das Fixer script nicht nur für Installationen nach der neuen Anleitung?

            1 Antwort Letzte Antwort
            0
            • AlCalzoneA Offline
              AlCalzoneA Offline
              AlCalzone
              Developer
              schrieb am zuletzt editiert von
              #14

              Dann hast du wahrscheinlich noch eine init.d-basierte Installation. Öffne mal die Datei /etc/init.d/iobroker.sh mit dem Editor. Dort sollte zu Beginn soetwas stehen:

              #!/bin/bash
              ### BEGIN INIT INFO
              # Provides:          iobroker.sh
              # Required-Start:    \$network \$local_fs \$remote_fs
              # Required-Stop:     \$network \$local_fs \$remote_fs
              # Default-Start:     2 3 4 5
              # Default-Stop:      0 1 6
              # Short-Description: starts ioBroker
              # Description:       starts ioBroker
              

              Ändere das zu

              #!/bin/bash
              ### BEGIN INIT INFO
              # Provides:          iobroker.sh
              # Required-Start:    \$network \$local_fs \$remote_fs
              # Required-Stop:     \$network \$local_fs \$remote_fs
              # Should-Start:      redis-server
              # Should-Stop:       redis-server
              # Default-Start:     2 3 4 5
              # Default-Stop:      0 1 6
              # Short-Description: starts ioBroker
              # Description:       starts ioBroker
              

              (also die beiden Zeilen mit redis-server einfügen).

              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

              smartboartS 2 Antworten Letzte Antwort
              0
              • apollon77A Online
                apollon77A Online
                apollon77
                schrieb am zuletzt editiert von
                #15

                @AlCalzone Sollte der installations-Fixer das nicht fixen?

                HomoranH AlCalzoneA 2 Antworten Letzte Antwort
                0
                • apollon77A apollon77

                  @AlCalzone Sollte der installations-Fixer das nicht fixen?

                  HomoranH Nicht stören
                  HomoranH Nicht stören
                  Homoran
                  Global Moderator Administrators
                  schrieb am zuletzt editiert von
                  #16

                  @apollon77
                  Aber nur bei neuen Installationen.

                  @smartboart sagte in IObroker VM braucht ewig lange zum runterfahren (Grund Redis - Erneut):

                  Ist das Fixer script nicht nur für Installationen nach der neuen Anleitung?

                  Die gerade von @AlCalzone gepostete Anleitung gilt für npm instal... Installationen

                  kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                  der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                  1 Antwort Letzte Antwort
                  0
                  • apollon77A apollon77

                    @AlCalzone Sollte der installations-Fixer das nicht fixen?

                    AlCalzoneA Offline
                    AlCalzoneA Offline
                    AlCalzone
                    Developer
                    schrieb am zuletzt editiert von
                    #17

                    @apollon77 Ja sollte er, aber er ersetzt vermutlich die init.d mit systemd. Die schnelle Lösung für @smartboart sind die beiden Zeilen.
                    Vermutlich lohnt sich dennoch ein Backup + Fixer.

                    Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                    1 Antwort Letzte Antwort
                    0
                    • apollon77A Online
                      apollon77A Online
                      apollon77
                      schrieb am zuletzt editiert von
                      #18

                      @AlCalzone dann im Fixer immer auch die anderen init-System Files löschen Und nur das relevante neue anlegen?

                      1 Antwort Letzte Antwort
                      0
                      • AlCalzoneA Offline
                        AlCalzoneA Offline
                        AlCalzone
                        Developer
                        schrieb am zuletzt editiert von
                        #19

                        Wird schon längst so gemacht :)

                        Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                        1 Antwort Letzte Antwort
                        0
                        • AlCalzoneA AlCalzone

                          Dann hast du wahrscheinlich noch eine init.d-basierte Installation. Öffne mal die Datei /etc/init.d/iobroker.sh mit dem Editor. Dort sollte zu Beginn soetwas stehen:

                          #!/bin/bash
                          ### BEGIN INIT INFO
                          # Provides:          iobroker.sh
                          # Required-Start:    \$network \$local_fs \$remote_fs
                          # Required-Stop:     \$network \$local_fs \$remote_fs
                          # Default-Start:     2 3 4 5
                          # Default-Stop:      0 1 6
                          # Short-Description: starts ioBroker
                          # Description:       starts ioBroker
                          

                          Ändere das zu

                          #!/bin/bash
                          ### BEGIN INIT INFO
                          # Provides:          iobroker.sh
                          # Required-Start:    \$network \$local_fs \$remote_fs
                          # Required-Stop:     \$network \$local_fs \$remote_fs
                          # Should-Start:      redis-server
                          # Should-Stop:       redis-server
                          # Default-Start:     2 3 4 5
                          # Default-Stop:      0 1 6
                          # Short-Description: starts ioBroker
                          # Description:       starts ioBroker
                          

                          (also die beiden Zeilen mit redis-server einfügen).

                          smartboartS Offline
                          smartboartS Offline
                          smartboart
                          schrieb am zuletzt editiert von
                          #20

                          @AlCalzone said in IObroker VM braucht ewig lange zum runterfahren (Grund Redis - Erneut):

                          Should-Start: redis-server

                          Should-Stop: redis-server

                          vielen Lieben Dank für den Tipp...werde ich am WE mal ausprobieren....
                          Unbenannt.PNG

                          1 Antwort Letzte Antwort
                          0
                          • AlCalzoneA AlCalzone

                            Dann hast du wahrscheinlich noch eine init.d-basierte Installation. Öffne mal die Datei /etc/init.d/iobroker.sh mit dem Editor. Dort sollte zu Beginn soetwas stehen:

                            #!/bin/bash
                            ### BEGIN INIT INFO
                            # Provides:          iobroker.sh
                            # Required-Start:    \$network \$local_fs \$remote_fs
                            # Required-Stop:     \$network \$local_fs \$remote_fs
                            # Default-Start:     2 3 4 5
                            # Default-Stop:      0 1 6
                            # Short-Description: starts ioBroker
                            # Description:       starts ioBroker
                            

                            Ändere das zu

                            #!/bin/bash
                            ### BEGIN INIT INFO
                            # Provides:          iobroker.sh
                            # Required-Start:    \$network \$local_fs \$remote_fs
                            # Required-Stop:     \$network \$local_fs \$remote_fs
                            # Should-Start:      redis-server
                            # Should-Stop:       redis-server
                            # Default-Start:     2 3 4 5
                            # Default-Stop:      0 1 6
                            # Short-Description: starts ioBroker
                            # Description:       starts ioBroker
                            

                            (also die beiden Zeilen mit redis-server einfügen).

                            smartboartS Offline
                            smartboartS Offline
                            smartboart
                            schrieb am zuletzt editiert von
                            #21

                            @AlCalzone said in IObroker VM braucht ewig lange zum runterfahren (Grund Redis - Erneut):

                            Should-Start: redis-server

                            Should-Stop: redis-server

                            super das hats gebracht! Vielen Dank der Tipp war Gold wert.
                            Kann mir kurz noch einer erklären warum ich das fixer script trotzdem noch mal laufen lassen sollte?
                            Mein System läuft absolut stabil...

                            AlCalzoneA 1 Antwort Letzte Antwort
                            0
                            • smartboartS smartboart

                              @AlCalzone said in IObroker VM braucht ewig lange zum runterfahren (Grund Redis - Erneut):

                              Should-Start: redis-server

                              Should-Stop: redis-server

                              super das hats gebracht! Vielen Dank der Tipp war Gold wert.
                              Kann mir kurz noch einer erklären warum ich das fixer script trotzdem noch mal laufen lassen sollte?
                              Mein System läuft absolut stabil...

                              AlCalzoneA Offline
                              AlCalzoneA Offline
                              AlCalzone
                              Developer
                              schrieb am zuletzt editiert von
                              #22

                              @smartboart sagte in IObroker VM braucht ewig lange zum runterfahren (Grund Redis - Erneut):

                              Mein System läuft absolut stabil...

                              Brauchst du nicht unbedingt. Wenn bei dir wirklich alles problemlos läuft, kannst du es auch erst mal lassen.

                              Ins Fixer-Skript und den neuesten Installer ist einiges an Erfahrung eingeflossen, was die Rechte-Problematiken auf neueren Systemen (insbesondere wegen npm) angeht. Ausführen als Root (sudo iobroker start, etc..., was eine Sicherheitslücke darstellt) und EACCES-Probleme bei Installationen sind damit Geschichte.

                              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                              1 Antwort Letzte Antwort
                              0
                              • H Offline
                                H Offline
                                hennerich
                                schrieb am zuletzt editiert von
                                #23

                                Moin zusammen,

                                ja ich weiß, dieses Thema ist schon paar Jahre alt. Der Issue jedoch ist (zumindest bei mir) noch aktuell.
                                Wenn ich auf der Konsole ioBroker stop machen möchte (z.B. bei Updates), dann dauert das Stoppen bis zu 5min bei mir.
                                Jetzt wollte ich gerne diesen Tipp hier ausprobieren, nur gibts die Datei /etc/init.d/iobroker.sh nicht mehr.
                                Und ja, es gab vor etlicher Zeit mal die Umstellung auf diesen Service. Ich weiß trotzdem nicht, wo ich denn jetzt das Redis Zeug ausschalten kann, damit das schneller geht.
                                Mit dem Installation Fixer hat das jedenfalls nicht funktioniert.

                                Danke und Grüße
                                Henri

                                Tutorial UVR1611 C.M.I. Integration
                                Tutorial SolarEdge Integration via ModBus

                                1 Antwort Letzte Antwort
                                0
                                • apollon77A Online
                                  apollon77A Online
                                  apollon77
                                  schrieb am zuletzt editiert von
                                  #24

                                  systemctl status iobroker sagt dir wo das service File in aktuellen Environments liegt.

                                  Bildschirmfoto 2022-02-03 um 11.08.09.png

                                  Am Ende das editieren und dann

                                  systemctl daemon-reload zum "speichern" des genderten servcie files

                                  H 1 Antwort Letzte Antwort
                                  1
                                  • apollon77A apollon77

                                    systemctl status iobroker sagt dir wo das service File in aktuellen Environments liegt.

                                    Bildschirmfoto 2022-02-03 um 11.08.09.png

                                    Am Ende das editieren und dann

                                    systemctl daemon-reload zum "speichern" des genderten servcie files

                                    H Offline
                                    H Offline
                                    hennerich
                                    schrieb am zuletzt editiert von
                                    #25

                                    @apollon77
                                    Danke dir apollon.
                                    Darf ich dich noch mal fragen, was genau ich in der Datei ändern muss, damit dieses "Redis/ langsames Herunterfahren" abgestellt wird?

                                    Tutorial UVR1611 C.M.I. Integration
                                    Tutorial SolarEdge Integration via ModBus

                                    apollon77A 1 Antwort Letzte Antwort
                                    0
                                    • H hennerich

                                      @apollon77
                                      Danke dir apollon.
                                      Darf ich dich noch mal fragen, was genau ich in der Datei ändern muss, damit dieses "Redis/ langsames Herunterfahren" abgestellt wird?

                                      apollon77A Online
                                      apollon77A Online
                                      apollon77
                                      schrieb am zuletzt editiert von
                                      #26

                                      @hennerich Also an sich sollte da sdhcon alles drin sein ... iobroker.fix schreibt das an sich neu.

                                      Unter "After" und "Wants" in der ersten Sektion muss redis.service drin sein ... anaonsten musst du schauen ob der bei dir vllt anders heisst?

                                      H 1 Antwort Letzte Antwort
                                      1
                                      • apollon77A Online
                                        apollon77A Online
                                        apollon77
                                        schrieb am zuletzt editiert von
                                        #27
                                        Dieser Beitrag wurde gelöscht!
                                        H 1 Antwort Letzte Antwort
                                        0
                                        • apollon77A apollon77

                                          @hennerich Also an sich sollte da sdhcon alles drin sein ... iobroker.fix schreibt das an sich neu.

                                          Unter "After" und "Wants" in der ersten Sektion muss redis.service drin sein ... anaonsten musst du schauen ob der bei dir vllt anders heisst?

                                          H Offline
                                          H Offline
                                          hennerich
                                          schrieb am zuletzt editiert von
                                          #28

                                          @apollon77
                                          Hey, so sieht das File bei mir aus:

                                          [Unit]
                                          Description=ioBroker Server
                                          Documentation=http://iobroker.net
                                          After=network.target redis.service influxdb.service mysql-server.service mariadb-server.service
                                          Wants=redis.service influxdb.service mysql-server.service mariadb-server.service
                                          
                                          [Service]
                                          Type=simple
                                          User=iobroker
                                          Environment="NODE=$(which node)"
                                          ExecStart=/bin/bash -c '${NODE} /opt/iobroker/node_modules/iobroker.js-controller/controller.js'
                                          Restart=on-failure
                                          
                                          [Install]
                                          WantedBy=multi-user.target
                                          

                                          Tutorial UVR1611 C.M.I. Integration
                                          Tutorial SolarEdge Integration via ModBus

                                          apollon77A 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

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

                                          692

                                          Online

                                          32.5k

                                          Benutzer

                                          81.6k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe