Command Line Interface-Befehle (Debian): Unterschied zwischen den Versionen
Matt (Diskussion | Beiträge) K (→Journal Logs) Markierungen: Manuelle Zurücksetzung Visuelle Bearbeitung |
Matt (Diskussion | Beiträge) |
||
Zeile 95: | Zeile 95: | ||
=== Suchen in Dateien === | === Suchen in Dateien === | ||
grep -rnw /path/to/somewhere/ -e "pattern" | grep -rnw /path/to/somewhere/ -e "<pattern>" | ||
grep -rni "<pattern>" [directory] | |||
Nach "Search-Text" in allen Dateien unterhalb von / suchen: | Nach "Search-Text" in allen Dateien unterhalb von / suchen: |
Version vom 29. Oktober 2023, 00:17 Uhr
Allgemein
pwd # Print Working Directory cat # Dateiausgabe less # Dateianzeige nano # Einfacher Texteditor ls # Verzeichnisinhalt anzeigen ls -l # Verzeichnisinhalt anzeigen, Langversion ls -a # Alle Dateien anzeigen (auch versteckte) file <file> # Dateiinhalt analysieren stat <file> # Status einer Datei anzeigen (Änderungszeit, Zugriffsrechte, etc.) cal -y # Textkalender: Monatlich aktuelles Jahr anzeigen cal -B1 -A1 # Textkalender: Aktuellen Monat, einen Monat davor, einen danach anzeigen export VAR=value # Umgebungsvariable VAR mit Wert value setzen env # Umgebungsvariablen anzeigen env | grep -i 'hallo' # In der Ausgabe von env nach eine Zeile suchen, die 'hallo' enthält watch -n 1 <command> # Programm <command> im Intervall von 1 Sekunde ausführen ln -s foo.txt . # Symbolische Verknüpfung auf foo.txt im lokalen Pfad erstellen cd - # Ins vorherige Verzeichnis wechseln
Befehlshistorie
history # Letzte Befehle ausgeben history -c # Historie löschen !123 # Befehl mit Nummer 123 in Historie ausführen !xyz # Letzten Befehl, der mit xyz begann, ausführen !?xyz # Letzten Befehl, der mit xyz endete, ausführen !?xyz? # Letzten Befehl, der xyz enthielt, ausführen
Viewer und Editoren
cat xxx # Datei xxx ausgeben less xxx # Datei im Dateibetrachter Less öffnen zless file.gz # Datei file.gz mit Dateibetrachter Less öffnen nano xxx # Datei xxx im Texteditor Nano öffnen vim xxx # Datei xxx im Texteditor VIM öffnen emacs xxx # Datei xxx im Texteditor EMACS öffnen
Datum und Uhrzeit
date # Datum und Systemzeit anzeigen watch -n 1 date # Im Intervall von einer Sekunde Datum und Uhrzeit ausgeben hwclock # Uhrzeit der Hardware-Uhr anzeigen hwclock --show --utc # Uhrzeit der Hardware-Uhr in UTC anzeigen cat /etc/timezone # Zeitzone anzeigen date +%T -s "10:00:00" # Uhrzeit auf 10:00:00 Uhr setzen hwlock -w # Uhrzeit auf aktuelle Systemzeit setzen
Datumswerte ausgeben:
echo $(date +%Y-%m-%d__%H-%M-%S) # Ausgabe von Datum im Format: 2020-12-31__23-59-59
Dienstverwaltung
service --status-all # Status aller Dienste anzeigen service xxx status # Status von Dienst xxx anzeigen service xxx start|stop|restart # Dienst xxx starten/stoppen/neustarten /etc/init.d/xxx start|stop|restart # Dienst xxx starten/stoppen/neustarten systemctl start|stop|status xxx # SystemD-Dienst xxx starten/stoppen/status
Shutdown und Reboot
shutdown -h now shutdown -r now
Mit dem Parameter now
wird sofort neu gestartet. Der Default-Wert ist eine Minute.
Dateien suchen, finden, bearbeiten
Dateinamen suchen
grep -i 'hello world' file.txt # In file.txt zeilenweise nach 'Hello World' nicht # case-sensitiv suchen cat file.txt | grep -i 'hello world' # Gleiches Ergebnis wie in der vorangegangenen Zeile
locate file.foo # Speicherort von Datei file.foo suchen
find | grep -i 'file.txt' # Alle Dateien im und unterhalb vom aktuellen Verzeichnis # suchen, und im Suchergebnis die Zeichnenkette file.txt # nicht case-sensitiv suchen find -name '*filename*' # Nach filename im und unterhalb vom aktuellen Verzeichnis # case-sensitiv suchen find -iname '*filename*' # Nach filename im und unterhalb vom aktuellen Verzeichnis # nicht case-sensitiv suchen find -iname '*filename*' -exec rm {} + # Nach filename im und unterhalb vom aktuellen Verzeichnis # nicht case-sensitiv suchen und mit dem Suchergebnis rm # ausführen
find . -mtime +30 -delete # Dateien im akt. Verzeichnis suchen, die älter als 30 Tage # sind, und löschen find . -maxdepth 1 -mtime +30 -type d -exec rm -r {} + # Verzeichnisse im akt. Verzeichnis suchen, # die älter als 30 Tage sind, # und diese inkl. aller Unterverzeichnisse löschen
Dateilisten ausgeben
ls -ogRh dir1 # Liste von Dateien von dir1 ausgeben ohne User/Gruppe in menschenlesbarer Form ls -lh | cut -d" " -f5- # Von der Liste nur alle Spalten ab der 5. Spalte ausgeben (Trennzeichen/Delimiter = " ") ls -ogRh dir1 > file1.txt # Wie oben, aber Inhalt in Datei file1.txt schreiben (bestehende überschreiben) ls -ogRh dir1 >> file1.txt # Wie oben, aber Inhalt an Datei file1.txt anhängen
Suchen in Dateien
grep -rnw /path/to/somewhere/ -e "<pattern>" grep -rni "<pattern>" [directory]
Nach "Search-Text" in allen Dateien unterhalb von / suchen:
find / -type f -exec grep -H '<Search-Text>' {} \;
Ersetzen in Dateien
sed -i 's/jessie/stretch/g' filename # In Filename "jessie" finden und durch "stretch" ersetzen
Informationen
Ressourcen und Statistiken
free # RAM-Speicher Auslastung top # CPU-Nutzung, Uptime, RAM-Verbrauch htop # Top mit Balkendarstellung von Ressourcen glance # Umfangreichere Anzeige, als top und htop slurm # Speicher w # Angemeldete User / Sitzungen
Betriebssystem
uptime # Onlinezeit des Betriebssystems uname -a # Kernelversion, Bezeichnung und Hostname uname -r # Kernelname / Version cat /proc/version # Kernelversion cat /etc/issue # Name und Version der Distribution cat /etc/debian_version # Debian Versionsnummer cat /etc/os-release # Versionsnummer des Betriebssystemreleases hostnamectl # Kerlen-Version, Architektur, Systemname
Die Datei /etc/debian_version
ist im Paket base-files enthalten. Daher kann die installierte Debian-Version (und eine möglicherweise zur Verfügung stehende neuere Version) aus der Version des Pakets abgeleitet werden.
Additional programs, which need installation first:
screenfetch # Betriebssystemversion Uptime, Kernelversion, CPU, RAM neofetch # Betriebssystemversion Uptime, Kernelversion, CPU, RAM
Speicherplatz von Festplatte
df # Freier und belegter Plattenplatz in 1K-Blöcken df -h # Menschenlesbar in Potenzen von 1024 df -H # Menschenlesbar in Potenzen von 1000 (Entspricht Gnome-Anzeigen) df -T # Dateisystemtyp ausgeben
Speicherplatz von Verzeichnissen
du # Speicherverbrauch / Größe von Verzeichnissen du -h # Größe von Verzeichnissen, Menschenlesbar du -hs # Größe von Verzeichnissen, Menschenlesbar, Summarize (=Ohne Unterverzeichnisse) du -h -d 1 # Größe von Verzeichnissen, Menschenlesbar, Depth = 1 du -hd 1 du --si -d 1 # Wie -h, jedoch mit Potenzen von 1000 statt 1024 find <dir> -type f | wc -l # Anzahl Dateien im Verzeichnis <dir>
CPU
Damit Intel Turbo Boost in Linux funktioniert, muss es im BIOS aktiviert sein.
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq # Maximale CPU-Taktgeschwindigkeit inkl. Intel Turbo Boost cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq # Minimale CPU-Taktgeschwindigkeit inkl. Intel Turbo Boost cat /proc/cpuinfo # Infos zur CPU und aller Kerne anzeigen cat /proc/cpuinfo | grep -i 'cpu mhz' # Aktuelle CPU-Geschwindigkeit und aller Kerne anzeigen
Laufwerke
less /etc/fstab # Gemountete Laufwerke fsck -N /dev/xxx # ??? fdisk -l # Gerätenamen rausfinden, z. B. /dev/sdc1 lsblk # Gerätenamen und Mountpunkte rausfinden lsblk -l # Gerätenamen rausfinden # Auflistung von Labels und UUIDs ausgeben: lsblk -o NAME,TYPE,SIZE,FSTYPE,LABEL,UUID hdparm -tT /dev/sdx # Laufwerksgeschwindigkeit feststellen
Journal Logs
journalctl # Show system protocol journalctl -f # Show system protocol in real time like tail -f /var/log/syslog journalctl -b # Show protocol for last startup journalctl --since=yesterday journalctl -u <servicename> # Show protocol for given systemd-service, i.e.: journalctl -u systemd-timesyncd journalctl --disk-usage
Packen
Siehe Packen und Entpacken (Linux)
Entpacken
Siehe Packen und Entpacken (Linux)
Integrität prüfen
MD5 sollte nicht mehr genutzt werden. SHA256 geht auch:
sha256sum xxx # SHA256 Prüfsumme für Datei xxx erstellen. cat xxx.sha256 # Prüfusumme aus Datei xxx.sha256 ausgeben
Netzwerk
hostname # Hostname des Computers hostname -I # IP-Adresse des Computers ip addr # * IP-Adressen der Netzwerkadapter auflisten ifconfig -a # Alle Netzwerkadapter auflisten (auch inaktive) ifconfig eth1 up|down # Netzwerkadapter ein- oder ausschalten ifconfig eth1 -multicast # Multicast auf Adapter eth1 deaktivieren ifconfig eth1 multicast # Multicast auf Adapter eth1 aktivieren netstat -tulpe # Liste der offenen Ports mit Anwendungen und Usern anzeigen netstat -tulpen # * Liste der offenen Ports mit Anwendungen und Usern anzeigen, Ports und User numerisch anzeigen netstat -l # Listening Ports anzeigen netstat -l --inet # Listening Ports anzeigen netstat -ln --tcp # Listening TCP Ports (numeric) anzeigen netstat -i # Netzwerk Schnittstellentabelle anzeigen netstat -g # Multicast Gruppenzugehörigkeiten anzeigen netstat -a # Alle offenen Ports anzeigen netstat -napt # Alle offenen Ports und welche Prozess-IDs und Programmnamen diese nutzen / belegen nmap -v -A <host> # Offene Ports auf <host> anzeigen (langsam) slurm # Netzwerk stats
SSH / Secure Shell
Verbindung herstellen
ssh <server> # Mit <server> verbinden ssh -p<port> <server> # Mit <server> über <port> verbinden ssh -p<port> -L <localport>:localhost:<remoteport> <server> # Mit <server> über <port> verbinden, und dabei <remoteport> durch den SSH Tunnel an localhost auf den <localport> umleiten
Dateien via SSH kopieren
scp user@server:/from/remote/dir/* /to/local/dir scp -P PORT user@server:/from/remote/dir/* /to/local/dir # Use PORT for SSH rsync -rt user@server:/from/remote/dir/* /to/local/dir/ # Recursive, preserve times rsync -rt --progress user@server:/from/remote/dir/* /to/local/dir/ # Recursive, preserve times, show progress bar rsync -rtv --progress user@server:/from/remote/dir/* /to/local/dir/ # Recursive, preserve times, verbose, show progress bar rsync -rtv --progress -e "ssh -p PORT" user@server:/from/remote/dir/* /to/local/dir/ # Recursive, preserve times, verbose, show progress bar, use PORT for SSH
Paketmanager und Programminstallation
apt-get update # Paketlisten aktualisieren apt-get upgrade # Installierte Programme aktualisieren → Gefährlich! apt-get install xxx # Programm xxx installieren apt-get install xxx -t yyy # Programm xxx aus Release yyy installieren (Z. B. aus Backports) dpkg -l # Liste installierter Programme anzeigen dpkg -l xxx # Ein paar Details zum installierten Programm xxx anzeigen dpkg -i xxx.deb # Paket xxx.deb installieren dpkg -s xxx # Status und mehr Details zum installierten Programm xxx anzeigen dpkg -L xxx # Welche Dateien gehören zum Paket xxx? dpkg -S xxx # Zu welchem Paket gehört die Datei xxx? dpkg -C # Konsistenzprüfungen der Datenbank dpkg -r xxx # Remove xxx dpkg -P xxx # Purge xxx (remove configfiles too) aptitude # Programm zur Paketverwaltung mit CLI-Interface aptitude search xxx # Pakete suchen, deren Name dem Suchstring xxx entspricht aptitude search '~o' # Obsolete Pakete suchen aptitude -t bprep install xxx # Paket xxx aus Backport-Repository bprep installieren
Upgrade einer Debian-Distribution wird beschrieben in Debian-Upgrade
Welche Unterverzeichnisse nutzt ein Programm?
whereis xxx
USB-Stick mit ISO-Image als Boot-Medium erstellen
Zuerst Laufwerksnamen herausfinden:
lsblk -o NAME,TYPE,SIZE,FSTYPE,LABEL,UUID # Variante 1 fdisk -l # Variante 2
Beispiel für Kopieren eines Debian-Installations-Hybrid-ISO-Images auf einen USB-Stick
cp foo.iso /dev/sdX ← WICHTIG: nur das Gerät sdX verwenden, nicht die Partition sdXX sync
Alternative:
dd if=foo.iso of=/dev/sdX bs=4M ← WICHTIG: nur das Gerät sdX verwenden, nicht die Partition sdXX sync
Kernelbefehle
rmmod nvidia # Kernelmodul nvidia ohne Reboot entladen modprobe nouveau # Kernelmodul nouveau laden dmesg # Auflistung des Kerneloutputs beim Bootvorgang dmesg | grep -i 'test' # Im Kerneloutput nach 'test' suchen lsmod | grep 'asdf' # Geladene Module ausgeben, Filtern nach 'asdf'
Energieverwaltung
$ xset dpms force on # Monitor ausschalten / Standby $ xset dpms force off # Monitor einschalten / Wakeup $ xset -q # Monitor Status abfragen (?)