Lesezeit ca. 21 Min.
arrow_back

Der Terminal-Guide: Die Beispielsammlung


Logo von LinuxWelt
LinuxWelt - epaper ⋅ Ausgabe 3/2022 vom 25.03.2022

Artikelbild für den Artikel "Der Terminal-Guide: Die Beispielsammlung" aus der Ausgabe 3/2022 von LinuxWelt. Dieses epaper sofort kaufen oder online lesen mit der Zeitschriften-Flatrate United Kiosk NEWS.

Bildquelle: LinuxWelt, Ausgabe 3/2022

1. Dateien

cat & Co: Zur Ausgabe von Text-und Konfigurationsdateien auf dem Terminal steht mit cat, less, more, head, tail eine ganze Reihe von Alternativen bereit. Für den interaktiven Einsatz wird das einfache cat meistens genügen:

cat /etc/fstab

head und tail beschränken sich auf die Ausgabe der ersten oder der letzten zehn Zeilen, auf Wunsch auch mit genauer Zeilenangabe (hier 20):

tail -n 20 /var/log/syslog

more und less erlauben seitenweises Blättern, was dann aber auch ein Editor wie nano oder mcedit übernehmen kann.

chmod & chown sind unverzichtbar zur Rechteänderung und Besitzübernahme von Dateien auf Linux-Dateisystemen (und optional auf NTFS). chown erledigt mit Schalter „-R“ rekursiv den Dateibesitz (Benutzer:Gruppe):

chown -R ha:ha /srv/renkforce

Den Dateibesitz vorausgesetzt, ändert chmod die Dateirechte – mit „-R“ rekursiv:

chmod -R 777 ~/Dokumente

Das Oktalrecht „7“ erlaubt ...

Weiterlesen
epaper-Einzelheft 6,99€
NEWS Jetzt gratis testen
Bereits gekauft?Anmelden & Lesen
Leseprobe: Abdruck mit freundlicher Genehmigung von LinuxWelt. Alle Rechte vorbehalten.
Lesen Sie jetzt diesen Artikel und viele weitere spannende Reportagen, Interviews, Hintergrundberichte, Kommentare und mehr aus über 1050 Magazinen und Zeitungen. Mit der Zeitschriften-Flatrate NEWS von United Kiosk können Sie nicht nur in den aktuellen Ausgaben, sondern auch in Sonderheften und im umfassenden Archiv der Titel stöbern und nach Ihren Themen und Interessensgebieten suchen. Neben der großen Auswahl und dem einfachen Zugriff auf das aktuelle Wissen der Welt profitieren Sie unter anderem von diesen fünf Vorteilen:

  • Schwerpunkt auf deutschsprachige Magazine
  • Papier sparen & Umwelt schonen
  • Nur bei uns: Leselisten (wie Playlists)
  • Zertifizierte Sicherheit
  • Freundlicher Service
Erfahren Sie hier mehr über United Kiosk NEWS.

Mehr aus dieser Ausgabe

Titelbild der Ausgabe 3/2022 von Ist Linus Torvalds Satoshi?. Zeitschriften als Abo oder epaper bei United Kiosk online kaufen.
Ist Linus Torvalds Satoshi?
Titelbild der Ausgabe 3/2022 von Heimnetz-Tuning macht unabhängiger. Zeitschriften als Abo oder epaper bei United Kiosk online kaufen.
Heimnetz-Tuning macht unabhängiger
Titelbild der Ausgabe 3/2022 von Auf DVD: Fünf Mal Linux. Zeitschriften als Abo oder epaper bei United Kiosk online kaufen.
Auf DVD: Fünf Mal Linux
Titelbild der Ausgabe 3/2022 von Sagen Sie uns Ihre Meinung – und gewinnen Sie!. Zeitschriften als Abo oder epaper bei United Kiosk online kaufen.
Sagen Sie uns Ihre Meinung – und gewinnen Sie!
Mehr Lesetipps
Blättern im Magazin
Der Terminal-Guide
Vorheriger Artikel
Der Terminal-Guide
Im Anmarsch: Fritz- OS 7.50
Nächster Artikel
Im Anmarsch: Fritz- OS 7.50
Mehr Lesetipps

... alles für alle (Stelle 1: Benutzerkonto, Stelle 2: Gruppe, Stelle 3: alle anderen). Rekursives chown unterscheidet nicht zwischen Dateien und Ordnern, was zu Problemen führen kann. Dies kann die Zuhilfenahme von –› (Punkt 1) erfordern.

cp kopiert Dateien und aktualisiert („-u“) auch rekursiv („-r“) ganze Verzeichnisse.

cp mein.pdf ~/Schreibtisch

cp -ru /mnt/transfer/* ~/transfer/

file ermittelt den Dateityp und die genauen inhaltlichen Dateieigenschaften:

file bild.png ls > liste.txt && file -f liste.txt

file ist nützlich, wenn Name und Extension irreführend sind. file macht eine Headeranalyse und lässt sich nicht von Namen täuschen. Weniger präzise ist mimetype mit Schalter „-M“.

find ist Herr über alle Dateiattribute (Name, Alter, Größe, Rechte) und sucht, filtert, löscht, bearbeitet Dateien rekursiv. Wichtige Schalter sind -iname, -type, -delete, -exec. Folgender Befehl listet alle Dateien im Home-Verzeichnis, die jünger sind als drei Tage:

find $HOME -mtime -3

Das nächste Beispiel zeigt alle JPG-Bilder, die höchstens fünf, mindestens vier Jahre alt sind:

find $HOME -mtime -1800 -mtime +1400 -iname *.jpg und

find . -size +800M -size -2G

liefert alle Dateien mit einer Größe zwischen 800 MB und 2 GB. Bei typischen Rechteänderungen, die zwischen Dateien („-type f“) und Ordnern („-type d“) unterscheiden sollen, hilft find ebenfalls aus.

find . -type f -exec chmod 664 {} \;

find . -type d -exec chmod 775 {} \;

ln erstellt Softlinks (Schalter „-s“) für Dateien und Ordner sowie Hardlinks für Dateien.

ln -s /media/sepp/ISOs/ ~/Schreibtisch/ISOs

locate bietet turboschnelle Dateinamenssuche. Das Paket „mlocate“ (!) enthält neben dem Suchkommando locate das Indexierungstool updatedb, das in regelmäßigen Abständen gestartet werden muss. Suchkommandos wie

locate -A -i heisenberg einstein

liefern sofort alle passenden Dateien mit Pfad. ls listet und filtert Dateien und Verzeichnisse nach vielen Kriterien und beherrscht auch rekursive Listen:

ls *.odt

ls -R /media/Archiv/

mv benennt Dateien im gleichen Ordner um oder verschiebt sie in einen anderen Ordner:

mv datei.txt datei.old

mv /mnt/transfer/text.txt ~/.text.txt

rm löscht einzelne Dateien, Dateimuster innerhalb eines Ordners, aber auch ganze Verzeichnisse samt Inhalt:

rm test.txt

rm /home/sepp/*.jpg

rm -r /home/sepp/kram

2. Ordner

cd wechselt in das angegebene Verzeichnis. Bei fehlender (also relativer) Pfadangabe

cd Bilder

muss sich der Ordner „Bilder“ im aktuellen Ordner befinden. Absolute Pfadangaben funktionieren immer:

cd /media/data/Bilder

„cd“ ohne Angabe geht immer ins Home, „cd ..“ ins nächsthöhere Verzeichnis (siehe auch –› Punkt 11, cdpath). du ermittelt den Speicherplatz von angegebenen Verzeichnissen oder des aktuellen Ordners (ohne Parameter):

du /home/sepp/pictures

Eine einfache Gesamtsumme liefert diese Variante:

du -hs /home/sepp

mkdir erstellt neue, leere Verzeichnisse – mit relativer oder absoluter Pfadangabe:

mkdir test

mkdir /home/sepp/test

rmdir löscht ausschließlich leere Verzeichnisse – mit relativer oder absoluter Pfadangabe:

rmdir /media/data/Bilder

Zum Löschen mit Inhalt, siehe rm (Punkt 1).

tree ist kein Muss, aber eine oft bevorzugte ls-Alternative bei der Auflistung von Dateien:

tree /home

tree -fas /home

Der zweite Befehl zeigt die Ordnerstruktur hierarchisch. „-f“ liefert die vollen Pfade, „-a“ steht für alle (auch versteckte), und „-s“ zeigt die Dateigrößen.

rsync kopiert, aktualisiert („-u“), spiegelt („--delete“) Verzeichnisse rekursiv („-a“) im lokalen Dateisystem und im Netzwerk:

rsync -au /home/sepp/ /media/USB/backup

Schalter „-dry-run“ (kurz „-n“) dient als Simulation und Vorabtest:

rsync -au --delete --dry-run /home/sepp/ /media/sepp/ USB/backup

Besonderes Highlight im Netzwerk ist die direkte Unterstützung von SSH:

rsync -au --delete -e "ssh -p 22" /srv/archiv/ root@192.168.178.10:/srv/boss/Archiv

tar komprimiert Ordner und Dateien:

tar -czf 2022_02_12 /home/sepp/

„-c“ steht für create, „-z“ für platzsparende gzip-Komprimierung,

„-f“ sorgt für rekursiven Umfang.

Der Name des Archivs folgt nach den Schaltern, am Ende der Pfad der Quelldateien. Schalter „-x“

tar -xf 2022_02_12

entpackt Tar-Archive.

3. System

Infos zur Distribution sind je nach Distribution an unterschiedlichen Stellen zu finden. Eine zuverlässige Quelle unter jedem Linux sind die Dateien „/etc/*_ver*“ und „/etc/*-rel*“. Der Befehl

cat /etc/*_ver* /etc/*-rel*

sollte auf jedem System ausführlichere Infos liefern als die mageren Alternativen

lsb_release -a

und

uname -a

/var/log ist der Ablageort für diverse Log-und Protokolldateien (syslog, auth.log, dpkg, Apache, Samba). syslog ist das Systemlogbuch, auth.log protokolliert alle Systemanmeldungen, dpkp.log vermerkt alle manuellen (De-)Installationen. Unter „/var/log/samba“ erscheint jedes zugreifende Netzgerät mit Hostnamen oder lokaler IP-Adresse.

hostname liefert Servername oder Computername des Systems, mit Schalter „-d“

hostname -d

den Namen der DNS-Domain, im Heimnetz jenen des Routers. shutdown und reboot benötigen root-Recht und schalten das System sofort oder nach definierter Frist (Sekunden) ab oder lösen einen Neustart aus. reboot ist eigentlich überflüssig und durch

shutdown -r

zu ersetzen.

Der Befehl

shutdown now

fährt das System sofort herunter, während

shutdown 22:00

einen bestimmten Zeitpunkt definiert. Interaktiv und flexibel ist

shutdown +30

mit einer angegebenen Minutenfrist.

systemd-analyze ist eines der vielen Tools des Init-Daemons systemd. Es protokolliert detailliert den Bootprozess und kann die Ursache von Bootverzögerungen entlarven. Eine knappe Zeitmessung bietet

systemd-analyze

Die Befehle

systemd-analyze blame

systemd-analyze dump

bringen in unterschiedlicher Darstellung die millisekundengenaue Abfolge des Systemstarts.

sysctl steuert viele Kernelparameter. Der Befehl

sysctl -a

listet die zahlreichen Optionen, die sysctl (interaktiv) oder die Systemdatei „/etc/sysctl.conf“ (permanent) manipulieren kann. Die nachfolgenden Beispiele aktivieren die Sysrq-Hotkeys (Notfallhotkeys wie Alt-Druck-B) und ändern das Swap-Verhalten:

sysctl kernel.sysrq=1

sysctl vm.swappiness=90

Das gilt nur für die Sitzung. Dauerhaft muss die Änderung in die Datei „/etc/sysctl.conf“ eingetragen werden.

grub-install ist der typische Reparaturbefehl nach Bootproblemen und schreibt die Grub-Bootumgebung neu. Dabei muss das Zielgerät für die Grub-Umgebung angegeben werden:

grub-install --recheck /dev/sda

update-grub

Die Kennung „/dev/sda“, also die erste interne Festplatte, ist ein Beispiel und muss gegebenenfalls angepasst werden.

which ermittelt den Systempfad eines Programms. Dieser wird etwa für Croneinträge, Autostarts oder Desktopverknüpfungen benötigt.

which poweroff

Das ähnliche whereis

whereis poweroff

liefert neben dem Systempfad des Programms eventuelle weitere zu Bibliotheken oder Manpages.

service informiert über aktive und inaktive Systemdienste und bietet deren Steuerung. service ist auf systemd-Distributionen im Prinzip obsolet und durch das mächtigere systemctl ersetzt, aber aus Kompatibilitätsgründen weiterhin vertreten. Der Befehl

service --status-all

bietet eine Übersicht. Für einen bestimmten Dienst gibt es folgende Aktionen (Info, Abschalten, Neustart):

service apache2 status

service apache2 stop

service apache2 restart

systemctl ist das wichtigste Kommandozeilenwerkzeug von systemd. Es informiert über aktive und inaktive Systemdienste und bietet deren Steuerung. Ohne Optionen listet

systemctl 

einfach alle geladenen Units auf. Folgender Befehl filtert die Systemdienste:

systemctl list-unit-files --type service

systemctl kann Dienste abschalten, starten, dauerhaft deaktivieren und wieder reaktivieren

: systemctl stop apache2

systemctl start apache2

systemctl disable apache2

systemctl enable apache2

4. Software

apt (pacman / yum): Terminal-Paketmanager aktualisieren das System inklusive der kompletten Software, (de-)installieren Software und entfernen überflüssige gewordene Pakete.

apt update && apt upgrade

apt install vlc apt remove vlc

apt autoremove

Die Beispiele gelten für die verbreiteten Debian/Ubuntu-Systeme mit DEB-Softwarepaketen. In Arch-Distributionen (Manjaro, Endeavour) und RPM-basierten Systeme (Fedora, Cent-OS) heißen die analogen Paketmanager pacman und yum mit gleicher Reichweite:

pacman -Syu

yum check-update && yum update

Dies entspricht apt update && apt upgrade unter Debian & Co. dpkg installiert Software und ist die Basis des Paketmanagers apt in Debian-basierten Distributionen. Folgender Befehl installiert ein heruntergeladenes, lokal vorliegendes DEB-Paket:

dpkg -i meinbrowser.deb

Schalter „-i“ ist die Kurzform für „--install“. Weitere dpkg-Optionen sind meist nicht erforderlich, weil diese über apt gesteuert werden können.

dpkg-query ist das Info-Tool zu dpkg. Eine Komplettübersicht zur installierten Software liefert

dpkg-query -l

und sehr detailliert:

dpkg-query -s

Nützlich ist ferner, mit

dpkg-query -L mc

den Umfang eines Pakets zu ermitteln, da Linux-Pakete oft eine ganze Anzahl von Komponenten enthalten.

make kompiliert Quellcode zu lauffähigen Programmen. Falls es keine anderslautenden Anweisungen gibt, ist im Verzeichnis des heruntergeladenen Quellcodes folgender Dreischritt typisch:

./configure

make

make install

man zeigt die komplette Hilfeseite (Manpage) des angegebenen Programms. Auch grafische Programme haben Manpages.

man rsync

man --html rsync

Leertaste blättert seitenweise, Cursor zeilenweise, Taste Q schließt die Manpage. Bei weniger komplexen Tools genügt statt „man“ auch die Abfrage „[befehl] --help“.

5. Hardware

Infotools zur Hardware wie lscpu (CPU-Info), free (RAM-Info), lspci (PCI-Info) lsusb (USB-Info) bringen größtenteils nur die Infos in lesbare Form, die jedes Linux im Loop-Ordner „/proc/“ etwa als „/proc/cpuinfo“ und „/proc/meminfo“ ablegt und dynamisch aktualisiert. Die Rohdaten an dieser Stelle sind nämlich größtenteils unkomfortabel lesbar und zu umfangreich. Hervorragende Info-Datensammler sind inxi (siehe Punkt 11) und das grafische Tool hardinfo.

dmesg zeigt das detaillierte Kernel-Protokoll vom Systemstart bis jetzt. Es ist eine der wichtigsten Quellen zur Ursachenforschung bei Boot-, Hardware-und Systemproblemen:

dmesg -T

Schalter -T macht die Zeitangaben besser lesbar und

dmesg -T --level=emerg,alert,crit,err,warn

filtert mit Levelangaben harmlose Infomeldungen weg. Bei reproduzierbaren Problemen löscht

dmesg -c

alle bisherigen Meldungen, um dann nach einer problematischen Aktion erneut dmesg zu befragen.

dmidecode liefert genaue Hardwareinfos. Zum Filtern mit „--type“ gibt es wahlweise Schlüsselwörter oder exakte Kennziffern. Mögliche Schlüsselwörter sind „bios“, „system“, „baseboard“, „chassis“, „processor“, „memory“, „cache“, „connector“, „slot“ – also etwa:

dmidecode –-type bios

dmidecode –-type memory

Die 42 Ziffernschlüssel für exakte Einzelinfos sind der Manpage zu entnehmen.

hwinfo ist meistens nicht Standard, aber über den gleichnamigen Paketnamen überall schnell nachinstalliert. Hwinfo kann lscpu, lsusb, lspci und lshw ersetzen:

hwinfo --short

verschafft einen guten Überblick über CPU, Grafikkarte, Festplatten, Netzwerkadapter und Festplattencontroller. Eine Vielzahl von (kombinierbaren) Schlüsselwörtern kann die Recherche eingrenzen:

hwinfo --disk --partition

Insgesamt 50 verfügbaren Kategorien zeigt das Tool nach hwinfo -help an.

lshw ist erstaunlicherweise bei den meisten Distributionen Standard. Brauchbar ist

lshw –short

mit einer knappen Übersicht zu CPU, RAM, Netzadapter, Laufwerke. Ansonsten ist hwinfo das bessere Werkzeug.

sysbench ist ein einfacher Benchmark im Terminal für CPU, RAM und Datenträger, der einen Leistungsvergleich verschiedener Rechner und Komponenten erlaubt:

sysbench cpu run

sysbench memory run

Die Option für Datenträger („fileio“) ist umständlich und bleibt hier ohne Beispiel.

6. Laufwerke

Die Konfigurationsdatei „/etc/fstab“ bleibt für Linux-Nutzer eine zentrale Anlaufstelle für statische Laufwerkseinbindungen, wenngleich Installer mindestens die Systempartition eintragen und grafische Werkzeuge wie Gnome-Disks auch nachträgliche Einhängepunkte in die fstab übernehmen können. Eine typische Mountzeile sieht wie folgt aus:

#Kennung Mountordner FS Optionen Dump Pass UUID=[…] /srv/bigboss ext4 defaults 0 0

„Dump“ ist historisch und immer „0“, „Pass“ gibt an, ob Dateisystemprüfungen erfolgen sollen. Statt der UUID (–› Punkt 6: lsblk, blkid) ist auch, aber weniger eindeutig „Label=“ oder die Device-Kennung „/dev/sd[x][y]“ möglich. Der Umfang der Optionen in Spalte 4 ist umfangreich und auch in grafischen Tools nur in Teilmenge berücksichtigt (–› mount).

blkid –› lsblk

dd ist ein Binärkopierer für Laufwerksabbilder:

dd if=datei.iso of=/dev/sdf bs=4M status=progress

„if“ definiert die Quelle (input file), „of“ das Ziel (output file). Mit „bs“ (blocksize) lässt sich der Durchsatz beschleunigen und „status=progress“) sorgt für eine Statusmeldung. dd schreibt auch – umgekehrt – Abbildsicherungen von Datenträgern:

dd if=/dev/sda1 of=/srv/data/raspbian.img

df ermittelt den belegten und freien Platz von Partitionen und Festplatten und liefert einen knappen und schnellen Überblick:

df

df -h | grep /dev/sd

fdisk / gdisk dienen zur Partitionierung auf der Kommandozeile (siehe auch –› parted). Nachdem das ältere fdisk inzwischen auch den GPT-Partitionsstil und somit auch Datenträger jenseits der Zwei-TB-Kapazität beherrscht, ist gdisk eigentlich überflüssig, wird aber für GPT-Partitionsstil nach wie vor empfohlen. Folgender Befehl

fdisk -l /dev/sdc

liefert Informationen zum angegebenen Datenträger. Der Befehl

fdisk /dev/sdc

startet die Aktion, die über definierte Buchstabeneingabe verläuft („m“ für Hilfe, „n“ für neue Partition etc.). fdisk und gdisk sind unbequem, aber logisch und warnen vor destruktiven Aktionen. Wer es etwas bequemer haben will, kann die funktionsidentischen Tools cfdisk und cgdisk nutzen. Hier gibt es eine menügesteuerte Bedienung über Tabulator-und Navigationstasten. hdparm steuert das hardwaretechnische Verhalten der Laufwerke wie etwa den Time-out für den Ruhezustand und kann Laufwerke ein-und ausschalten. Schalter „-C“

hdparm -C /dev/sda

frägt den Status eines Laufwerks ab (aktiv?). Folgender Befehl

hdparm -y /dev/sda

versetzt das Laufwerk in den Stand-by-Modus und Schalter „-S“

hdparm -S 60 /dev/sda

setzt den Timer für den Ruhezustand (Zahl in Sekunden mal 5, hier 60*5 = 5 Minuten).

lsblk zeigt angeschlossene Datenträger mit Mountpunkt. Folgender Befehl

lsblk -f

zeigt auch die eindeutigen UUID-Kennungen. Mit Schalter „-o“ sind sehr detaillierte Recherchen möglich:

lsblk -o name,fstype,uuid,size,owner,type,mountpoint ,label,model

Das ähnliche –› blkid wird dadurch weitgehend überflüssig.

mkfs formatiert den angegebenen Datenträger mit dem gewünschten Dateisystem („Make Filesystem“). Das Dateisystem wird nach „mkfs.“ angegeben, der Datenträger als letzter Parameter.

mkfs.ext4 -L Daten /dev/sdc1

mkfs.ntfs --quick -L Daten /dev/sdc1

Je nach gewähltem Dateisystem unterstützt mkfs diverse weitere Optionen.

mount zeigt im Dateisystem eingehängte Medien und lädt aktiv Datenträger in den gewünschten Mountpunkt (Ordner). Folgender Befehl

mount | grep /dev/sd

zeigt alle eingehängten SATA-Laufwerke. Das Kommando

mount /dev/sda1 /media/sepp/usb_2TB

hängt „sda1“ im angegebenen Mountordner ein. Der einfache Befehl

mount -a

arbeitet alle Anweisungen der Datei –› „/etc/fstab“ ab, während

mount -o loop Datei.iso /mnt/iso

eine ISO-Datei einhängt. Mount kennt nach Schalter „-o“ annähernd 30 Optionen, die interaktiv oder in der Datei „/etc/fstab“ angegeben werden können. „defaults“ ist eine Sammeloption, mit der man im Zweifel nicht viel verkehrt macht.

parted ist ein Script-fähiges Partitionierungsprogramm und Basis für den grafischen Klassiker Gparted. Das Tool ist mächtig, aber in der Bedienung noch unbequemer als –› fdisk/gdisk.

parted -l

zeigt eine kompetente Laufwerksübersicht. Den interaktiven Modus startet

parted

oder direkt parted /dev/sda. Dort gibt es den Befehl „print“ für diverse Informationen und „select“ für die Laufwerksauswahl. Die wichtigsten Bearbeitungsbefehle sind mklabel, mkpart, resizepart.

7. Benutzerkonten

adduser richtet ein neues Systemkonto inklusive Home-Verzeichnis ein:

adduser sepp

Dabei wird automatisch ein Systemkennwort abgefragt. adduser ist ein Wrapper für das eigentliche Kernprogramm useradd. Funktional sind die Tools identisch, adduser ist etwas einfacher. deluser löscht ein bestehendes Systemkonto. Soll auch das zugehörige Home-Verzeichnis gelöscht werden, muss das explizit angegeben werden:

deluser sepp

deluser sepp --remove-home

deluser ist ein Wrapper für das eigentliche Kernprogramm userdel. Funktional sind die Tools identisch, deluser ist etwas einfacher. id ist ein kleines Infotool, das Gruppenzugehörigkeiten und UID-Kennungen von Systemkonten

id

id sepp

knapp und trocken ausliefert.

passwd ohne weiteren Angabe

passwd

ändert das eigene Systemkennwort, bei Angabe eines anderen Kontos (sudo-Recht vorausgesetzt)

passwd sepp

auch das Kennwort eines anderen Benutzers.

smbpasswd fügt auf einem Samba-Serversystem neue Samba-Benutzer hinzu („-a“), löscht diese („-x“), aktiviert („-e“) und deaktiviert sie („-d“):

smbpasswd -a sepp

smbpasswd -x sepp

Samba-Konten sind unabhängig vom Systemkonto, können aber der Einfachheit halber dasselbe Passwort verwenden.

sudo (sudoedit zum Editieren) wechselt den Benutzerkontext – meist zu root mit uneingeschränkten Rechten (für root ist keine Kontoangabe nötig):

sudo apt install filezilla

sudoedit /etc/ssh/sshd_config

Die Liste aller sudo-berechtigten Konten liegt in der Datei „/etc/ sudoers“ (–› visudo).

usermod bearbeitet bestehende Benutzerkonten. Folgende Beispiele zeigen die Aufnahme in eine weitere Gruppe (-aG), eine Kontonamensänderung (-l) und das Sperren eines Kontos (-L):

usermod -aG sudo sepp

usermod -l sepp anton

usermod -L sepp

visudo ist der empfohlene, weil fehlertolerante Spezialeditor für die Konfigurationsdatei „/etc/sudoers“. Eine typische Zeile, die dem Benutzer „sepp“ uneingeschränktes sudo-Recht einräumt, lautet wie folgt:

sepp ALL=(ALL:ALL) ALL

8. Prozesse / Tasks

Autostarts bei der Desktopanmeldung sind nützlich, um wichtige Systemsoftware wie Audio oder Aktualisierungsbenachrichtigung bereitzustellen. Alle Autostarts für den aktuellen Benutzer werden als „.desktop“-Dateien unter

~/.config/autostart

gespeichert. Die globalen Autostarts liegen hier:

/etc/xdg/autostart/

Es handelt sich um Textdateien, die mit jedem Editor bearbeitet werden können, wobei der Programmaufruf in der Zeile „Exec=“ definiert ist. Die meisten Distributionen bieten ein grafisches Tool, um die Autostarts zu verwalten („Startprogramme“).

crontab zeigt (crontab -l) oder editiert (crontab -e) die Datei des Systemdienstes Cron, der für zeitgesteuerte Tasks zuständig ist:

crontab –e

Wenn kein Konto angegeben ist, handelt sich um die Crontab des aktuellen Benutzers. Der Befehl

sudo crontab -e

öffnet folglich die Crontab des root-Kontos. Crontab-Einträge benötigen fünf Zeitangaben (Minute, Stunde, Tag, Monat, Wochentag)

mit Leerzeichen getrennt und danach den Programmbefehl. Ein tägliches Backup um 18:00 Uhr, tägliches Abschalten des Systems um 22:00 Uhr kann dann so aussehen (benötigt root-Crontab für den Befehl shutdown):

0 18 * * * /usr/bin/rsync -av /home/sepp/ /svr/ backup/sepp

0 22 * * * /usr/sbin/shutdown now

disown löst ein im Terminal gestartetes Programm vom Elternprozess (Terminal). Das ist nur am grafischen Desktop relevant, um zu verhindern, dass mit dem Schließen des Terminals auch das Programm beendet wird. Außerdem kann das Terminal dann für weitere Kommandos verwendet werden.

gedit ~/.bashrc & disow

Geht es nur um die Verwendbarkeit des Terminals für weitere Eingaben, dann genügt dies:

gedit ~/.bashrc &

htop liefert auf der Konsole einen präzisen Überblick über alle laufenden Prozesse und macht Tools wie top, iotop oder dstat in vielen Fällen überflüssig, siehe –› Punkt 11: htop.

iotop zeigt Infos zur Festplattenaktivität. Dabei zeigt es die dafür verantwortlichen Tasks und unterscheidet Lese-und Schreib-Operationen. Um von vornherein nur die aktiven Prozesse zu filtern, eignet sich der Schalter „--only“:

iotop --only

killall und pkill beenden Tasks über die Angabe des Programmnamens. Das ist nicht selbstverständlich, da Task-Killer wie das Lowlevel-Tool kill die exakte PID (Process ID) benötigen. killall erfordert den vollständigen Programmnamen

killall firefox

und pkill ist sogar mit einem Teilstring des Programmnamens zufrieden (Vorsicht!):

pkill fire

Interaktiv arbeitet man in der Regel mit top und htop einfacher: top ermöglicht nach Eingabe „k“ den Abschuss eines Programms. Bei htop hilft beim markierten Prozess F9, um dann zwischen „SIGTERM“ und härterem „SIGKILL“ (und weiteren Optionen) zu wählen.

lsof zeigt alle aktuell geöffneten Dateien („list open files“)

lsof

oder jene eines bestimmten Pfads

lsof /media/

oder alle von einem bestimmten Prozess geöffneten Dateien:

lsof -c nginx

Anlässe für lsof sind Zugriffsprobleme oder Shutdown-Bremsen.

ps ist ein Lowlevel-Tool zur Prozessanalyse und ermittelt die PID von Tasks, um sie wiederum mit kill beenden zu können. Im interaktiven Alltag wird sich der Anwender eher an ein Tool wie htop oder top halten.

ps –A

zeigt alle laufenden Prozesse. Bei der Suche nach einem bestimmten Programmnamen hilft

ps –A | grep apache2

oder die kleine Ergänzung pgrep, die genau dasselbe macht:

pgrep apache2

top ist ein Prozessmanager wie das (bessere) –› htop. Es verliert neben htop aber seine Berechtigung nicht ganz: Sein Vorzug ist die Weitergabe der Prozessinfos an eine Datei:

top -b -d 10.0 > top.txt

Der Schalter „-b“ sorgt für den Batchmodus, der die eigene Anzeige von top abschaltet. Die Prozessliste wird hier alle zehn Sekunden („-d“ für „delay“) an die Ausgabedatei geschickt.

9. Netzwerk / Web

ifconfig ohne weitere Angaben zeigt Netzadapter, IPv4/IPv6-Adresse, MAC-Adresse, Download-und Uploadmenge. Es kann aber auch Adapter abschalten

ifconfig eth0 down

oder eine neue IP-Adresse beziehen:

ifconfig eth0 192.168.1.25

Das nach wie vor vorhandene Tool ist aber im Prinzip obsolet und vollständig durch das neuere ip ersetzt.

ip ermittelt Netzwerk-und Adapterinfos und ersetzt zunehmend ifconfig. Der Befehl

ip address

ermittelt die aktuelle IP Adresse (Kürzungen wie „ip a“ genügen, sofern sie eindeutig bleiben).

ip link

zeigt die Netzwerkadapter mit MAC-Adresse und folgendes Beispiel

ip link set enp3s0 down

schaltet den Adapter enp3s0 ab.

net ist – wie die Eingabe ohne Parameter belegt – eine umfangreiche Sammlung von Befehlen zur Netzwerk-und Samba-Administration in Analogie zum Windows-Tool net. Folgende Beispiele beschränken sich auf einen einzigen Unterbefehl „net usershare“:

net usershare list

zeigt die aktuellen Samba-Freigaben auf Benutzerebene (im Unterschied zu administrativen Freigaben via „/etc/samba/smb.conf“). Der Befehl

net usershare add musik ~/Musik sepp:F

gibt den Ordner „Musik“ mit vollen Rechten für den Samba-Nutzer „sepp“ frei. Der Samba-Server muss wie bei administrativen Freigaben installiert sein und laufen.

nmap leistet eine Komplettübersicht der lokalen LAN-Adressen, Dienste und Ports sowie Analyse von öffentlichen WAN-Adressen. Folgender Befehl

nmap -sP 192.168.178.*

schickt Ping-Anfragen an alle 255 Adressen des Adressraum. Das schnelle Scan-Ping (Schalter „-sP“) zeigt alle laufenden Netzgeräte. Ohne „-sP“ macht nmap zeitaufwendige Portscans mit Hostnamen, IP-Adresse, MAC-Adresse und allen offenen Ports (standardmäßig begrenzt auf 1–1000).

nmap 192.168.178.10

Ein voller Portscan aller Ports ist mit

nmap -p0-65535 192.168.178.10

zu erzwingen. Für ermittelte offene Ports – im folgenden Beispiel „22“ -kann nmap dann auch den verantwortlichen Dienst ermitteln („-sV“ steht für „service version“):

nmap -sV -Pn -p22 178.23.136.15

ping informiert, ob eine Internetsite oder ein lokaler Rechner online und erreichbar ist:

ping wikipedia.de

ping 192.168.1.1

scp / sftp sind zwei Alternativen für den Datenaustausch mit Open- SSH-Servern. scp ist ein einfaches Kopiertool wie cp und eignet sich für die schnelle Kopie einzelner Dateien.

scp datei.txt sepp@192.168.178.10:~/

Dies kopiert eine Datei aus dem aktuellen Verzeichnis in das Home des Benutzers „sepp“ am SSH-Server. Abweichende Ports um Massentransport sind ebenfalls vorgesehen:

scp -P 2222 ~/Bilder/*.* root@192.168.178.10:/srv/ transfer

sftp orientiert sich an FTP und hat einen größeren Befehlsumfang als nur das Kopieren. Nach

sftp root@192.168.178.10

zeigt das Kommando help eine Übersicht der Kommandos. Befehle wie ls und cd oder auch die automatische Ergänzung mit der Tab-Taste arbeiten wie im Terminal gewohnt. Das Kopieren erfolgt mit get (Download) und put (Upload).

smbpasswd erstellt neue Samba-Konten („-a“), löscht („-x“), aktiviert („-e“) und deaktiviert bestehende („-d“):

smbpasswd -a sepp

smbpasswd -x sepp

Samba-Konten sind unabhängig vom Systemkonto, dürfen aber der Einfachheit halber dasselbe Passwort verwenden.

/etc/samba/smb.conf ist die einzige Konfigurationsdatei des Samba-Servers. Manuelles Bearbeiten ist nach wie vor alternativlos, aber relativ einfach. Um Home-Verzeichnisse per Samba freizugeben, genügt es, in der Zeile

;[homes]

das Semikolon zu entfernen. Eine allgemeine Freigabe für ein beliebiges Verzeichnis lässt sich über drei Zeilen am Ende der Datei „smb.conf“ realisieren:

[data]

path = /srv/data

writeable = yes

Das Beispiel gibt das Verzeichnis „/srv/data“ unter der Bezeichnung „data“ frei. Für den Zugriff ist auf dem Server ein System-sowie ein Samba-Konto erforderlich.

ssh ist der Befehl für den Fernzugriff auf andere Linux-Rechner im Netzwerk. Im Prinzip genügt

ssh 192.168.0.10

oder auch:

ssh raspberry

Anmeldekonto und gegebenenfalls abweichender Port („-p“) sowie grafisches X11-Forwarding („-X“) können mitangegeben werden:

ssh -X -p 2222 root@192.168.0.10

ssh-keygen und ssh-copy-id sind optionale Hilfstools für den SSH-Fernzugriff (am Client), um sich die Eingabe des Anmeldekennworts zu sparen. Der Befehl

ssh-keygen

erstellt auf dem Clientsystem einen Zugangsschlüssel. Der Befehl

ssh-copy-id -i ~/.ssh/id_rsa.pub sepp@192.168.178.20

kopiert den Schlüssel zum Server.

SSH-Server: Während der SSH-Client auf jedem Linux Standard ist, muss auf dem entfernten Rechner die Serverkomponente installiert sein und laufen (openssh-server). Dies ist auf Desktopsystemen nicht Standard. Der Server ist ab Installation aktiv. Die Serverkonfiguration unter /etc/ssh/sshd_conf ist nur manuell zu verändern. Typische Optionen sind mit

Port 2222

PermitRootLogin no

AllowUsers sepp

LoginGraceTime 8

Portänderungen (sicherer), Zulassen des root-Log-ins (unsicherer), Einschränken der Zugriffskonten (sicherer), Verkürzen der Anmeldefrist (sicherer).

Webserver Apache und seine Konfiguration (–› /etc/apache2/) sind mit einigen Befehlsbeispielen hier nicht darzustellen. Die typische Konfigurationsdatei

/etc/apache2/sites-available/000-default.conf

muss in jedem Fall manuell bearbeitet werden, wobei als „DocumentRoot“ der Ordner der jeweiligen Webanwendung anzugeben ist. Über Änderungen muss der laufende Apache stets mit

systemctl reload apache2

informiert werden, also über einen Neustart.

curl beherrscht Downloads und Uploads von und auf Webserver. Für den Download genügt

curl --remote-name https://seite.de/datei.txt

und für den Fall eines nicht öffentlichen Bereichs (FTP, geschütztes HTTPS) diese Variante:

curl --remote-name https://seite.de/datei.txt --user sepp:passw0rt

Ähnliches gilt für den Upload:

curl --upload-file datei.txt --user sepp:passw0rt https://seite.de/

wget ist gegenüber curl das einfachere Werkzeug, sofern es ausschließlich um den Download geht. Dieser Befehl holt eine einzelne Datei

wget http://seite.de/Datei.txt

und der folgende von einem passwortgeschütztem Website-Bereich:

wget -q --user=sepp --password=0815 http://seite.de/ datei.pdf

Ein Massendownload bis hinunter zur sechsten Verzeichnisebene („-l6“) erledigt dieser Befehl:

wget –r -l6 http://seite.de

whois liefert Domaininfos über Hosting, Besitzer, Adresse, Telefon.

whois -I pcwelt.de

Der tatsächliche Umfang ist allerdings abhängig von der Domainkonfiguration und somit der Freizügigkeit des Domainbetreibers. Um die Verbindungspunkte zu einem Server darzustellen, ist

traceroute pcwelt.de

eine nützliche Ergänzung.

10. Terminal-Interna

~/.bashrc im Home jedes Kontos ist das Start-Script jeder Bash-Shell, egal ob im grafischen Terminal oder in der Textkonsole. Wenn Alias-Kürzel, Variablen, Shell-Optionen dauerhaft gelten sollen, ist ein Eintrag in diese Datei erforderlich. Ort und Reihenfolge spielen bei diesen einfachen Einträgen keine Rolle. alias reduziert längere und öfter benötigte Befehle auf eine bequeme Kurzform:

alias ini='nano ~/.bashrc'

alias sync='rsync -auvP --delete -e "ssh -p 22" /srv/

Data/ root@192.168.178.6:/srv/Data'

apropos bietet eine Programmsuche für eine grobe thematische Eingrenzung zum gewünschten Thema oder Befehl:

apropos openssh

apropos ist nur ein Hilfsbefehl, der die Manpages durchsucht. Der Befehl

man -k openssh

ist funktionsidentisch, jedoch erlaubt apropos auch Kombinationen:

apropos --and file rename

bind steuert die Tastenbelegung im Terminal und etabliert eigene Hotkeys:

bind '"\C-L":kill-whole-line'

bind '"\ed":"& disown"'

bind '"\e1":"nano ~/.bashrc\n"'

„\C-“ ist der Code für die Strg-Taste, „\e“ für die Alt-Taste und „\n“ ist der Code für die Eingabetaste.

CDPATH ist eine Bash-Variable für schnelles Springen in wichtige Verzeichnisse. In ihr lassen sich – durch Doppelpunkt getrennt – mehrere Ordnerpfade speichern, um von beliebiger Stelle mit cd [Verzeichnis] in ein Unterverzeichnis eines der gespeicherten Ordner zu wechseln:

CDPATH='.:~:/srv/archiv/:/srv/data/:/var/www/ html/:/media/lw/musik/'

Das aktuelle Verzeichnis („.“) sollte immer am Beginn stehen. history zeigt die letzten 500 (Standard)-Terminalbefehle mit Nummerierung. „![Nummer]“ startet den betreffenden Befehl. Die Befehlssuche mit Cursor-oben und Strg-R basiert ebenfalls auf der Historyliste.

PS1 ist die Bash-Variable für den Eingabeprompt, der beliebige Informationen transportieren kann, dabei aber altertümliche Escape-Codes verwendet, die hier nicht erläutert werden können:

PS1="[$LOGNAME] \w > "

PS1="\u@\h [\w] > "

PS1="\033[43;30m\]\d, \A \[\033[41;37m\] \u on \H \ [\033[47;30m\] \w \[\033[0m\]\n"

shopt steht für „shell options“ und steuert einige kleine, aber nützliche Verhaltensweisen der Historyfunktion und der Verzeichnisnavigation. Der Befehl

shopt

zeigt alle Optionen. Die nützliche Anweisung („-s“ für „set“)

shopt -s autocd

sorgt dafür, dass eine (korrekte) Pfadangabe für den Verzeichniswechsel genügt. „cd“ wird dann unnötig.

whatis ist das Gegenstück zu apropos: Es liefert für einen angegebenen Befehl wie

whatis firefox

die Kurzbeschreibung aus den Manpages. Während apropos Programme für eine bestimmte Aufgabe sucht, zeigt whatis ganz knapp, was ein bestimmtes Programm kann:

11. Terminalergänzungen

htop ist Pflicht auf jedem SSH-administrierten System. Der Taskmanager für das Terminal bietet einen präzisen Überblick über alle Prozesse, erlaubt den gezielten Abschuss einzelner Tasks (F9) und kann die Prozesspriorität steuern (F7/F8). Taste F4 aktiviert einen Textfilter, Taste F6 ändert die Sortierung nach CPU-Anteil, Speicher oder Festplattenzugriff.

inxi ist für praktisch jedes Linux-System eine Empfehlung. Es liefert schnell und kompakt unzählige Infos über Hardware, Laufwerke, Netzwerk, System, Distribution. Während

inxi –v8

mit maximaler Gesprächigkeit („-v8“) die allermeisten Infos auswirft, ist auch gezielte Recherche mit annähernd hundert Schaltern möglich:

inxi –i

liefert nur die Netzwerkinfos. Am einfachsten ist der Einsatz der Verbose-Level „-v0“ bis „-v8“.

mc startet den „Midnight Commander“, einen Terminaldateimanager, der auch auf Desktopsystemen vertreten sein sollte. Das Tool erledigt alle Belange der Ordnernavigation und Dateibearbeitung inklusive SSH („Shell-Verbindung“). Selbst rsync-ähnlicher Datenabgleich ist möglich, wenn man den Konflikt-Dialog nach F5 (Kopieren) zu lesen weiß: Die Option „Älter“ ist der Updatemodus, der fehlende und neuere Dateien kopiert, „Keine“ kopiert nur die bislang fehlenden Dateien. 

ncdu sortiert Verzeichnisse standardmäßig nach der enthaltenen Datenmenge und bietet eine bequemere Festplattenanalyse als das Standardwerkzeug du (Punkt 2). ncdu wechselt wie ein Datei-

manager zwischen den Verzeichnissen und kann auch aktiv löschen (Taste „d“). Wichtig ist mit

ncdu /home

die Angabe des passenden Startverzeichnisses, weil ncdu – einmal gestartet – in keine höhere Verzeichnisebene wechselt.

powertop liefert detaillierte Infos zum Stromverbrauch aller Komponenten und dient als Tuningtool. Zur Analyse genügt

powertop

und zum aktiven Umsetzen der Tuningoptionen dieser Befehl:

powertop --auto-tune

Dies gilt aber nur für die aktuelle Sitzung.

rdfind findet und beseitigt Dateidubletten. Ein Analyselauf ohne Aktion sieht so aus:

rdfind /home/

Automatisches Löschen aller Dubletten mit

rdfind -deleteduplicates true /home/

ist riskant, kann aber durch Softlinks aller Dubletten

rdfind -makesymlinks true /home/sepp

abgefedert werden.

12. Strings / Filter

awk filtert, verarbeitet, verrechnet Übergabetexte nach Suchstrings und Spalten aus Befehlen und Textdateien. Folgender Befehl filtert zunächst Zeile 2 von „free -m“ und dort die vierte Spalte:

free -m |awk 'NR==2' |awk '{print $4}'

Folgende Variante verfeinert das Ganze zu einer gut lesbaren Ausgabe des aktuell freien Speichers:

free -m | awk '/Speicher:/ {print "Frei: " int($2-$3) " [von "$2 " MB]"}'

Das nächste Beispiel entfernt die Zeilennummern aus der Bash-History und sort sortiert die verbleibenden Kommandos:

history | awk '{print $2}' | sort

column ordnet den Terminal-Output deutlich übersichtlicher durch Spaltenanordnung mit Tabulatoren:

mount | column -t

In manchen Fällen ist es zweckmäßig, einen ganz bestimmten Separator (hier den Doppelpunkt) durch Tabulatoren zu ersetzen:

cat /etc/passwd | column -s: -t

grep ist der verbreitetste Ausgabefilter. grep filtert den Inhalt von Textdateien oder die Ausgabe eines anderen Befehls nach dem gesuchten String:

cat /proc/cpuinfo | grep "MemFree"

cat /var/log/auth.log | grep "failed"

Grep eignet sich aber auch für die schnelle Textsuche in vielen Dateien, sofern diese einfaches Reintextformat besitzen („-i“ ignoriert Groß-/Kleinschreibung, „-r“ arbeitet rekursiv):

grep -ir "heisenberg" /home/sepp/*.txt

sed ersetzt alle Zeichenfolgen in einer oder vielen Datei(en) durch einen neuen String, löscht Zeilen oder fügt neue ein. Während der Befehl

sed "s/LinixWelt/LinuxWelt/g" *.html

alle Änderung nur im Terminal anzeigt, erledigt Schalter „-i“ oder „--in-place“ tatsächlich:

sed -i "s/LinixWelt/LinuxWelt/g" *.html

Der Schreibfehler „LinixWelt“ wird überall korrigiert. Effizient, aber auch riskant sind Löschkommandos mit „d“:

sed -i '/bind /d' ~/.bashrc

Jede Zeile mit dem String „bind“ wird entfernt. sort sortiert die Ausgabe anderer Befehle alphabetisch (Standard)

find /media/Archiv/Filme/ | sort

oder numerisch (-n)

du -aS | sort -n

oder auch nach der bestimmten Spalte (-k):

history | sort -k2

13. Desktop

startx startet – etwa nach Reparaturen – die grafische Oberfläche aus der virtuellen Textkonsole:

xdotool eignet sich für Systembastler und steuert Maus-und Fensteraktionen. Folgender Befehl

xdotool key "super+d"

simuliert den Hotkey Windows-D, um den Desktop anzuzeigen, und

xdotool mousemove 0 0;xdotool click 1

befördert den Mauszeiger in die linke obere Ecke und löst dort einen Mausklick aus. Die Befehlskombination

TMP=$(xdotool selectwindow);xdotool windowkill $TMP

wartet auf den Klick auf ein Programmfenster. Der Befehl „selectwindow“ ermittelt das Fenster-Handle und beendet den Task.

xkill beendet grafische Programme, deren Fenster nicht mehr reagieren. Nach

xkill

verwandelt sich der Mauszeiger in ein Kreuz, das ein angeklicktes Fenster gewaltsam beendet. Die rechte Maustaste beendet xkill ohne Aktion.

xprop (ähnlich xwininfo) ermittelt Programmnamen und Eigenschaften grafischer Programme. Nach der Eingabe

xprop

im Terminal verwandelt sich der Mauszeiger in ein Kreuz. Nach Klick auf das gewünschte Fenster erscheinen im Terminal die Infos, insbesondere der zugehörige Programmname.

xrandr ist das Basistool für die Monitoreinstellungen am grafischen Desktop. Im Normalfall bietet der Desktop eine grafische Alternative in Systemeinstellungen. Im Prinzip kann aber auch xrandr Auflösung und Wiederholfrequenz festlegen.

xrandr

zeigt die angeschlossenen Monitore, mögliche Auflösungen und maximale Frequenz. Der Befehl

xrandr -s 1920x1080

legt die Auflösung für einen Monitor fest und der Befehl

xrandr --output DVI-0 --mode 1280x1024

für einen bestimmten Monitor. Der Befehl

xrandr --output HDMI-0 -off

schaltet einen bestimmten Monitor ab.