Command Line Interface-Befehle (Debian)
Aus MattWiki
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
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 (Sofort)
shutdown -h now shutdown -r now
Suchen und Finden
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
Suchen und ersetzen
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
Betriebssystem
screenfetch # Betriebssystemversion Uptime, Kernelversion, CPU, RAM # (Paket muss manuell installiert werden) 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
Speicherplatz / 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 / Verzeichnisse
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
Dateilisten
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
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)
Secure Shell / SSH
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
Kopieren via SSH
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 aptitude # Programm zur Paketverwaltung mit CLI-Interface aptitude search xxx # Pakete suchen, deren Name dem Suchstring xxx entspricht aptitude search '~o' # Obsolete Pakete suchen
Upgrade einer Debian-Distribution wird beschrieben in Distributions-Upgrade (Debian)
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 (?)