Systemd Unitfile für eine Konsolen Anwendung
Hallo,
ich bin gerade dabei ein altes initd Skript in ein Systemd Skript umzuschreiben.
Nun ergibt sich folgendes Problem.
Bei initd kann man ja folgendes machen:
Bei Systemd hingegen geht so etwas meines Wissens nach nicht. Also meine Frage, wie bilde ich das am besten ab?
Falls noch nicht ganz klar ist, was ich erreichen will, hier etwas Background.
Der initd Service startet eine Java Application in einer Screen Session und mit dem obigen Befehl kann man in diese Screen Session interaktive Befehle "eintippen", die Anschließend von der Java Application als Kommando interpretiert werden.
Aktuell habe ich das etwas umständlich so gelöst:
1. Ein "who am i" liefert die pts nummer
2. "chmod 777 /dev/pts/#"
3. "su systemdServiceUser"
4. "screen -r"
5. Das Kommando eintippen
6. Strg + A => D (zum detachen der Screen session)
7. exit
8. "chmod 620 /dev/pts/#"
Falls jemand Verbesserungsvorschläge hat, z. B. wie ich das "Screen" aus dem Unitfile werfen kann, würde ich mich auch darüber freuen.
Und hier mein aktuelles Unitfile:
ich bin gerade dabei ein altes initd Skript in ein Systemd Skript umzuschreiben.
Nun ergibt sich folgendes Problem.
Bei initd kann man ja folgendes machen:
service myService invoke custom command
Falls noch nicht ganz klar ist, was ich erreichen will, hier etwas Background.
Der initd Service startet eine Java Application in einer Screen Session und mit dem obigen Befehl kann man in diese Screen Session interaktive Befehle "eintippen", die Anschließend von der Java Application als Kommando interpretiert werden.
Aktuell habe ich das etwas umständlich so gelöst:
1. Ein "who am i" liefert die pts nummer
2. "chmod 777 /dev/pts/#"
3. "su systemdServiceUser"
4. "screen -r"
5. Das Kommando eintippen
6. Strg + A => D (zum detachen der Screen session)
7. exit
8. "chmod 620 /dev/pts/#"
Falls jemand Verbesserungsvorschläge hat, z. B. wie ich das "Screen" aus dem Unitfile werfen kann, würde ich mich auch darüber freuen.
Und hier mein aktuelles Unitfile:
[Unit]
Description=jar Container %i
After=network.target
[Service]
WorkingDirectory=/opt/jarContainer/%i
User=jarContainer
Group=jarContainer
ExecStart=/bin/sh -c '/usr/bin/screen -DmS jc-%i /usr/bin/java -server -Xms512M -Xmx2048M -XX:+UseG1GC -jar server.jar'
ExecStop=/usr/bin/screen -p 0 -S jc-%i -X eval 'stuff "save-all"\\015'
ExecStop=/usr/bin/screen -p 0 -S jc-%i -X eval 'stuff "stop"\\015'
ExecStop=/bin/sleep 10
Restart=on-failure
RestartSec=60s
[Install]
WantedBy=multi-user.target
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 338455
Url: https://administrator.de/forum/systemd-unitfile-fuer-eine-konsolen-anwendung-338455.html
Ausgedruckt am: 22.12.2024 um 08:12 Uhr