Skip to content

Linux Befehle - ls & tail

Linux
1 1 485
  • 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 😉

  • Every Ubuntu Linux default wallpaper

    Linux linux
    6
    1
    0 Stimmen
    6 Beiträge
    24 Aufrufe
    julian@community.nodebb.orgJ
    > Ubuntu 8.10 Intrepid Ibex also had its namesake animal on the default wallpaper, but more subtle than the last release. That was an Ibex? All this time I thought it was a coffee stain.
  • Forgejo Installation mit Restic nach Hetzner S3 sichern

    Restic restic linux forgejo
    2
    2
    0 Stimmen
    2 Beiträge
    303 Aufrufe
    FrankMF
    Ich habe ja im obigen Beispiel, den gesamten Ordner von der Postgres Installation gesichert. backup_pfad_postgres="/home/pguser/db-data" Ich habe dann mal ein wenig in der Dokumentation gelesen und das hier gefunden. https://www.postgresql.org/docs/current/app-pgdump.html Einfach den Ordner zu sichern, ist ja bei jeder Datenbank ein gewisses Risiko. Die Konsistenz der Daten ist nicht gesichert. Darum gibt es bei den Datenbanken auch immer Tools, mit denen man die Daten sichern kann. In der Doku steht folgendes. pg_dump — extract a PostgreSQL database into a script file or other archive file Aber wichtiger ist das hier. pg_dump is a utility for backing up a PostgreSQL database. It makes consistent backups even if the database is being used concurrently. pg_dump does not block other users accessing the database (readers or writers). Das macht also konsistente Backups. Wichtig noch zu wissen ist folgendes. pg_dump only dumps a single database. To back up an entire cluster, or to back up global objects that are common to all databases in a cluster (such as roles and tablespaces), use pg_dumpall. Ok, das scheint gut geeignet zu sein, um die Datenbank zu sichern. Aber, wie? Auf meinen Eingangsbeitrag kam es zu folgendem Dialog auf Mastodon. https://nrw.social/deck/@nebucatnetzer@social.linux.pizza/114132208440509237 Das war der Anstoß sich mit dem Thema zu beschäftigen. Und ich hatte dann folgende Lösung. podman exec -it postgres pg_dump -U postgres -f /var/lib/postgresql/data/dump.txt Ok, was mache ich hier? Wir führen einen Befehl vom Host aus gesehen, im Container aus. podman exec -it postgres Der Teil führt den folgenden Befehl im Container aus. pg_dump -U postgres -f /var/lib/postgresql/data/dump.txt pg_dump - Das Tool fürs Backup -U postgres - Der Befehl wird als User postgres ausgeführt -f /var/lib/postgresql/data/dump.txt - Das Dump File wird im Data Ordner abgelegt, den haben wir ja persistent auf dem Host. Somit kann ich das jetzt einfach in mein Backup Script einbauen und brauchen nicht mehr den ganzen Ordner zu kopieren, sondern nur noch das Dump File. Ich werde diese Änderungen in das obige Script einbauen.
  • MongoDB - Erste Erfahrungen

    Linux mongodb linux ki-generiert
    2
    2
    0 Stimmen
    2 Beiträge
    250 Aufrufe
    FrankMF
    So frisch von der MongoDB Front und wieder viel gelernt, weil beim Üben macht man Fehler Oben war ja mongodump & mongorestore von der KI empfohlen. Hier das wie ich es gemacht habe. mongodump frank@redis-stack:~$ mongodump -u frank -p '<password>' --host 192.168.3.9 --authenticationDatabase admin -d portfolio -o mongodump/ 2024-04-06T09:29:25.174+0200 writing portfolio.stockList to mongodump/portfolio/stockList.bson 2024-04-06T09:29:25.175+0200 writing portfolio.users to mongodump/portfolio/users.bson 2024-04-06T09:29:25.175+0200 done dumping portfolio.stockList (8 documents) 2024-04-06T09:29:25.176+0200 writing portfolio.total_sum to mongodump/portfolio/total_sum.bson 2024-04-06T09:29:25.177+0200 done dumping portfolio.total_sum (1 document) 2024-04-06T09:29:25.177+0200 writing portfolio.old_total_sum to mongodump/portfolio/old_total_sum.bson 2024-04-06T09:29:25.177+0200 writing portfolio.stocks to mongodump/portfolio/stocks.bson 2024-04-06T09:29:25.177+0200 done dumping portfolio.users (4 documents) 2024-04-06T09:29:25.178+0200 writing portfolio.settings to mongodump/portfolio/settings.bson 2024-04-06T09:29:25.178+0200 done dumping portfolio.settings (1 document) 2024-04-06T09:29:25.179+0200 done dumping portfolio.old_total_sum (1 document) 2024-04-06T09:29:25.179+0200 done dumping portfolio.stocks (34 documents) mongorestore mongorestore -u frank -p '<password>' --host 192.168.3.9 --authenticationDatabase admin -d portfolio mongodump/meineDatenbank/ Hier wird die Datensicherung mongodump/meineDatenbank/ in die neue Datenbank portfolio transferiert. Grund für das Ganze? Mich hatte der Datenbank Name meineDatenbank gestört. Benutzerrechte Jetzt der Teil wo man schnell was falsch machen kann Ich hatte also die neue Datenbank, konnte sie aber nicht lesen. Fehlten halt die Rechte. Ich hatte dann so was hier gemacht. db.updateUser("frank", { roles: [ { role: "readWrite", db: "meineDatenbank" }, { role: "readWrite", db: "portfolio" }]}) Ging auch prima, kam ein ok zurück. Nun das Problem, ich hatte beim Einrichten, den User frank als admin benutzt. Durch den oben abgesetzten Befehl (frank ist ja admin), wurden die neuen Rechte gesetzt und die Rechte als Admin entzogen!! Das war jetzt nicht wirklich das was ich gebrauchen konnte. LOL Ich hatte jetzt keine Kontrolle mehr über die DB. Das war aber nicht so wirklich kompliziert, das wieder zu ändern. Die Authentication temporär abstellen. Also /etc/mongod.conf editieren und #security: security.authorization: enabled eben mal auskommentieren. Den Daemon neustarten und anmelden an der DB. mongosh --host 192.168.3.9 Danach neuen User anlegen db.createUser({ user: "<name>", pwd: "<password>", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] }) mongod.conf wieder ändern und neustarten. Danach hat man wieder eine DB mit Authentifizierung und einen neuen Admin. Ich bin diesmal, man lernt ja, anders vorgegangen. Es gibt nun einen Admin für die DB und einen User zum Benutzen der Datenbanken! So wie man es auch auf einem produktiven System auch machen würde. Wenn ich jetzt mal was an den Benutzerrechten des Users ändere, kann mir das mit dem Admin nicht mehr passieren. Hoffe ich
  • RockPro64 - Mainline Kernel 6.8.0-rc3

    ROCKPro64 rockpro64 linux mainline
    2
    0 Stimmen
    2 Beiträge
    480 Aufrufe
    FrankMF
    https://github.com/ayufan-rock64/linux-mainline-kernel/releases/tag/6.8.0-1190-ayufan
  • Samba Installation - Server & Client

    Linux samba linux
    1
    0 Stimmen
    1 Beiträge
    168 Aufrufe
    Niemand hat geantwortet
  • Rest-Server v0.12.0 released

    Restic rest-server restic linux
    1
    0 Stimmen
    1 Beiträge
    123 Aufrufe
    Niemand hat geantwortet
  • NanoPi R2S - OpenWRT VLAN

    Verschoben NanoPi R2S nanopir2s openwrt linux
    11
    8
    0 Stimmen
    11 Beiträge
    2k Aufrufe
    FrankMF
    @thrakath1980 Ok, du meinst die FriendlyArm Variante von OpenWRT. Ich denke, da sollte man besser alles neu machen. Leider ist das bei OpenWRT nicht so einfach zu updaten/upgraden wie z.B. bei einem Linux Kernel. Ich habe es mal runtergeladen, wenn ich mal Zeit habe, schau ich mal rein.
  • Raid1 - Platte verschwunden!?

    Verschoben Linux linux
    1
    1
    1 Stimmen
    1 Beiträge
    459 Aufrufe
    Niemand hat geantwortet