linux tail command geht nicht?
Ich habe Ubuntu 18.04 und wollte dort ein script schreiben. Dennoch funktionieren die Variablen nicht ganz.
Code und Error: https://pastebin.com/Q33kbtNZ
LG,
Pierre-René
2 Antworten
Da stimmt wohl irgend etwas mit dem Pfad nicht. Kommentiere die Zeilen 5 bis 8 mal aus und füge zwischen die Zeilen 4 und 5
echo $SERVERS
ls -l /home/MC/$SERVERS/logs
ein. Kommen da die gewünschten Ergebnisse heraus? Insbesondere: taucht bei dem ls-Befehl auch die Datei latest.log auf?
Dann hast du das Verzeichnis des Servers nicht auf das Verzeichnis
/home/MC/test
gemountet. Das musst du natürlich erst tun, um auf den Server zugreifen zu können. Das Ergebnis ist eindeutig: der angegebene Pfad ist auf dem Host, von dem aus du das Skript startest, nicht vorhanden.
nein das ist alles eine festplatte ich meinte minecraft server @AncheCameo
Da ich den Minecraft Server nicht installiert habe, weiß ich nicht, was er macht, wenn du ihn startest. Aber das spielt keine Rolle für das Skript.
Entscheidend ist, dass du vor dem Start des Skripts sicherstellen musst, dass das Verzeichnis
/home/MC/test/logs
existiert, und dass auch die Datei latest.log vorhanden sein und einen Inhalt haben muss. Der tail-Befehl als solcher ist dagegen korrekt.
Also:
if( -d /home/MC/test/logs/latest.log ) {
uptime=$(tail -n 12 /home/MC/$SERVERS/logs/latest.log | grep Laufzeit: | cut -d ':' -f 5);
tps=$(tail -n 8 /home/MC/$SERVERS/logs/latest.log | grep TPS | cut -d '=' -f 2);
maxmem=$(tail -n 12 /home/MC/$SERVERS/logs/latest.log | grep Maximaler | cut -d ':' -f 5);
mem=$(tail -n 12 /home/MC/$SERVERS/logs/latest.log | grep Reservierter | cut -d ':' -f 5);
}
@AncheCameo
Nein, auch nicht. latest.log ist doch wohl eine reguläre Datei, also dann wenigstens
if [ -f /home/MC/test/logs/latest.log ]
then
...
...
fi
Ob deine Variante der Syntax auch funktioniert, weiß ich (noch) nicht, daher habe ich die mir bekannte Syntax genommen. Also: nicht -d, sondern -f
Ergänzung: ich weiß nicht, wo du diese Syntax her hast, unter bash funktioniert sie jedenfalls nicht.
Mit den geschweiften Klammern sieht das nach Java oder C/C++ aus. 🤔
Das kann sein. Da der FS aber den Shebang
#!/bin/bash
in seinem Skript hat, dürfte das auch bei ihm nicht funktionieren.
echo $SERVERS;
und guck dir mal an was daraus wird .
test ist der server