Systemd – Start- und Stopskript Teamspeak

Das nachfolgende Skript wird unter „/etc/systemd/system“ abgelegt, wie auch andere benutzerdefinierte Skripte. Die systemweiten Skripte liegen unterdessen unter „/lib/systemd/system“. Am besten mit dem Namen „tss3.service“.

1
touch /etc/systemd/system/tss3.service

Und hier der Inhalt des Skriptes:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[Unit]
Description=The Team Speak Server
After=network.target
Documentation=https://blog.marcodn.de/
 
[Service]
WorkingDirectory=/srv/tss3
Type=simple
# Wenn man keinen speziellen Benutzer möchte, einfach die 2 Zeilen entfernen
User=ts3
Group=ts3
Environment="LD_LIBRARY_PATH=/srv/tss3"
ExecStart=/srv/tss3/ts3server_linux_amd64
ExecStop=/bin/kill -s INT $MAINPID
PIDFile=/srv/tss3/ts3server.pid
RestartSec=15
Restart=always
StandardOutput=syslog
StandardError=syslog
SysLogIdentifier=tss3
 
[Install]
WantedBy=multi-user.target

Zum aktivieren des Skriptes müssen folgende Befehle ausgeführt werden:

  1. systemctl daemon-reload
  2. systemctl enable tss3
  3. systemctl start tss3
  4. systemctl status tss3

Bei Änderungen an der Skriptdatei muss Punkt 1 wiederholt werden.

Runlevel ändern unter Debian (Ubuntu)

Natürlich gibt es den „schweren“ Weg, den man zu Fuß geht und entsprechend die Sym-Links selbst erzeugt bzw. wieder löscht. Aber man könnte auch den einfacheren Weg gehen und die vorhande Funktionalität des Systems ausnutzen, und zwar mit update-rc.d. Weiter unten folgen die Befehle mit Beschriebung, aber zuerst noch ein Information. Damit update-rc.d auch richtig arbeiten kann, benötigt es passende Informatione in den init.d-Scripten. Hier ein kleines Beispiel wenn jemand selber mal eins schreiben will:

#! /bin/sh
### BEGIN INIT INFO
# Provides: Was macht das Skript?
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Kurze Beschreibung
# Description: Längere Bechreibung
### END INIT INFO
# Author: Name <email@domain.tld>
# Aktionen
case "$1" in
start)
  /opt/beispiel start
  ;;
stop)
  /opt/beispiel stop
  ;;
restart)
  /opt/beispiel restart
  ;;
esac
exit 0

Und nun die Befehle. Mit diesem werden alle Sym-Links gelöscht:

update-rc.d -f <Basisname> remove

Damit werden die im Default-Parameter angegebenen RunLevel-Links wieder erzeugt:

update-rc.d <Basisname> defaults

Per Hand definierte Links:
Def des Bsp: Link für Start an Stelle 80 für Runlevel 2-5 anlegen (S80<Basisname>) und Link für Stop an Stelle 55 für Runlevel 2-5 anlegen (K55<Basisname>)

update-rc.d <Basisname> start <Nr> <RunLevel> . stop <Nr> <RunLevel> .
update-rc.d <Basisname> start 80 2 3 4 5 . stop 55 2 3 4 5 .

Zur Sicherheit nochmal angemerkt, mit diesem Befehlen kann man den aktuell laufenden Dienst dann noch beenden:

invoke-rc.d <Basisname> stop
/etc/init.d/<Basisname> stop