Skip to content

Linux Befehle - ls & tail

Linux
  • Jeder von Euch weiß hoffentlich, was ein Script ist!? In diesen Scripten, schreibt man eine Reihe von Linuxbefehlen rein, die beim Aufrufen des Scriptes dann zeilenweise abgearbeitet werden. Hier mal ab und zu, ich hoffe für den ein oder anderen interessant, nette Beispiele. Hier das Erste 😉

    Wir haben ein Backup-Verzeichnus, in das regelmäßig VMs gesichert werden, auf dem Host. Nun möchten wir ab und zu die letzte Version sichern, sagen wir hier bei mir zu Hause. Es soll hier jetzt nicht ums runterladen usw. gehen, sondern nur um das Suchen und Finden der letzten aktuellen Sicherung.

    webserver=$(ls -1tr --group-directories-first vzdump-qemu-100*.vma.* | tail -n 1)
    

    Das da oben ist ein funktionierendes Beispiel. Was macht es? Wir zerlegen das mal ein wenig, da es sich hier um zwei Befehle handelt, die zusammengefasst werden.

    * webserver
    * ls -1tr --group-directories-first vzdump-qemu-100*.vma.*
    * tail -n 1
    

    webserver ist dabei eine Variable
    Der Befehl ls sollte allgemein bekannt sein, hier kombiniert mit ein paar Optionen
    Und der Befehl tail

    ls

    ls steht für List und gibt den Inhalt eines Verzeichnisses aus. Die Optionen bedeuten

    -1                                   list one file per line.  Avoid '\n' with -q or -b
    -t                                   sort by modification time, newest first
    -r, --reverse                        reverse order while sorting
    --group-directories-first            group directories before files;
    

    Quelle: ls --help

    Jedes Ergebnis kommt in eine Zeile, das Neueste zuerst. Und das Ganze reverse, also anders herum. Damit steht das neueste File unten. Evt. vorhandene Ordner kommen an den Anfang der Ausgabe. Beispiel

    ls -1tr --group-directories-first vzdump-qemu-100*.vma.*
    vzdump-qemu-100-2019_09_05-03_00_01.vma.lzo
    vzdump-qemu-100-2019_09_12-03_00_01.vma.lzo
    

    Hier sehen wir, das wir zwei Dateien haben. Die Neueste steht ganz unten.

    tail

    Mit tail kann man sich die letzte Zeile einer Datei anzeigen. Hier im Beispiel, geben wir die letzte Zeile mit

    -n 1
    

    aus. Standardmäßig gibt tail die letzten 10 Zeilen aus. Somit bekommen wir von unserem Beispiel oben, die letzte Zeile angezeigt.

    root@vms-01 /backup/dump # ls -1tr --group-directories-first vzdump-qemu-100*.vma.* | tail -n 1
    vzdump-qemu-100-2019_09_12-03_00_01.vma.lzo
    

    Ausgangsbefehl

    Der Befehl ganz oben, ich wiederhole noch mal

    webserver=$(ls -1tr --group-directories-first vzdump-qemu-100*.vma.* | tail -n 1)
    

    macht folgendes. Das $-Zeichen speichert das Ergebnis von ls und tail zwischen und weist es der Variablen webserver zu. Das Zeichen | verbindet zwei Linuxbefehle, erst wird der eine abgearbeitet, dann der Zweite. Diese Variable können wir dann weiterverarbeiten. Beispiel

    echo $webserver
    vzdump-qemu-100-2019_09_12-03_00_01.vma.lzo
    

    Wer inhaltliche Fehler findet, dafür gibt es hier den Button mit der Aufschrift Antworten 😉

  • Raspberry Pi5 - First Boot

    RaspberryPi
    1
    0 Stimmen
    1 Beiträge
    118 Aufrufe
    Niemand hat geantwortet
  • duf - ein hübsches Kommandozeilen Tool

    Linux
    1
    0 Stimmen
    1 Beiträge
    121 Aufrufe
    Niemand hat geantwortet
  • PHP Webseite lokal einhängen mit sshfs

    PHP
    1
    0 Stimmen
    1 Beiträge
    39 Aufrufe
    Niemand hat geantwortet
  • Python & Redis-Datenbank

    Verschoben Linux
    3
    0 Stimmen
    3 Beiträge
    94 Aufrufe
    FrankMF

    Heute dann die nächste Herausforderung. Mein JSON soll so aussehen, damit ich das entsprechend erweitern kann.

    Stocks {0: {'stockname': 'Deutsche Telekom Aktie', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 100}, 1: {'stockname': 'Henkel', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 50}}

    Die Daten sollen wie oben schon ausprobiert, in einer Redis Datenbank liegen. So weit auch kein großes Problem. ABER, der Zugriff auf diese Daten war dann meine nächste Hürde 🙂

    Ok, ich habe also mehrere Einträge im JSON File bzw. in der Datenbank. Wie komme ich da nun wieder dran. Ein paar ☕ später dann die Lösung.

    Wie komme ich an den einzelnen Eintrag, also über den Index??

    r1.json().get('stocks', 1)

    Gibt als Ergebnis

    {'stockname': 'Henkel', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 50}

    Ok, das passt schon mal. Somit kann man dann gewohnt auf die einzelnen Elemente zugreifen.

    print("TESTING", testing['stockname'])

    Ausgabe

    TESTING Henkel

    Ok, Teil 1 erledigt. Jetzt habe ich ja irgendwann mehrere Elemente in der Liste und brauch dann den letzten Index , um damit was machen zu können. Also, z.B. durch die Daten zu loopen.

    objkeys = r1.json().objkeys('stocks') print("Objkeys", objkeys)

    Ausgabe

    Objkeys ['0', '1']

    Ok, kommt eine Liste des Index zurück. Damit kann man arbeiten 😉

    Ich hatte dann zum Testen mittels einer while Schleife die Daten geladen, aber jetzt beim Tippen klingelt es und wir machen das schön mit enumerate 😉

    @staticmethod def load(): data = {} for count, value in enumerate(objkeys): testing = r1.json().get('stocks', count) data[count] = { "stockname": testing['stockname'], "wkn1": testing['wkn1'], "wkn2": testing['wkn2'], "quantity": testing['quantity']} return data

    Somit habe ich die Daten aus der Redis Datenbank in einem Objekt und kann damit arbeiten.

  • 0 Stimmen
    1 Beiträge
    59 Aufrufe
    Niemand hat geantwortet
  • Hetzner Cloud - Volumes

    Allgemeine Diskussionen
    1
    0 Stimmen
    1 Beiträge
    907 Aufrufe
    Niemand hat geantwortet
  • 0 Stimmen
    2 Beiträge
    215 Aufrufe
    FrankMF

    Bildschirmfoto vom 2020-06-14 14-29-03.png

  • Installation von Grav & NGinx & PHP7.2

    Angeheftet Verschoben Grav
    2
    0 Stimmen
    2 Beiträge
    1k Aufrufe
    FrankMF

    Nachdem ich den ROCKPro64 jetzt auf den Mainline umgestellt habe, lief meine Testinstallation von Grav nicht mehr.

    Hilfreiche Sache um das Problem zu lösen -> https://gist.github.com/GhazanfarMir/03bd1f1f770a3834d47274586d46ea62

    Ich bekam immer 502 Bad Gateway, Grund war ein nicht korrekt gestarteter php-pfm Service.

    rock64@rockpro64v2_0:/usr/local/bin$ sudo service php7.2-fpm start rock64@rockpro64v2_0:/usr/local/bin$ sudo service php7.2-fpm status ● php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2018-08-16 20:15:20 CEST; 21s ago Docs: man:php-fpm7.2(8) Main PID: 3206 (php-fpm7.2) Status: "Processes active: 0, idle: 2, Requests: 3, slow: 0, Traffic: 0.2req/sec" Tasks: 3 (limit: 4622) CGroup: /system.slice/php7.2-fpm.service ├─3206 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf) ├─3207 php-fpm: pool www └─3208 php-fpm: pool www Aug 16 20:15:19 rockpro64v2_0 systemd[1]: Starting The PHP 7.2 FastCGI Process Manager... Aug 16 20:15:20 rockpro64v2_0 systemd[1]: Started The PHP 7.2 FastCGI Process Manager.