Linux Systemd – Applikationen mit Autostart
- Von – Jan Hill
- Veröffentlicht am
- Veröffentlicht unter Tutorials, Netzwerk und Linux
Systemd in Linux - Wofür ist dies genau gut?
Mit Systemd können wir Applikationen mit einem Autostart versehen. Dabei erstellen wir im /etc/systemd/system Verzeichnis eine sogenannte .service Datei. Diese dient dazu, genau zu definieren was der Service eben machen soll.
1. TeamSpeak 3 - Autostart via Systemd
nano /etc/systemd/system/ts3.service
Folgende Parameter haben natürlich eine Bedeutung:
- User={Linux-User} – Hier wird ein Linux User aufgeführt der den Prozess ausführen soll.
- Group={Linux-User-Group} – Hier wird die Linux User Gruppe definiert und angegeben.
- WorkingDirectory={Working-Dir} – Der Ordner wo sich auch z.B der TeamSpeak 3 Server befindet.
- ExecStart={/path/of/ts3server_startscript.sh start} – Hier wird das ts3server_startscript.sh angegeben mit den start Parameter „start“ siehe .service File.
- ExecStop={/path/of/ts3server_startscript.sh stop} – Hier wird nur am Ende der start zu dem stop Parameter ersetzt
- RestartSec=15 – Hier wird wenn überhaupt der TeamSpeak 3 Server nach einem Crash innerhalb von 15 Sekunden neugestartet.
[Unit]
Description=TeamSpeak 3 Autostart
After=network.service
[Service]
User=ts3
Group=ts3
Type=forking
WorkingDirectory=/path/of/WorkingDirectory
ExecStart=/path/of/script/ts3server_startscript.sh start
ExecStop=/path/of/script/ts3server_startscript.sh stop
PIDFile=/path/of/script/ts3server.pid
RestartSec=15
Restart=always
[Install]
WantedBy=multi-user.target
systemctl enable ts3.service
systemctl daemon-reload
# Server nach Service aktivierung neustarten.
reboot
# TS3 server starten mit
service ts3 start
# TS3 Server kann gestoppt werden mit
service ts3 stop
# Auch der Status des Service kann abgefragt werden
service ts3 status
2. TS3AudioBot - Autostart via Systemd
nano /root/ts3audiobot.sh
#!/bin/bash
#Script by RAW Networks
#Blog: blog.codertalk.eu
if [ -z $1 ] || [ -z $2 ]; then
echo "Usage: start/stop /path/to/ts3audiobot"
exit;
fi
if [ $1 == "start" ]; then
if ! screen -list | grep -q "ts3audiobot-service"; then
screen -AmdS ts3audiobot-service $2/TS3AudioBot
echo "Starting ts3audiobot"
fi
fi
if [ $1 == "stop" ]; then
screen -X -S "ts3audiobot-service" kill
fi
Nach dem einfügen anschließend speichern mit folgender Tastenkombination: STRG+O (Speichern) => STRG+X (Zum wieder verlassen des Editors).
chmod 777 /root/ts3audiobot.sh
nano /etc/systemd/system/ts3audiobot.service
[Unit]
Description=TS3AudioBot Autostart
After=network.service
[Service]
User=root
Group=root
Type=forking
WorkingDirectory=/path/of/WorkingDirectory
ExecStart=/usr/bin/bash /root/ts3audiobot.sh start /path/of/WorkingDirectory
ExecStop=/usr/bin/bash /root/ts3audiobot.sh stop /path/of/WorkingDirectory
RestartSec=15
Restart=always
[Install]
WantedBy=multi-user.target
Nach dem einfügen anschließend speichern mit folgender Tastenkombination: STRG+O (Speichern) => STRG+X (Zum wieder verlassen des Editors).
systemctl enable ts3audiobot.service
systemctl daemon-reload
# ts3audiobot server starten mit
service ts3audiobot start
# ts3audiobot kann gestoppt werden mit
service ts3audiobot stop
# Auch der Status des Service kann abgefragt werden
service ts3audiobot status
nano /root/minecraft.sh
#!/bin/bash
#Script by RAW Networks
#Blog: blog.codertalk.eu
if [ -z $1 ] || [ -z $2 ]; then
echo "Usage: start/stop /path/to/minecraft"
exit;
fi
if [ $1 == "start" ]; then
if ! screen -list | grep -q "minecraft-service"; then
# Bei spigot.jar ggf. umbenennen wenn die .jar File vom spigot.jar abweicht.
screen -AmdS minecraft-service java -jar $2/spigot.jar
echo "Starting minecraft-service"
fi
fi
if [ $1 == "stop" ]; then
screen -X -S "minecraft-service" kill
fi
Nach dem einfügen anschließend speichern mit folgender Tastenkombination: STRG+O (Speichern) => STRG+X (Zum wieder verlassen des Editors).
chmod 777 /root/minecraft.sh
nano /etc/systemd/system/minecraft.service
[Unit]
Description=Minecraft Autostart
After=network.service
[Service]
User=root
Group=root
Type=forking
WorkingDirectory=/path/of/WorkingDirectory
ExecStart=/usr/bin/bash /root/minecraft.sh start /path/of/WorkingDirectory
ExecStop=/usr/bin/bash /root/minecraft.sh stop /path/of/WorkingDirectory
RestartSec=15
Restart=always
[Install]
WantedBy=multi-user.target
Nach dem einfügen anschließend speichern mit folgender Tastenkombination: STRG+O (Speichern) => STRG+X (Zum wieder verlassen des Editors).
systemctl enable minecraft.service
systemctl daemon-reload
# minecraft server starten mit
service minecraft start
# minecraft kann gestoppt werden mit
service minecraft stop
# Auch der Status des Service kann abgefragt werden
service minecraft status
Solltet Ihr weitere Ideen haben, welche Autostart’s man schreiben könnte für Systemd, so lasst es mich doch gerne in den Blog Kommentaren Wissen 🙂