Mittlerweile sind fast 14 Jahre seit der Entstehung dieses Tutorials vergangen und einiges hat sich verändert.
Paketmanager funktionieren mittlerweile von den grafischen Oberflächen aus, z.B Discover bei KDE, oder Synaptic.
Diese funktionieren natürlich nicht, wenn man ein System Headless aufsetzt, also ohne grafische Oberfläche.
Zumeist greift man auf so ein System per ssh Konsole zu.
apt wurde weiterentwickelt und so reicht es häufig nur noch:
Code:
apt update -----------> Abfrage der Inhalte auf den Spiegelservern
apt upgrade ----------> Herunterladen und installieren von zu aktualisierenden Paketen
apt full-upgrade -----> Abhänngigkeiten der Pakete überprüfen und korrigieren
apt install ----------> Installation eines gewünschten (Meta)Paketes
apt remove -----------> Deinstallation eines Paketes, ohne die Konfigurationsdateien zu löschen
apt purge ------------> Vollkommene Entfernung eines Paketes
Viele 'Anregungen' findet man dann auch in den Ausgaben von apt.
Selbstverständlich funktionieren auch noch die Befehle von apt-get.
Ob das cron System umgebaut wurde weiß ich nicht, aber bei mir sieht die crontab auf meinem NAS so aus:
Code:
# m h dom mon dow command
5 3 * * * /sbin/hwclock -w
20 4 * * * systemctl stop mc19
25 4 * * * systemctl start mc19
0 5 * * * /usr/sbin/backup-manager -f
0 1 2 * * /usr/sbin/e4defrag /dev/sda2
0 1 6 */2 * /usr/sbin/e4defrag /dev/sdb2
0 1 10 */2 * /usr/sbin/e4defrag /dev/sdc1
Das ist, zugegebenerweis, nur ein Auszug und teilweise mit Kanonen auf Spatzen geschossen.
Der erste Eintrag stellt 5 Minuten nach 3 die Hardware Uhr nach.
Die e4defrag Einträge defragmentieren die Festplatten. sda2 wird jeden 2. im Monat (darauf sind die home Verzeichnisse worauf sich viel abspielt) defragmentiert.
sdb2 und sdc1 jeden 2. Monat.
Wir haben hier also von links nach rechts
Minute, Stunde, Tag des Monats, Monat, Tag der Woche, Kommando
Früher hätte man Gameserver in einer screen Session gestartet. Ein Benutzer eines anderen Formus nannte das heutzutage einen Hack.
screen ist eine Konsolenanwendung, mit der man diese in den Hintergrund schicken kann, ohne ständig eine Konsole offen zu haben.
Ich nutze screen eigentlich nur noch zum Transkodieren auf meinem NAS. Da kann ich mich dann ausloggen und meine Workstation herunterfahren.
Die Kommandos dazu sind:
Dabei öffnet sich eine leere Konsole. Man gibt ein, was man eben möchte und wenn der Vorgang angelaufen ist, löst man sich mit der Tastenkombination STRG+A+D. Der Vorgang läuft nun im Hintergrund. Will man nun zurück auf die Konsole gibt man:
Bei einer Screen Session kommt man sofort auf diese Konsole, bei mehreren werden die einzeln PIDs angezeigt die man dann an das screen -r anhängen müsste.
Viele Distributionen sind mittlerweile dazu über gegangen sich von den Init Skr.ip.ten zu lösen und die Systemverwaltung systemd von freedesktop zu übergeben.
Im Hintergrund startet es z.B. die Netzwerkschnittstelle, es sei denn, sie wurde manuell in /etc/network/interfaces, oder im Networkmanager eingestellt.
Systemd arbeitet mit sogenannten 'Units' mit der eine Anwendung, oder ein Server gestartet und gestoppt werden kann.
Viele Units findet man hier:
Code:
/etc/systemd/system$ ls -ao
insgesamt 76
drwxr-xr-x 11 root 4096 28. Jun 07:43 .
drwxr-xr-x 5 root 4096 27. Jun 14:28 ..
-rw-r--r-- 1 root 375 25. Dez 2018 cs16dust.service
-rw-r--r-- 1 root 359 25. Dez 2018 cs16.service
-rw-r--r-- 1 root 355 25. Dez 2018 css.service
lrwxrwxrwx 1 root 40 13. Mai 2021 dbus-org.freedesktop.Avahi.service -> /lib/systemd/system/avahi-daemon.service
lrwxrwxrwx 1 root 45 13. Apr 2020 dbus-org.freedesktop.timesync1.service -> /lib/systemd/system/systemd-timesyncd.service
drwxr-xr-x 2 root 4096 2. Aug 2019 default.target.wants
drwxr-xr-x 2 root 4096 8. Mai 2018 getty.target.wants
-rwxr--r-- 1 root 328 3. Jun 14:47 jd2.service
-rwxr--r-- 1 root 449 8. Sep 2019 mc17.service
-rwxr--r-- 1 root 423 23. Jan 2019 mc18.service
-rwxr--r-- 1 root 421 22. Jan 2020 mc19.service
drwxr-xr-x 2 root 4096 25. Apr 12:23 multi-user.target.wants
lrwxrwxrwx 1 root 35 21. Okt 2018 mysqld.service -> /lib/systemd/system/mariadb.service
lrwxrwxrwx 1 root 35 21. Okt 2018 mysql.service -> /lib/systemd/system/mariadb.service
drwxr-xr-x 2 root 4096 8. Mai 2018 network-online.target.wants
lrwxrwxrwx 1 root 9 16. Nov 2020 nfs-client.target -> /dev/null
lrwxrwxrwx 1 root 9 16. Nov 2020 nfs-server.service -> /dev/null
lrwxrwxrwx 1 root 9 25. Jun 2020 php7.3-fpm.service -> /dev/null
drwxr-xr-x 2 root 4096 13. Mai 2021 printer.target.wants
-rwxr--r-- 1 root 197 28. Sep 2020 pyload.service
drwxr-xr-x 2 root 4096 14. Nov 2020 remote-fs.target.wants
lrwxrwxrwx 1 root 9 16. Nov 2020 rpcbind.service -> /dev/null
lrwxrwxrwx 1 root 9 16. Nov 2020 rpcbind.socket -> /dev/null
drwxr-xr-x 2 root 4096 13. Mai 2021 sockets.target.wants
lrwxrwxrwx 1 root 31 21. Okt 2018 sshd.service -> /lib/systemd/system/ssh.service
drwxr-xr-x 2 root 4096 25. Apr 2020 sysinit.target.wants
lrwxrwxrwx 1 root 35 8. Mai 2018 syslog.service -> /lib/systemd/system/rsyslog.service
drwxr-xr-x 2 root 4096 14. Dez 2021 timers.target.wants
Diese Units wurden zum Großteil bei der Installation angelegt. Die grün gehaltenen habe ich selbst erstellt, weil diese Programme nicht in den Repos meiner Distribution erhältlich waren. Einige greifen mittlerweile ins Leere, weil die Software nicht mehr auf meinem NAS ist.
Wie ihr gelesen habt, stoppe und starte ich täglich einen Minecraft Server via Cronjob. Das 'Unit' dazu sieht folgendermaßen aus:
Code:
/etc/systemd/system # nano mc19
Descrip*tion=Minecraft 1.12.2 Area
Wants=network.target
After=network.target
[Service]
User=css
Nice=5
KillMode=none
SuccessExitStatus=0 1
ReadWriteDirectories=/home/css/bukkit-1.12.2
WorkingDirectory=/home/css/bukkit-1.12.2
ExecStart=/usr/bin/java -Xmx1024M -Xms1024M -jar craftbukkit-1.12.2.jar --noconsole
ExecStop=/home/css/mcrcon -H localhost -P 25567 -p <Passwort> stop
[Install]
WantedBy=multi-user.target
Bei Descrip*tion müsst Ihr den * entfernen
Hinter ExecStart findet Ihr den eigentlichen Startbefehl für Minecraft bzw. einen Minecraft Server.
Man kann den Status eines Programms über systemd abfragen:
Code:
# systemctl status mc19
? mc19.service - Minecraft 1.12.2 Area
Loaded: loaded (/etc/systemd/system/mc19.service; enabled; preset: enabled)
Active: active (running) since Thu 2024-06-27 04:25:01 CEST; 5h 13min ago
Main PID: 79974 (java)
Tasks: 31 (limit: 4272)
Memory: 527.1M
CPU: 8min 2.463s
CGroup: /system.slice/mc19.service
??79974 /usr/bin/java -Xmx1024M -Xms1024M -jar craftbukkit-1.12.2.jar --noconsole
Jun 27 04:26:21 hostname java[79974]: [04:26:21 INFO]: [Multiverse-Inventories 2.5.0-SNAPSHOT-b418] enabled.
Jun 27 04:26:21 hostname java[79974]: [04:26:21 INFO]: Server permissions file permissions.yml is empty, ignoring it
Jun 27 04:26:24 hostname java[79974]: [04:26:24 INFO]: Done (47,260s)! For help, type "help" or "?"
Jun 27 04:26:24 hostname java[79974]: [04:26:24 INFO]: Starting GS4 status listener
Jun 27 04:26:24 hostname java[79974]: [04:26:24 INFO]: Starting remote control listener
Jun 27 04:26:24 hostname java[79974]: [04:26:24 INFO]: Query running on 0.0.0.0:25565
Jun 27 04:26:24 hostname java[79974]: [04:26:24 INFO]: RCON running on 0.0.0.0:25567
Jun 27 04:26:24 hostname java[79974]: [04:26:24 INFO]: [Vault] Checking for Updates ...
Jun 27 04:26:25 hostname java[79974]: [04:26:25 INFO]: [Vault] No new version available
Oben rechts sieht man den Hinweis 'Service enabled'
Das bedeutet, dass der Start dieser Anwendung, dieses Servers automatisch beim Systemstart erfolgt.
Das erreicht man, wenn man diesen Service aktiviert:
Code:
systemctl enable mc19
systemctl daemon-reload
Zeile 1 meldet den Server für einen Autostart bei einem Reboot an.
Zeile 2 veranlasst systemd die Anweisungen aus den Unit Dateien neu einzulesen.
Für Richtigstellungen und Anregungen stehe ich offen.