Anzeige:
Ergebnis 1 bis 4 von 4

Thema: systemd prozess forking

  1. #1
    Registrierter Benutzer Avatar von Huhn Hur Tu
    Registriert seit
    Nov 2003
    Ort
    Karlsruhe
    Beiträge
    2.254

    systemd prozess forking

    Hallo,

    ich habe hier das Problem, dass ich fuer den Wildfy OS Jboss einen Check in den Startprozess einbauen will.
    Wildfly Start und Stop funktioniert sauber. Da SystemD den Start abgeschlossen hat, sobald der Prozess gespawnt ist, also nicht erst wenn der Wildfly komplett oben ist und zum Beispiel den Webservice anbietet.
    Hier will ich einen simplen curl check nach HTTP 200machen.
    Hier kommt dann mein problem ins Spiel


    SystemD Unit File
    Code:
    [Unit]
    Description=The WildFly Application Server
    After=syslog.target network.target
    Before=httpd.service
    
    [Service]
    Type=simple
    Environment=LAUNCH_JBOSS_IN_BACKGROUND=1
    EnvironmentFile=-/etc/wildfly/wildfly.conf
    User=wildfly
    LimitNOFILE=202642
    PIDFile=/var/run/wildfly/wildfly.pid
    RemainAfterExit=true
    ExecStart=/opt/wildfly/current/bin/standalone.sh -c $WILDFLY_CONFIG -P /opt/wildfly/current/wildfly.properties
    ExecStartPost=/etc/wildfly/wildfly_start.sh   <-- PROBLEM
    ExecStop=/etc/wildfly/wildfly_shutdown.sh
    
    [Install]
    WantedBy=multi-user.target


    Zu startende Standalone.sh
    Code:
    .
    .
    .
    while true; do
          # Execute the JVM in the background
          eval \"$JAVA\" -D\"[Standalone]\" $JAVA_OPTS \
             \"-Dorg.jboss.boot.log.file="$JBOSS_LOG_DIR"/server.log\" \
             \"-Dlogging.configuration=file:"$JBOSS_CONFIG_DIR"/logging.properties\" \
             -jar \""$JBOSS_HOME"/jboss-modules.jar\" \
             $MODULE_OPTS \
             -mp \""${JBOSS_MODULEPATH}"\" \
             org.jboss.as.standalone \
             -Djboss.home.dir=\""$JBOSS_HOME"\" \
             -Djboss.server.base.dir=\""$JBOSS_BASE_DIR"\" \
             "$SERVER_OPTS" "&"
          JBOSS_PID=$!

    HTTP 200 Check - wildfly_start.sh
    Code:
    #!/usr/bin/bash
    sleep 5
    ## check is jolokia is up and running
    http_return=400
    while [ $http_return -ne 200 ]; do
      http_return=$(curl -k -o /dev/null --silent --head --write-out '%{http_code}\n' https://localhost:8443/jolokia)
      sleep 2
    done
    sleep 10
    Sobald der Java Prozess gestartet wurde mit eval wird er auch wie gewuenscht in den Background verschoben. Damit ist SystemD fertig,
    ich benoetige jedoch eine Funktion um den Abschluss des SystemD Startvorgangs auf den erfolgreichen Abschluss des HTTP 200 Checks zu verschieben.
    Ich verstehe aktuell nicht wie ich das hinbekommen soll und die Doku hilft hier auch wenig.

    Gruss Stefan
    Geändert von Huhn Hur Tu (10.12.20 um 11:17 Uhr)
    Zwischen anonym sein wollen und seine Daten nicht verkaufen wollen, liegen zwei Welten. Wenn man sich einen kostenpflichtigen Dienst sucht, dann meist, weil man für diese Dienstleistung zahlt und nicht selbst das Produkt sein will.


  2. #2
    Registrierter Benutzer
    Registriert seit
    Dec 2003
    Ort
    Dettenhausen
    Beiträge
    22.061
    Wieso nicht
    Code:
    /opt/wildfly/current/bin/standalone.sh
    in ein wrapper-Script packen, dieses um den check ergänzen und den ExecStart-Part packen?
    Ich bin root - ich darf das.

  3. #3
    Registrierter Benutzer Avatar von Huhn Hur Tu
    Registriert seit
    Nov 2003
    Ort
    Karlsruhe
    Beiträge
    2.254
    Gebe ich dir recht, nur meine Versuche sind alle gescheitert, weil es A nicht angezogen wurde oder B von SystemD nicht als fertig angesehen wurde und dann das ganze in ein Timeout lief. Ein Freund hat mir dann geholfen ein wenig aufzuraeumen. Das Problem war der Parameter "PIDFile=/var/run/wildfly/wildfly.pid" da die PID nicht geschrieben wurde, das war kein Problem solange mein kein ExecStartPost verwendet

    So funzt es bei mir
    Code:
    [Unit]
    Description=The WildFly Application Server
    After=syslog.target network.target
    Before=httpd.service
    
    [Service]
    Type=simple
    Environment=LAUNCH_JBOSS_IN_BACKGROUND=1
    EnvironmentFile=-/etc/wildfly/wildfly.conf
    User=wildfly
    LimitNOFILE=202642
    RemainAfterExit=true
    ExecStart=/opt/wildfly/current/bin/standalone.sh -c $WILDFLY_CONFIG -P /opt/wildfly/current/wildfly.properties
    ExecStartPost=/etc/wildfly/wildfly_start.sh
    ExecStop=/etc/wildfly/wildfly_shutdown.sh
    
    [Install]
    WantedBy=multi-user.target
    Zwischen anonym sein wollen und seine Daten nicht verkaufen wollen, liegen zwei Welten. Wenn man sich einen kostenpflichtigen Dienst sucht, dann meist, weil man für diese Dienstleistung zahlt und nicht selbst das Produkt sein will.


  4. #4
    Registrierter Benutzer Avatar von ThorstenHirsch
    Registriert seit
    Nov 2002
    Beiträge
    6.558
    Aaah, danke für die Erklärung! Ich hatte hier auch rein geschaut, wusste die Antwort nicht und war schon ganz gespannt...
    ¡Nuestro amigo... el Computador!

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 06.05.15, 21:36
  2. gescheiter stresstest / forking
    Von pcdog im Forum Meldungen und Mitglieder
    Antworten: 7
    Letzter Beitrag: 01.07.11, 20:57
  3. Antworten: 0
    Letzter Beitrag: 26.03.08, 13:08
  4. Wie kann man einen Kind-Prozess vom Eltern-Prozess trennen?
    Von hiTCH-HiKER im Forum Linux Allgemein
    Antworten: 4
    Letzter Beitrag: 11.04.05, 13:18
  5. prozess anhand prozess-id starten
    Von AndreasDrasch im Forum System installieren und konfigurieren
    Antworten: 8
    Letzter Beitrag: 13.02.03, 16:25

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •