Ubuntu Server – Autostart eines Commands/Skriptes einrichten

Eigentlich etwas sehr banales aber dennoch sehr kompliziertes, weil Linux…

Einen Command beim Hochfahren des Servers automatisch ohne Anmeldung zu starten.

Dazu müssen wir einen Dienst erstellen, der den Command ausführt.

Zunächst wechseln wir in das Verzeichnis /etc/systemd/system

$ cd /etc/systemd/system

Dann erstellen wir den neuen Dienst und bearbeiten diesen.

$ sudo nano „hier dienst name“.service

Die Datei muss mit .service enden.

Hier eine universell einsetzbare Vorlage, die ihr nur abändern müsst:

[Unit]
Description=Beschreibung was der Dienst starten wird
Wants=network-online.target
After=syslog.target network.target nss-lookup.target network-online.target

[Service]
Environment="LD_LIBRARY_PATH=./linux64"

# ExecStartPre= wird nur benötigt, wenn vor Starten des eigentlichen Sktiptes oder Commands erst noch ein anderes/r Ausgeführt werden soll. 
ExecStartPre=
#Wenn das nicht benötigt wird ExecStartPre auskommentieren oder löschen. 

#Nach ExecStart= wird nun angegeben was gestartet wird. 
ExecStart=/home/administrator/SatisfactoryDedicatedServer/FactoryServer.sh
#In meinen Fall wird hier ein Skript gestartet. Es kann hier natürlich auch ein normaler Command angegeben werden. 

#User der das Skript oder den Command ausführt
User=
#in meinen Fall wäre das "administrator"

#Gruppe der das Skript oder den Command ausführt
Group=
#in meinen Fall wäre das "administrator"
#die Gruppenzugehörigkeit kann mit den Command groups und dann den Username herausgefunden werden. 
#$ groups administrator

StandardOutput=journal
Restart=on-failure
#"no" wenn der Dienst bei Absturz nicht neu gestartet werden soll - 
#"on-failure" wenn schon

WorkingDirectory=/home/administrator/SatisfactoryDedicatedServer
#Verzeichnis in der das Skript oder der Command ausgeführt wird

[Install]
WantedBy=multi-user.target

Jetzt die Datei abspeichern.

Nun müssen wir einen daemon-reload ausführen.

$ sudo systemctl daemon-reload

Und jetzt noch den Dienst aktivieren und starten.

$ sudo systemctl enable #hier Name wie der Dienst benannt wurde ohne .service
$ sudo systemctl start #hier Name wie der Dienst benannt wurde ohne .service

Der Status kann mit

$ sudo systemctl status #hier Name wie der Dienst benannt wurde ohne .service

abgefragt werden.

Nun sollte bei jeden Start des Servers der Command oder das Skript ausgeführt werden.