agowa338
Goto Top

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:
service myService invoke custom command
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:
[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

Content-Key: 338455

Url: https://administrator.de/contentid/338455

Printed on: April 19, 2024 at 01:04 o'clock