Diverse Linux Befehle
Iso Image unter Linux mounten
Zuerst den Mount Point anlegen und dann mit Hilfe des Loop Device einbinden.
mkdir /mnt/cdrom
mount -o loop -t iso9660 /tmp/cdimage.ISO /mnt/cdrom/
Nun ist das Image unter /mnt/cdrom verfügbar
Squashfs unter Linux mounten / entpacken
Zuerst den Mount Point anlegen und dann mit Hilfe des Loop Device einbinden.
mkdir /mnt/squashfs
mount -o loop -t squashfs /tmp/filesystem.squashfs /mnt/squashfs/
Nun ist das Filesystem unter /mnt/squashfs verfügbar
Man kann das filesystem aber auch mittels folgendem Befehl entpacken:
squashfs filesystem.squashfs
Bonnie++ - Festplatten Benchmark
Bonnie++ ist das Tool wenn es unter Linux um Festplatten Benchmarking geht. Hier kurz die ERläuterung des untenstehenden Befehls:
- -u root : damit wird der Benchmark als User Root ausgeführt
- -d /root/ : die Tests testen diesen Mountpoint
- -s 2000 : Dateigröße in MB, muss mehr als die Ramgröße sein
- -n 500 : Anzahl der Dateien für den Dateierstellungs Test
- -r 256 : RAM Größe in megabytes
- -m PCName : Beschreibung des Benchmarks (z.B.: Rechnername)
- -x3 : Benchmark läuft 3x und gibt die ERgebnisse im CSV Format aus.
- >> /root/bonnie.log : Lässt die Ergebnisse in ein Logfile zu weiteren Verarbeitung fließen.
bonnie++ -u root -d /root/ -s 2000 -n 500 -r 256 -m PCName -x3 >> /root/bonnie.log
Hier wird das geschriebene Logfile in eine HTML Tabelle konvertiert.
cat bonnie.log | bon_csv2html > bonnie.html
Iperf - Netzwerkbenchmark
Iperf Testet die TCP/UDP Übertragungsrate einer Netzerkverbindung. Dafür muss auf einem Rechner Iperf als "Server" betrieben werden:
iperf -s
Und dann von einem anderen Rechner aus der Test durchgeführt werden:
iperf -c serverIP -P 4
Bester Test:
iperf -c serverIP -P2 -w 512k -l 512k
Mehr Infos:
iperf --help
TCPTraceroute - Traceroute auf Port Ebene
Kann in Debian Linux mit diesem Befehl nachinstalliert werden:
aptitude install tcptraceroute
So wird das Programm benutzt:
tcptraceroute laub-home.de 80
Postfix Datenbank Dateien erzeugen
Postfix hat manche Dateien als .db
abliegen, zum Beispiel die tarnsport.db
Datei. Will man Änderungen der Transport Datei machen, werden diese in der Datei /etc/postfix/transport
gemacht und diese Datei dann mit postmap
als .db File abgespeichert.
postmap /etc/postfix/transport
ls -l /etc/postfix/
-rw-r--r-- 1 root root 12204 19. Jan 12:58 transport -rw-r--r-- 1 root root 12288 19. Jan 12:59 transport.db
E-Mails aus der Mailq (Postfix) löschen
Mit folgenden Befehlen kann man E-Mails aus der mailq löschen. Zuerst sollte man sich aber einen Überblick über die vorhandenen Mails in der Queue machen:
mailq
ggf. auch mit "| less" zum scrollen verbinden Nun können einzelne Mails anhand ihrer Message-ID gelöscht werden:
postsuper -d Message-ID -d Message-ID
oder aber einfach die gesamte Queue geleert werden:
postsuper -d ALL
E-Mails der Mailq lesen
Mit folgendem Befehl ist es möglich Mails, die sich in der Mailq befinden zu lesen. als erstes benötigt man die Queue ID:
mailq
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient------- 9AA5C817 503 Tue Sep 27 11:28:39 root@xxxx .............
dann einfach mittels postcat
lesen:
postcat -q QUEUEID
postcat -q 9AA5C817
rm - Dateien die mit einem "-" beginnen löschen
ab und zu kommt es vor das Dateinamen mit einem "-" beginnen, dann meckert rm beim Aufruf das er den Schalter nicht kennt. Dieses Problem kann man mit einem "--" vor dem Dateinamen umgehen. z.B:
rm -- -filename.txt
Super User Dateisystem-Reservierung löschen
Wenn man sich df -h mal genauer anschaut, wird man merken das Used + Avail ungleich der Size ist. Wo ist denn der Rest? Ganz einfach, Linux reserviert Speicherplatz für den Superuser, damit beim Vollaufen einer Festplatte noch Speicherplatz für Logdateien ist, damit Dienste weiterlaufen. Mit diesem Befehl kann man diese Reservierung deaktivieren oder Reduzieren (Zahlenangabe ist in Prozent von Verfügbaren Platz also entspricht -m3 3% Reservierung vom Verfügbaren Platz.):
Achtung: Ist nur auf reinen Datenplatten empfehlenswert. Bei anderen Platten bietet sich eine Reduzierung an (also z.B.: -m3)
Bei LVM Volumes:
tune2fs -m0 /dev/mapper/VG01-daten
Bei normalen Partitionen:
tune2fs -m0 /dev/sda1
Debian/Ubuntu Konfigurationsdaten nachträglich löschen
löscht die Konfigurationsdaten von bereits deinstallierten Paketen.
aptitude purge '~c'
Alternativ, falls aptitude nicht installiert ist:
dpkg -l | grep '^rc' | awk '{print $2}' | xargs dpkg --purge
Debian/Ubuntu Obsolete Pakete suchen bzw. löschen
aptitude search ~o
aptitude remove '~o'
Nach broken Links suchen und diese löschen
Hiermit kann man im aktuellen Verzeichnis nach Links suchen die nicht mehr funktionieren:
find . -type l | (while read FN ; do test -e "$FN" || ls -ld "$FN"; done)
gelöscht werden sie dann mit:
find . -type l | (while read FN ; do test -e "$FN" || rm -f "$FN"; done)
Freien Festplatten Platz mit Nullen vollschreiben
dd if=/dev/zero of=/root/null
Ausgabe einer Konfigurationsdatei ohne Kommentarzeilen mittels grep
grep ^[^#] DATEINAME
Mehrere Strings an grep übergeben
Will man an grep nicht nur einen String, bzw. Argument übergeben, dann hilft einem die oder-Verknüpfung
mittels \|
# gibt ARG1 bis 3 aus
grep 'ARG1\|ARG2\|ARG3'
# gibt ARG1 bis 3 nicht aus
grep -v 'ARG1\|ARG2\|ARG3'
Mail versenden von der Konsole
So kann man E-Mails von der Konsole verschicken:
mail -s "Betreff" root
Nun den gewünschten Inhalt schreiben und mit STRG-D versenden.
MySQL User Root volle Rechte von überall
Wenn man sich zum Beispiel von einem PHPMyadmin auf beliebige MySQL Server verbinden will, muss man dem Benutzer root volle Rechte geben, dies geschieht im mysql mit folgendem Befehl:
mysql -u root -p
und dann im MySQL:
grant all on *.* to 'root'@'%' identified by 'password' with grant option;
Aptitude andere Versionen eines Paketes anzeigen bzw. installieren
Will man zum Beispiel auf eine ältere Version eines Paketes zurück, kann man sich als erstes alle verfügbaren Versionen anzeigen lassen:
aptitude update
aptitude show samba -vv
zum installieren einer anderen Version, dann einfach mit der Versions Nummer installieren:
aptitude install samba=3.2.5-4lenny13
snmpwalk
snmpwalk -v 2c -c COMMUNITY localhost .1
Tar Pipe
Wenn man von einem System auf ein anderes Dateien übertragen will und dies über ein 3tes System anstoßen muss, da die Systeme nicht direkt miteinander kommunizieren können, kann dies mit folgender Tar Pipe gemacht werden.
ssh -C system1 "cd /path/to/file; tar -cf - filename" | ssh -C system2 "cd /path/to/file; tar -xf -"
Dieser Befehl kopiert kopiert die Datei filename vom Pfad /path/to/file vom Rechner system1 nach system2 in den Pfad /path/to/file.
Mit SCP würde dies auch funktionieren, wenn die Systeme untereinander kommunizieren können. SCP macht den Datentransfer direkt zwischen den beiden Systemen. Dafür wäre folgender Befehl benutzbar:
scp system1:/path/to/file/filename system2:/path/to/file
nur bestimmte Dateien mit tar entpacken
Will man eine bestimmte Datei oder einen bestimmten Ordner aus einem Tar Archive entpacken kann das wie folgt gemacht werden:
tar -xzvf archive.tar.gz Ordner/unterordner/datei.txt
tar -xzvf archive.tar.gz Ordner/unterordner/
Domains in Apache Konfigs zählen
mit folgendem Befehl kann man Domains in Apache Konfigurationen zählen:
egrep -h "ServerAlias|ServerName" /etc/httpd/conf/*.conf | egrep -v "^#|212.21.187|agroasp" | cut -f 5- -d " " | wc -w
Datei/Ordner-Größen nach Megabyte Sortieren
Will man wissen was in einem Ordner alles wieviel Platz verbraucht, dann helfen folgende Befehle weiter:
Inhalt des aktuellen Ordners in Megabyte auswerten und nach Größe von klein nach groß sortieren
du -scm * | sort -n
Inhalt des aktuellen Ordners in Megabyte auswerten und nach Größe von groß nach klein sortieren
du -scm * | sort -nr
und das ganze mit Kilobytes:
du -sck * | sort -n
du -sck * | sort -nr
Reboot mit FSCK Filesystemcheck
Will man den Rechner auf Dateisystemfehler beim Systemstart prüfen lasse, dann kommt folgender Befehl zum Einsatz:
shutdown -rF now
Unter Ubuntu (wegen Upstart)
touch /forcefsck
Bei beiden Methoden muss in der /etc/fstab
unter <pass> eine "1" für das Boot Filesystem und eine "2" für alle anderen Dateisysteme die gescannt werden sollen eingetragen werden.
Filesystem Check forcen
Will man das ein Filesystem geprüft wird, obwohl es ohne Fehler ausgehängt wurde, kann dies durch den folgenden Befehl durchgeführt werden:
fsck.ext4 -f /dev/sda1
ServerNames und ServerAliases im DNS Auflösen
Hier ein kleiner Einzeiler, mit dem man alle Servernames oder Serveraliase einer HTTPd Konfiguration, zur IP Adresse auflösen kann.
cd /etc/apache2/sites-enabled/
for i in $(egrep -i "servername|serveralias" * | awk '{ print $3 }'); do echo "Name: $i"; nslookup $i; done
mit netstat Port zu Prozess herausfinden
will man wissen welcher Prozess zu einem offenen Port gehört kann man dies mit folgendem Netstat-Aufruf machen, hier wird nur nach Port 143 gefiltert.
netstat -lnp | grep 143
dies zeigt die komplette Liste an
netstat -lnp
Festplatten UUID auslesen
Will man in der /etc/fstab
mit UUID arbeiten, muss man diese vorher für die einzelne Partition auslesen, dies geschieht mit folgendem Befehl:
blkid /dev/sdb1
oder mit tune2fs
tune2fs -l /dev/sda1
tune2fs 1.41.12 (17-May-2010) Filesystem volume name: <none> Last mounted on: / Filesystem UUID: cd4274af-7ae4-4744-94cc-af69a812e431
Standard Gateway auslesen
Will man in einem Shellskript das Standardgateway auslesen und zum Beispiel eine Variable damit füllen, kann das durch die folgenden Befehle geschehen.
ip r | grep default | cut -d ' ' -f 3
oder
ip r | grep default | awk '{print $3}'
oder
route | grep default | awk '{print $2}'
"Telnet" auf SSL vhost
will man via "telnet" auf einen https Webserver vhost machen, wird man schnell merken das dies nicht funktioniert. Am besten verbindet man sich mit folgendem Befehl:
openssl s_client -connect wiki.laub-home.de:443
GET / HTTP/1.1 Host: wiki.laub-home.de
IP Adresse via iptables sperren
iptables -A INPUT -s <IP-ADRESSE> -j DROP
-A INPUT: hängt die Regeln an die INPUT Chain an
-s : ist die zu bannende IP Adresse
-j DROP: gibt die Aktion an, die ausgeführt werden soll, wenn die Regel greift. In diesem Fall DROP (verwerfen)
oder besser noch:
iptables --insert INPUT <POSITION> -s <IP-ADRESSE> -j DROP
Fügt die Regel an der gewünschten Stelle ein.
iptables alle NAT Regeln anzeigen
iptables -t nat -L --line-numbers -n
Hohe CPU-Last generieren
Wenn man auf einem Linux-System eine hohe CPU-Last generieren will (z.B. zum testen von Monitoring), dann kann dies mit diesem Befehl gemacht werden:
top -d 0
Dieser ruft top auf und greift die Systemwerte so schnell wie möglich ab. Dies ist effektiver, wenn das SSH-Fenster möglichst klein ist, da dann der Bildschirm nicht immer ganz aufgebaut werden muss.
Oder man installiert das Tool stress
apt update && apt install stress
stress --cpu 4
Anzeigen der inodes
Mit folgendem Befehl kann man sich die Anzahl der inodes anzeigen lassen, welche im momentanen Verzeichnis verwendet werden (kann je nach Größe des Systems etwas länger dauern):
find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n
Dies ist u.a. dann nützlich, wenn man noch sehr viel Speicherplatz frei hat, aber einem die inodes ausgehen.
Ip Adresse auslesen
Hier ein kurzer Befehl der einem die IP ausgibt, die eth0 hat:
ifconfig eth0 | head -n 2 | tail -n 1 | cut -d: -f2 | cut -d" " -f 1
Virtualisierung/Hypervisor Erkennen
Will man wissen auf welchem Hypervisor eine VM läuft hilft folgender Befehl:
systemd-detect-virt
Öffentliche IP anzeigen
Möchte man wissen unter welcher öffentlichen IP Adresse man online ist, geht das mit Hilfe des folgenden Befehls:
curl ifconfig.me
Warten bis Webseite Online ist
Möchte man zum Beispiel einen Befehl ausführen nachdem eine Webseite verfügbar ist, dann kann man das mit der until Schleife tun:
until curl --fail -s http://yourwebsite; do sleep 1; done && echo "Website is online"
Schreibzugriffe auslesen
mit dem kleinen Tool iotop, ist es Möglich auf einem Laufenden System zu schauen, was alles auf die Festplatte oder SD Karte schreibt. Dafür einfach das Tool installieren und mit diesem Befehl starten:
iotop -oPak