====== Kleine Tipps und Tricks für Kommandozeile ====== [[EDV:OS:UNIX:SHELL:Tipps und Tricks:vi]] - Der Editor (FIXME) Bash: [[https://wiki.ubuntuusers.de/Shell/Bash-Skripting-Guide_für_Anfänger/]] Advanced Bash-Scripting Guide: [[http://tldp.org/LDP/abs/html/index.html]] ===== Administration und Überwachung ===== * [[EDV:OS:UNIX:SHELL:Tipps und Tricks:tail-f und less+F|tail -f und less +F]] - Logfile kontinuierlich lesen - auf die Schnelle * [[EDV:OS:UNIX:SHELL:Tipps und Tricks:Namen von Partitionen und Mountpoints]] (fstab) * Mit [[EDV:OS:UNIX:SHELL:Tipps und Tricks:chattr]] Dateien zuverlässig (vor Löschung) schützen * **lsof** - offene Files, Sockets und mehr: [[http://www.admin-magazin.de/News/Tipps/Lsof-offene-Files-Sockets-und-mehr]] * **lsblk** - zeigt Blockdevices an (Festplatten, SSD, CD, etc.) samt vorhandenen Partitionen * [[EDV:OS:UNIX:SHELL:Tipps und Tricks:ifdata]] - get network interface info without parsing ifconfig output * [[EDV:OS:UNIX:SHELL:Tipps und Tricks:smartctl]] S.M.A.R.T. bei der Festplatte abfragen (S.M.A.R.T. steht für //Self-Monitoring, Analysis and Reporting Technology//) * **Pmap** zeigt den Speicherbedarf eines Prozesses Komponente für Komponente an. * [[EDV:OS:UNIX:SHELL:Tipps und Tricks:ulimit]] * **[[EDV:OS:UNIX:SHELL:Tipps und Tricks:Prozesse]] überwachen und steuern** * **ss** (Socket Statistics): [[http://www.linux-magazin.de/Ausgaben/2016/01/Einfuehrung/(language)/ger-DE]]\\ Aus Linux-Magazin: //Um sich über den Status von Netzwerk-Sockets zu informieren, greifen Sysadmins herdengleich zu Netstat. Sysadmin-Kolumnist Charly kennt eine gut Abkürzung: "ss".// * **iperf** - die verfügbare Bandbreite zwischen zwei Rechnern ermitteln: [[http://www.admin-magazin.de/News/Tipps/Bandbreite-zwischen-Hosts-messen/(tagID)/35]] * **lscpu** gibt alle wichtigen Infos (Architectur, Modell, Anzahl der Kerne, Taktfrequenz, etc.) über den **Prozessor** aus. * Der Befehl "**%%cat /proc/cpuinfo%%**" gibt Info über die im System vorhandenen CPUs. * Systempflege: [[https://wiki.ubuntuusers.de/Systempflege/]] (soll **regelmäßig** manuell durchgeführt werden) * Alten Kernel (hier Version "3.0.0-16") manuell entfernen: sudo apt-get remove --purge linux-image-3.0.0-16-generic linux-headers-3.0.0-16 * Mehrere alte Kernel auf einen Schlag entfernen (seit Ubuntu 13.04): * Erst testen (**-s** = simulieren), welche Pakete das Paketsystem als unnötig definiert und deinstallieren würde: sudo apt-get -s autoremove --purge * Enthält die Ausgabe nichts erhaltenswertes (praktisch also nur ältere Kernelversionen), führt man durch: sudo apt-get autoremove --purge Dadurch werden alle alten Kernel bis auf die beiden neuesten Kernel entfernt. * Ein grafischer "kernel-remover": [[http://axebase.net/blog/2015/07/26/kernel-remover-aus-siduction-in-ubuntu/]] * Temporäre Pakete aus früheren Installationen entfernen: sudo apt-get clean * [[EDV:OS:UNIX:SHELL:Tipps und Tricks:apt]] - Häufig verwendete APT-Kommandos * [[EDV:OS:UNIX:SHELL:Tipps und Tricks:rpm]] - Häufig verwendete RPM-Kommandos __**Externe Links zum Thema:**__ Debian: [[http://www.debian.org/doc/manuals/apt-howto/|APT HOWTO]] (Obsolete Documentation) * Manchmal gibt es im BetriebsSystem mehrere Varianten einer und derselben dynamischen Library oder, was viel schlimmer ist, unterschiedliche Libraries, die gleich heißen. Der Loader lädt normalerweise die Libraries, die über **%%LD_LIBRARY_PATH%%** erreichbar sind. Und das sind nicht unbedingt die richtigen. Die richtigen wären die, die der Compiler bzw. der Linker beim Bauen von Executables als Referenz verwendet hat (bei GCC werden über **%%LIBRARY_PATH%%** gesucht). Um herauszufinden, welche Mehrdeutigkeiten in dieser Hinsicht existieren, sollte man die Ausgabe von **%%ldd%%** mit allen im BetriebsSystem vorhandenen Libraries abgleichen:\\ EXE_TO_EXPLORE="ein.beispiel.executable" for i in `ldd ${EXE_TO_EXPLORE} | grep -v needs:`; do echo "========== ${i} =============================="; f=${i##*/}; f=${f%%(*}; find / -name ${f} -type f 2>&-; done ==== Boot / Systemstart ==== Systemstart mit **Systemd** unter Linux: [[http://www.admin-magazin.de/Das-Heft/2014/10/Systemstart-mit-Systemd-unter-Linux]] ===== Kommandos - Beispiele ===== [[EDV:OS:UNIX:SHELL:Example:awk]] - File- und String-Bearbeitung\\ [[EDV:OS:UNIX:SHELL:Example:dd]] - Bit-genaues Kopieren von Festplatten, Partitionen oder Dateien.\\ [[EDV:OS:UNIX:SHELL:Example:encfs]] - Einzelne Verzeichnisse schnell und einfach verschlüsseln\\ [[EDV:OS:UNIX:SHELL:Example:find]] - Files (rekursiv) suchen (unt evtl. das dabei angegebene Kommando anwenden)\\ [[EDV:OS:UNIX:SHELL:Example:gcp]] - GNU cp - Kopieren von Dateien mit Fortschrittsanzeige\\ [[EDV:OS:UNIX:SHELL:Example:getfacl und setfacl]] - ACLs lesen und setzen\\ [[EDV:OS:UNIX:SHELL:Example:grep]] - Bei grep (einige Varianten) Begrenzung des Eingabestrings auf 2048 Zeichen zu beachten...\\ [[EDV:OS:UNIX:SHELL:Example:gzip]] - Filekomprimierung\\ **hexdump** - HEX-Darstellung eines (Text-)Files: %%user@linux:~> hexdump -C FileName | less%%\\ [[EDV:OS:UNIX:SHELL:Example:nice]] - Prozeß-Priorität\\ [[EDV:OS:UNIX:SHELL:Example:parallel]] - Erlaubt mehrere CPU-Kerne für die Parallelisierung auf der Shell nutzen\\ [[EDV:OS:UNIX:SHELL:Example:prips]] - IP-Adressen eines IP-Bereichs auflisten\\ [[EDV:OS:UNIX:SHELL:Example:ptree]] - Prozeß-Baum\\ [[EDV:OS:UNIX:SHELL:Example:split]] - Große Files aufteilen\\ [[EDV:OS:UNIX:SHELL:Example:od]] - HEX-Werte ermitteln\\ [[EDV:OS:UNIX:SHELL:Example:tail und head]]\\ [[EDV:OS:UNIX:SHELL:Example:tar]] - Archive erstellen\\ [[EDV:OS:UNIX:SHELL:Example:tee]] - Replicate the standard output\\ [[EDV:OS:UNIX:SHELL:Example:touch]]\\ [[EDV:OS:UNIX:SHELL:Example:tput]] - Terminal Steuerung\\ [[EDV:OS:UNIX:SHELL:Example:whoami]] - Who am I?\\ ===== Verwendung in den Shell-Skripten ===== [[EDV:OS:UNIX:SHELL:Example:Einfache eMails verschicken]]\\ [[EDV:OS:UNIX:SHELL:Example:HTML-Mails verschicken]] (von der Kommandozeile)\\ **[[EDV:OS:UNIX:SHELL:Example:Spezielle Werte]]**\\ **[[EDV:OS:UNIX:SHELL:Example:Vordefinierte Shell-Variablen]]**\\ [[EDV:OS:UNIX:SHELL:Example:dirname und basename]]\\ [[EDV:OS:UNIX:SHELL:Example:String Matching]] - Parameter Validierung\\ [[EDV:OS:UNIX:SHELL:Example:Zeilenfilter]] - In Textfiles/Zeilen Zeichen ersetzen/aufbereiten (in Perl)\\ [[EDV:OS:UNIX:SHELL:Example:Abschnitt einer Datei lesen]] (mit **sed**)\\ [[EDV:OS:UNIX:SHELL:Example:Einen Wert in einem Abschnitt ersetzen]] (mit **sed**)\\ [[EDV:OS:UNIX:SHELL:Example:Einen Textabschnitt in mehreren Files gleichzeitig ersetzen]] (mit **sed**)\\ Nützliche, einzeilige Scripts für SED: [[http://sed.sourceforge.net/sed1line_de.html]] (von Eric Pement)\\ Umlaute und Sonderzeichen zu HTML-Entities umwandeln: [[https://dr-luthardt.de/linux.htm?tip=lhtml#:~:text=Um%20Sonderzeichen%20umzuwandeln%2C%20insbesondere%20die,ergibt%20sich%20mit%20%5E%20.]] (von Michael Luthardt)\\ [[EDV:OS:UNIX:SHELL:Example:Textfile im Skript bearbeiten]]\\ [[EDV:OS:UNIX:SHELL:Example:ListenFile-Bearbeitung]] (Listen als Files)\\ [[EDV:OS:UNIX:SHELL:Example:Parameter parsen]] (mit **getopts**)\\ [[EDV:OS:UNIX:SHELL:Example:Array Funktionen in der Shell]] (eindimensional)\\ [[EDV:OS:UNIX:SHELL:Example:read-Funktion]]\\ [[EDV:OS:UNIX:SHELL:Example:Unterschied zwischen den Hochkommas|Unterschied zwischen ' und "]]\\ [[EDV:OS:UNIX:SHELL:Example:Verkettung und Zusammenfassung von Kommandos]]\\ [[EDV:OS:UNIX:SHELL:Example:Umleitung von stdout und stderr]]\\ [[EDV:OS:UNIX:SHELL:Example:Iterationen]] (ksh)\\ [[EDV:OS:UNIX:SHELL:Example:Verschlüsselter Filetransfer übers Netz]] - Mit tar, cat und SSH\\ [[EDV:OS:UNIX:SHELL:Example:Schnelles kopieren]] - Mit cp, "piped way", "way over SSH", "way with netcat", "way with socat" (aus Gentoo Linux Wiki)\\ [[EDV:OS:UNIX:SHELL:Example:Abfangen von Signalen]] (mit **trap**)\\ ===== Datenintegrität ===== [[EDV:OS:UNIX:SHELL:Tipps und Tricks:iso-image+dd+md5sum+cmp+mount|Iso-Images anfertigen, mit MD5 überprüfen und brennen]]\\ [[EDV:OS:UNIX:SHELL:Tipps und Tricks:Datenintegrität mit Hashes wie MD5 oder SHA sicherstellen]]\\ LinuxUser 09/2016: [[http://www.linux-community.de/Internal/Artikel/Print-Artikel/LinuxUser/2016/09/Erbsenzaehlerei|Erbsenzählerei]] (von Frank Hofmann) - Datenbestände auf Veränderungen oder Manipulationen prüfen\\ ===== Sonstiges ===== [[EDV:OS:UNIX:SHELL:Tipps und Tricks:Erzeugen einer TextDatei auf der Konsole]]\\ [[EDV:OS:UNIX:SHELL:Tipps und Tricks:Files massenweise umbenennen]]\\ [[EDV:OS:UNIX:SHELL:Tipps und Tricks:Files nach Muster massenweise bearbeiten]]\\ [[EDV:OS:UNIX:SHELL:Tipps und Tricks:Nachricht auf den Desktop schicken]]\\ [[EDV:PRG:C:Example:backslash2slash.sh]] Ein kurzes Skript für die Portierung auf Unix - ersetzt alle Back-Slashes in den "#include"-Direktiven (.c- und .h-Files) durch Slashes.\\ [[EDV:OS:UNIX:SHELL:Tipps und Tricks:Files zwischen verschiedenen Formaten konvertieren]] - nrg -> iso (cd/dvd)\\ [[EDV:OS:UNIX:SHELL:Tipps und Tricks:PDFs auf der Kommandozeile bearbeiten]]\\ ---- Stand: 21.09.2024\\ --- //[[feedback.jk-wiki@kreick.de|: Jürgen Kreick]]// EOF