Tools Q - T¶
rsync
Das Tools rsync kann Daten zwischen lokalen und Netzwerkressourcen abgleichen bzw. synchronisieren.
In Zusammenarbeit mit SSH (oder einem spzeziellen rsync Daemon) werden hierbei nur die Datendifferenzen übertragen, was das System sehr effizient macht.
Für das Tool gibt es diverse GUIs: grsync, LuckyBackup, Unison, rsnapshot, Back In Time, …
Hinweis
Bei der Syntax für rsync sollten die abführenden Schrägstriche bei Ordnern beachtet werden.
Die folgenden beiden rsync Aufträge erledigen dieselbe Aufgabe:
rsync -a /boot/grub /data/backup
rsync -a /boot/grub/ /data/backup/grub
Weiterführender Link zu rsync: How to Transfer Files with Rsync over SSH
Screenshots
Diverse Techniken für die Erstellung von Screenshots per Tastendruck.
Übersicht auf Arch Wiki: https://wiki.archlinux.de/title/Screenshot_erstellen
Hier die Basistools ohne Desktop-Verwandschaft:
scrot
import (Paket: imagemagick)
xwd (Paket: xorg-apps)
Special: Screenshots in textbasierten echten Konsolen mit fbgrab und setterm -dump …
chvt 3; sleep 2; fbgrab /home/bild.png # tty2
# Ubuntu/sudo style: erst einen Aufruf mit sudo Authentifizierung dann
chvt 3; sleep 2; sudo fbgrab /home/bild.png # tty2
chvt wechselt in die zweite Konsole, sleep pausiert zwei Sekunden, um den Bildaufbau auf jeden Fall abzuwarten, und fbgrab erstellt das Bild in /home/bild.png
Oder alternativ als root oder mit sudo ausführen:
setterm -dump 2 -file screenshot2.txt
SHA Prüfsummentools
Für unterschiedliche SHA-Algorithmen:
sha1sum
sha224sum
sha256sum
sha384sum
sha512sum
Am besten natürlich nicht nur Prüfsummen - bei relevanten ISO-Downlaods - checken, sondern am Besten auch gleich mit entsprechender Signatur überprüfen.
Beispielhafte Vorgehensweise: https://linuxmint.com/verify.php
sl
Ich mag einfach Fun in der Konsole - man tippt ständig den ls
-Befehl und dann kann man sich
ja auch mal mit sl
vertippen.
Und dann zeigt einem die Steaming Locomotive, dass man es vielleicht etwas langsamer angehehen sollte ;-)
S.M.A.R.T.
Die SMART-Tools häufig in Paket smartmontools (und auch grafische Oberfläche gsmartcontrol) verfügbar.
In der Konsole - als einfacher Test: sudo smartctl -H /dev/sda
sudo smartctl -H /dev/sda
smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.4.0-40-generic] (local build)
Copyright (C) 2002-19, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
source bzw. .-Operator
Mit source (oder alternativ dem .
-Operator aka Dot-Operator) laden wir Ausführkommandos in der aktuellen Shell -
also ohne Subshell!
Wichtig für Neuladen der Bash-Konfig: source ~/.bashrc
bzw. . ~/.bashrc
speaker-test
Ein Tool aus dem Paket alsa-utils: speaker-test -t wav -c2
Sprachausgabe (hier: Test mit WAV-Datei an 2 Channels) mit Strg + C abbrechen.
Hinweis
Bei Tests mit Hyper-V-Maschinen bedenken: No Sound!
split
Mit split kann man größere Dateien in kleinere zerlegen: split -C 4G sicherung.tar.gz DVD.
Die erzeugten Dateien heißen hier: DVD.aa, DVD.ab und so fort. Der Zusammenbau kann mit cat
erfolgen.
ss
Die moderne Ausgabe für Sockets Statistics - also dem Tool netstat sehr ähnlich, das häufig auf Distros nachinstalliert werden muss.
Liste für lauschende Ports: ss -ltpn
Liste alle aktiven TCP-Sockets für IPv4: ss -4 -t -a
stat
Die Ausgaben von Statistik zu Filesystem-Einträgen.
$ stat ~/.bashrc
Datei: /home/UserName/.bashrc
Größe: 4149 Blöcke: 16 EA Block: 4096 Normale Datei
Gerät: 802h/2050d Inode: 1975282 Verknüpfungen: 1
Zugriff: (0644/-rw-r--r--) Uid: ( 1000/ UserName) Gid: ( 1000/ UserName)
Zugriff : 2020-07-18 19:35:13.605110813 +0200
Modifiziert: 2020-05-30 13:33:33.680894934 +0200
Geändert : 2020-05-30 13:33:33.684894917 +0200
Geburt : -
tac
Genau wie cat aber eben umgekehrt - umgedrehte Reihenfolge in Ausgabe.
tail
In Zeiten moderner Journale und Loggings nicht mehr SOOO spannend - aber immer noch gut:
tail -f /var/log/syslog
beobachtet die Datei real time
tar
Der Klassiker in der Konsole zum Archivieren und Packen. Aufgrund des Alters des Tools mit
verwirrend vielen unterschiedlichen Aufrufkombinationen: mit und ohne -
, Reihenfolge der Argumente, …
Hier meine Kurzanleitung für die tägliche Praxis mit einer ersten Übersicht über die Argumente für tar:
x - Extrahieren / Expand
c - Create / Erstellen
v - Verbose (dt.: geschwätzig; Infos in Konsole zeigen)
z - Komprimierung mit GZip
f - Filename / Datei
j - Komprimierung mit BZ2
C - Angabe eines Entpackziels:
tar ... -C /tmp
Beispiel: Archiv eines Home-Dir erstellen (möglichst von außerhalb)
tar cvzf userxyz-$(date -I).tar.gz /home/userxyz
Archiv wiederherstellen:
tar xvzf userxyz-20200620.tar.gz
(im Ordner /home
)
Sicherungsarchiv entpacken zum Analysieren / einzeln Ordner/Dateien holen:
tar xvzf userxyz-20200620.tar.gz -C /tmp
tee
Gleichzeitige Ausgabe im Standardausgabekanal und Ausgabe/Umleitung in Datei: ls -l | tee verzeichnis.txt
test bzw. [ ausdruck ]
Wichtige Technik für Shell-Skripte mit ausführlichen Abfrage- und Bedingungsauswertungen.
Neben einfachen Vergleichsoperatoren (-eq
, -ne
, -gt
, -lt
, …) sind vor Allem
Möglichkeiten zur Abfrage auf Datei- und Ordnerebene wichtig.
[ -d … ] - ist Verzeichnis?
[ -e … ] - Datei existiert?
[ -f … ] - einfache Datei (File)?
[ -x … ] - ausführbare Datei (File)?
[ ! Bedingung ] - wahr/true, wenn die Bedingung nicht erfüllt ist
[ Bedingung1 -a Bedingung2 ] - wahr/true, wenn beide Bedingungen erfüllt sind (und / and)
[ Bedingung1 -o Bedingung2 ] - wahr/true, wenn mindestens eine der Bedingungen erfüllt ist (oder / or)
Die Bash kennt außerdem noch den [[ ... ]]
Ausdruck, der mit Mustern wie *
, regulären Mustern
und den Vergleichsoperatoren &&
und ||
umgehen kann. Innerhalb von [[ ... ]]
werden Variablen nicht ausgewertet!
time
Mit time kann man Ausführzeiten von Kommandos in der Shell ermitteln lassen.
Beachten: Es laufen (normalerweise) parallel noch andere Prozesse und es kann auch zu Wartezeiten bei der Abarbeitung eines Prozesse kommen.
timedatectl
Zeigt und verändert die Zeitzone des Linux-Systems - Konfiguration: /etc/localtime
(Achtung: binäre Datei - kein roher Text!)
$ timedatectl
Local time: So 2020-07-26 12:45:25 CEST
Universal time: So 2020-07-26 10:45:25 UTC
RTC time: So 2020-07-26 10:45:25
Time zone: Europe/Berlin (CEST, +0200)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Und immer: siehe Man-Page für Argumente zum setzen von Eigenschaften.
toilet
Eine figlet (Ascii-Art) Alternative.
Skript zur Darstellung von Figlet-Fonts:
#!/bin/sh
# Prints "JoeB" using every font installed on /usr/share/figlet
# Written by Sandro Tosi <matrixhasu@gmail.com>
# Modified by Jonathan McCrohan <jmccrohan@gmail.com>
for file in /usr/share/figlet/*.tlf ; do
FONT=`basename $file | sed 's|\(.*\)\.\(.*\)|\1|'`
printf "Font: $FONT\n"
figlet -f $FONT JoeB
printf "\n"
done
Beispiel: toilet -f smmono12 "Joe Brandes"
Da lässt sich viel mit rumspielen.
top bzw. htop
Das Tool für die Table of Processes - in den verbesserten Varianten als htop, btop oder glances (mit gleichnamigen Paketen und Services!) und mehr technischen Auswertungen und Fähigkeiten.
Spezielle Tools: iotop (I/O-Aktivitäten) und powertop (Energieverbrauch - bei Notebooks - analysieren)
tr
Das Trimmen von Dateien - hier wieder das Beispiel mit dem PATH:
$ echo $PATH | tr ":" "\n"
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
tree
Die Ausgabe von Verzeichnissen als Baumstrukturen aus dem gleichnamigen Paket. Zu beachten: teils unterschiedliche Implementierungen und Argumente. Also: immer wieder die Man-Page beachten.
$ tree -d -L 1
.
├── _build
├── Chapters
├── configs
├── Pics
├── _static
└── _themes
Beispiel: nur Ordner (-d
) des ersten Levels (erste Ordnerebene -L 1
) ausgeben.
Tipp
Super für Dokumentationen! Einfach mittels >
in Textdateien umleiten.
tty
Auf welcher Konsole befinde ich mich gerade. Bei grafischen Oberflächen siehe z.B. /dev/pts/3
oder ähnlich.
type
Herausfinden, ob ein Tool zur Shell gehört, eine selbst definierte Funktion oder ein Alias darstellt.
$ type alias
alias ist eine von der Shell mitgelieferte Funktion.
$ type jbwallpaper
jbwallpaper ist ein Alias von »/home/joeb/Bilder/wallpaper/wallpaper.sh«.
$ type whereis
whereis ist /usr/bin/whereis