Mini-HowTos: Unterschied zwischen den Versionen

Aus lugvswiki
Zur Navigation springenZur Suche springen
(→‎Datei und Ordner Rechte Management: -r --> -R für Recursiv)
 
(59 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
Die so genannte ''Shell'' ist das Linux-Textinterface, welches durch Eingabe von Befehlen den Linux-PC steuern kann. Hier findet sich eine Sammlung von Befehlen, die sich in der Linux Shell verwenden lassen, um Aufgaben zu vereinfachen, oder aber einfach per Markieren und Kopieren (manchmal mit kleinen Anpassungen,-  z.B. bei Variablen wie Dateinamen, etc.) verwendbar sind.
 +
 +
Es gibt, wie häufig unter Linux, mehrere Möglichkeiten in eine Konsole zu wechseln. Zum einen bieten die meisten Linux-Desktop-Oberflächen ein Programm an, das sich wie ein Fenster öffnet und in welches dann die Befehle eingegeben werden können. Man findet es zum Beispiel, indem man in der Programmliste nach einem Programm mit der Bezeichnung "Terminal", "Konsole", "XTerm" oder ähnlichem sucht. Meistens kann man die Suche durch Eingabe der Bezeichnungen in dem geöffneten Menü eingrenzen.
 +
 +
Zum anderen kann man auch ganz in eine so genannte Konsole wechseln, die dann den ganzen Bildschirm füllt. Tatsächlich meldet man sich in diesem Fall vorläufig vom Fenstermanager ab, so dass man nur noch über Textbefehle, nicht aber per Maus (grafisch) auf das Betriebssystem zugreifen kann. Das kann besonders dann hilfreich sein, wenn der Desktop nicht mehr bedienbar, oder erst gar nicht angeboten wird (z. B. auf Servern). Diese Konsole kann man mit der Tastenkombination <Strg>+<Alt>+<F1> für die erste "Haupt"-Konsole bis - je nach der verwendeten Distribution - <Strg>+<Alt>+<F4> bis <Strg>+<Alt>+<F6>) erreichen. Dabei sind die so genannten "Control"-Taste (=Ctrl - auf einer deutschen Tastatur meist mit dem Aufdruck "Strg" versehen), die "Alternate"-Taste (auf einer deutschen Tastatur meist mit dem Aufdruck "Alt" versehen) und eine der "Funktionstasten" "F1" bis "F12" gleichzeitig zu betätigen. Dabei drückt man zuerst die "Strg"-Taste, hält diese weiterhin gedrückt und drückt dann zusätzlich noch die (oben beschriebenen) erforderlichen Tasten, bis der Bildschirm einen in der Regel schwarzen Hintergrund mit weisser Schrift zum Benutzer-"Login" auffordert. Dort muss man dann seinen eingestellten Benutzernamen, gefolgt von der "Enter"- oder "Return"-Taste eingeben. Anschliessend wird man in der Regel aufgefordert, das dazugehörige Passwort einzugeben. Die Eingabe des Passwortes ist "unsichtbar", man sieht also nicht, dass getippt wird; auch keine Punkte oder sonstigen Platzhalter. Um die Textkonsole wieder zu verlassen, wendet man folgende Tastenkombination an: <Strg>+<Alt>+<F5> bzw. je nach Distribution F6, F7 oder sogar F8. Bei Notebooks oder kompakten Tastaturen ist es möglich, dass die Funktionstasten mit einer speziellen Taste erst aktiviert werden muss. Auf deutschen Tastaturen handelt es sich bei dieser Funktionstaste um die "fn"-Taste, welche sich in der Regel links der Leertaste und rechts der linken "Strg"-Taste findet (das kann von Hersteller zu Hersteller aber varieren. Ob die "F"-Tasten  (ganz oben über den Zahlen) diese zusätzliche Funktionstaste benötigen, sieht man meist an einer farblichen Hervorhebung der Funktionstasten und der Steuertaste. Um in die Textkonsole zu gelangen muss dann zusätzlich noch die "fn"-Funktionstaste gedrückt werden, also z. B. <Strg>+<Alt>+<fn>+<F1>. Um zurück in die grafische Oberfläche zu wechseln muss dann die Tastenkombination <Strg>+<Alt>+<fn>+<F5> (bzw. <F6>, <F7> oder sogar <F8> angewendet werden.
 +
 +
 +
'''Referenzen:'''<br/>
 +
Auf der Seite [[Nuetzliche_Scripte#Links_BASH_Programmierung|Nützliche Scripte]] finden sich einige Links zu BASH Einführungen
 +
 +
'''Anmerkung:'''
 +
Bitte Leerzeichen und Formatierungen beachten, diese können entscheidende Unterschiede machen, so dass der Befehl nicht so funktioniert wie man es erwartet.
 +
 +
 +
 +
==Datum/Zeit==
 +
 +
* Eine ASCII konforme Zeitinfo erzeugen, die man z.B. prima für Log-Dateinamen benutzen kann (z.B. 2017-12-22_17-56-34 - also mit abfallender Wertigkeit - dadurch kann man diese dann auch chronologisch sortieren)
 +
<pre>cp -a VonVerzeichnis/* ZuVerzeichnis &>> cp_$(date +%F_%H-%M-%S).log</pre>
 +
 +
 +
* Abfrage ob Sommerzeit in Deutschland (Quelle [https://stackoverflow.com/questions/19901906/detect-daylight-saving-time-in-bash stackoverflow.com])
 +
<pre>if date +%Z | grep -e CET -e EST; then
 +
  echo "Winterzeit"
 +
else
 +
  echo "Sommerzeit"
 +
fi</pre>
 +
 +
 +
 
==Dateisystem==
 
==Dateisystem==
 +
 +
 +
=== Dateisystem Infos (Platzbedarf, Freier Platz, ...) ===
  
 
* Platzbedarf eines Verzeichnisses inklusive aller Unterverzeichnisse anzeigen:
 
* Platzbedarf eines Verzeichnisses inklusive aller Unterverzeichnisse anzeigen:
 +
<pre>du -hs</pre>
 +
 +
 +
* Platzbedarf der Unterverzeichnisse im aktuellen Ordner sowie der Gesamte Speicherbedarf des aktuellen Ordners:
 +
<pre>du -hcs *</pre>
 +
 +
 +
* Dateien / Verzeichnisse mit größtem Platzbedarf zuerst anzeigen:
 +
<pre>du -hs .* * | sort -h</pre>
 +
 +
 +
* Den freien sowie belegten Platz auf allen gemounteten Partitionen anzeigen:
 +
<pre>df -h</pre>
 +
 +
 +
* Eine gut lesbare Anzeige aller Inhalte eines Verzeichnisses mit allen Infos (die neueste Datei am Ende der Ausgabe):
 +
<pre>ls -altrh</pre>
 +
  
<pre>$du -hs</pre>
+
=== Datei und Ordner Rechte Management ===
  
 +
* Rechte der Dateien im aktuellen Ordner inklusive aller Unterordner ("-r" = rekursiv) für Benutzer und Gruppe (u = user = Benutzer, g = group = Gruppe, o = others = Alle Anderen, a = all = Alle = a+g+o) auf Lesen und Schreiben erlaubt (x = execute = ausführen, r = read = lesen, w = write = schreiben) ändern:
 +
<pre>chmod -R ug+rw *</pre>
  
* Freien sowie belegten Platz auf allen gemounteten Partitionen anzeigen
 
<pre>$df -h</pre>
 
  
 +
* chmod ändert die Rechte von Verzeichnissen und Dateien. Um aber z.B. in das Unterverzeichnis zu kommen, muss diese das "x" Attribut haben, die Dateien aber nicht. Diese kann man durch eine Kommandozeilenkombination lösen (siehe auch Info auf [https://wiki.ubuntuusers.de/chmod/#Rechte-rekursiv-setzen UbuntuUser.de]):
 +
<pre>find /verzeichnis/ -type d -exec chmod 755 {} +</pre>
  
* Gut lesbare anzeigen aller Inhalte eines Verzeichnisses mit allen Infos sowie die neueste Datei zuletzt:
 
  
<pre>$ls -altrh</pre>
+
* Benutzer auf "otto" und Gruppe auf "users" für das aktuelle Verzeichnis und alle Unterverzeichnisse ("-r" = rekursiv) ändern:
 +
<pre>chown -r otto:users *</pre>
  
* CDROM Image mit dd erstellen
+
=== Daten Packen ===
  
<pre>$dd if=/dev/cdrom of=/tmp/datei.iso</pre>
+
'''Anmerkung:''' Bei Archiven und Sicherungen möchte man manchmal gerne eindeutige Dateinamen, die Datum und Uhrzeit enthalten, so dass zwei Sicherungen sich nicht überschreiben. Zum anderen wäre es schön, wenn man diese schön chronologisch sortieren könnte. Dass kann man in der Linux Kommandozeile durch das Kommando:
 +
<pre>date +%F_%T</pre>
 +
einfach erreichen. Dabei wird die Formatierung mit einem "+" (anstatt "-") übergeben. Ein Format fängt ähnlich wie in einigen anderen Programmiersprachen mit "%" an Anfang gekennzeichnet. "%F" entspricht dabei dem Format "JJJJ-MM-TT" also 4 stelliger Jahresangabe, zweistelligen Monat und zweistelligen Tag. Ähnlich ist dieses mit "%T" für "SS:MM:ss" was ebenfalls dem jeweils zweistelliger Stunde, Minute und Sekunde entspricht. Eben grad führte der Befehl bei mir zu "2020-03-31_21:10:06". Die Beiden Formate müssen mit einem erlaubten Zeichen verbunden werden, damit es richtig erkannt wird. Deshalb "+%F_%T"). Möchte man diese Info z.B. in den Dateinahmen aufbauen, kann man mit "$(" und ")" um den Befehl, der Kommandozeile sagen, sie soll den Befehl in der Klammer ausführen und das Ergebnis im Dateinamen mit einbauen.
  
* CDROM Image mit dd erstellen (dito mit einer Art Statusanzeige)
+
* Möchte man z.B. auf aktuellen Systemen (die neben <code>/etc/</code> auch <code>/usr/etc/</code> benutzen) die Daten in z.B. ein in <code>/media/backup</code> Verzeichnis eingehängtes externes Laufwerk sichern, kann man das z.B. mit <code>tar -czf</code> (auf manchen systemen gibt es auch ein script <code>tgz</code> dass, das gleiche macht) tun. Dabei steht "-c" für erstellen (create), "-z" für gzip komprimiert und "-f" gibt an dass dieses in die Datei (file) die nachfolgend kommt geschehen soll (dabei ist <code>.tgz</code> nur die kurzform von <code>.tar.gz</code>
 +
<pre>tar -czf /media/backup/etc_$(date +%F_%T).tgz /usr/etc/ /etc/</pre>
  
<pre>$dd if=/dev/cdrom of=/tmp/datei.iso &
+
* Möchte man aber z.B. Daten verschlüsselt und gepackt sichern, kann man dass mit 7zip (muss evtl. nachinstalliert werden) machen. Allerdings mag 7z nicht doppelte Dateinamen im root pfad (hier /usr/etc und /etc - würde beides unter /etc gesichert werden). "a" sagt 7zip dass ein archiv angelegt werden soll. Der Parameter "-p" bewirkt eine Passwort Abfrage (bitte gut merken - denn die Daten sind wirklich gut mit diesem Passort verschlüsselt, so dass es keine Rettung mehr gibt wenn das Passwort vergessen wurde):
 +
<pre>7z a /media/backup/etc_$(date +%F_%T).7z /etc/ -p
 +
7z a /media/backup/usr_etc_$(date +%F_%T).7z /usr/etc/ -p</pre>
 +
 
 +
 
 +
=== CD/DVD- und Partitionsmanagement ===
 +
 
 +
* Ein CD-ROM bzw. DVD-Image mit dd erstellen (zur Sicherung z.B. einer Linux Live CD/DVD):
 +
<pre>dd if=/dev/cdrom of=/tmp/datei.iso</pre>
 +
 
 +
 
 +
* Eine Alternative zum Sichern von CD/DVD:
 +
<pre>cat /dev/cdrom > /tmp/datei.iso</pre>
 +
 
 +
 
 +
* dd-Fortschritt eines Laufenden Prozesses erfragen (<code>pidof dd</code> liefert die eindeutige Prozess-ID die für jeden Prozess im laufenden Linux eindeutig ist):
 +
<pre>kill -SIGUSR1 $(pidof dd)</pre>
 +
 
 +
 
 +
* Als Alternative kann auch den Befehl <code>pv</code> verwendet werden (welcher ebenfalls den Fortschritt anzeigt, indem er den Durchsatz in einer Pipe ausgibt):
 +
<pre>pv < /dev/cdrom > /tmp/datei.iso</pre>
 +
 
 +
 
 +
* Ein CD-ROM-Image mit dd erstellen (dito mit einer Art Statusanzeige):
 +
<pre>dd if=/dev/cdrom of=/tmp/datei.iso &
 
$watch -n 1 "ls -l /tmp/datei.iso"</pre>
 
$watch -n 1 "ls -l /tmp/datei.iso"</pre>
  
  
* Image Datei ''/tmp/datei.iso'' ins Dateisystem an die Stelle ''/mnt/isofiles'' mounten
+
* Die erste Partition der ersten Platte als komprimiertes Image mit bzip sichern:
 +
<pre>dd if=/dev/hda1 | bzip2 -9 > /tmp/partition_image.bzip2</pre>
 +
 
 +
 
 +
* Den MBR (Master Boot Record) der ersten Platte (unkomprimiert) sichern (Größe ist immer 512byte * count=1) (der MBR enthält auf älteren BIOS meist den Bootloader [https://de.wikipedia.org/wiki/Grand_Unified_Bootloader GRUB] enthält):
 +
<pre>dd if=/dev/hda of=~/hda.mbr bs=512 count=1</pre>
 +
 
 +
 
 +
* Die Partitionstabelle der ersten Platte (unkomprimiert) sichern:
 +
<pre>sfdisk -d /dev/hda > ~/hda.pt</pre>
 +
 
 +
 
 +
* Die Partitionstabelle der ersten Platte wiederherstellen (siehe auch auf [http://www.linux-fuer-alle.de/master-boot-record-und-partitionstabelle-sichernherstellen Linux Für Alle] bzw. [http://www.linupedia.org/opensuse/Partitionstabelle_sichern_und_wiederherstellen LinuxPedia]):
 +
<pre>sfdisk /dev/hda < ~/hda.pt</pre>
 +
 
 +
 
 +
* Eine Platte (hier /dev/sda) incl. Partitionstabelle gepackt sichern:
 +
<!-- <pre>dd if=/dev/sda | gzip -9 > ~/image-compress_sda.img.gz</pre> -->
 +
<pre>dd bs=4M if=/dev/sda iflag=fullblock oflag=direct status=progress | bzip2 -9 > /tmp/sda.img.bzip2</pre>
 +
 
 +
* Eine Plattensicherung incl. Partitionstabelle unpacken und zurücksichern (hier auf /dev/sdx):
 +
<!-- <pre>gzip -cd ~/image-compress_sda.img.gz | dd of=/dev/sda</pre> -->
 +
<pre>bzip2 -dc /tmp/sda.img.bzip2  | dd bs=4M of=/dev/sdx iflag=fullblock oflag=direct status=progress</pre>
 +
 
 +
 
 +
* Ein gepacktes Image (hier ZIP <code>2020-12-02-raspios-buster-armhf-full.zip</code> als normaler Benutzer auf einen USB Stick (hier <code>/dev/sdb</code>) kopieren:
 +
<pre>su -c "unzip -c 2020-12-02-raspios-buster-armhf-full.zip | dd bs=4M of=/dev/sdb iflag=fullblock oflag=direct status=progress; sync"</pre>
 +
 
 +
 
 +
* Ein [https://de.wikipedia.org/wiki/Xz xz] komprimiertes "image.raw" direkt auf die partition sda schreiben (mit fortschitsanzeige):
 +
<pre>xzcat image.raw.xz | dd bs=4M of=/dev/sda iflag=fullblock oflag=direct status=progress; sync</pre>
 +
 
 +
 
 +
* Eine  Image-Datei <code>/tmp/datei.iso</code> ins Dateisystem an die Stelle <code>/isofiles</code> [https://de.wikipedia.org/wiki/Mounten mounten] (also eine Partition bzw. Laufwerk einhängen):
 +
<pre>mount -o loop /tmp/datei.iso /mnt/isofiles</pre>
 +
 
 +
 
 +
* Eine Image-Datei <code>/tmp/datei.iso</code> ins Dateisystem an die Stelle <code>/mnt/isofiles</code> dauerhaft einbinden:
 +
<pre>echo -e "\n#/tmp/datei.iso an /mnt/isofiles mounten\n/tmp/datei.iso /mnt/isofiles iso9660 ro,loop 0 0" >> /etc/fstab
 +
mkdir /mnt/isofiles
 +
mount /mnt/isofiles</pre>
 +
 
 +
 
 +
* Die Partitionstabellen aller vorhandener Platten anzeigen:
 +
<pre>fdisk -l</pre>
 +
 
 +
 
 +
* Die Partitionstabelle (hier als Beispiel vom zweiten Laufwerk ''sdb'') bearbeiten:
 +
<pre>fdisk /dev/sdb</pre>
 +
 
 +
 
 +
* Die erste Partition (hier als Beispiel vom dritten Laufwerk ''sdc'') mit [https://de.wikipedia.org/wiki/Ext4 ext4] formatieren:
 +
<pre>mkfs.ext4 /dev/sdb1</pre>
 +
 
 +
 
 +
* Die erstellte Tabelle (hier als Beispiel ''sdb'') dem Linux-Kernel bekannt machen (siehe auch Beschreibung im [https://wiki.ubuntuusers.de/GNU_Parted/#partprobe UbuntuUsers Wiki]):
 +
<pre>partprobe /dev/sdb</pre>
 +
 
 +
=== Datei und Inhaltssuche ===
 +
 
 +
* Im home-Verzeichnis (in dem alle Benutzer einen Unterordner für Daten haben nach dem Verzeichnis ''Downloads'' suchen (welches normalerweise für jeden Benutzer angelegt wird):
 +
<pre>find /home -type d -name Downloads</pre>
 +
 
 +
 
 +
* Einen Text z.B. in allen ''*.html'' Dateien ab dem aktuellen Verzeichnis und allen Unterverzeichnissen zu ersetzten (hier wird der Text ''<Zu ersetzender Text>'' durch den Text ''<Neuer Text>'' ersetzt:
 +
<pre>find . -iname "*.html" -exec sed -i -e "s/<Zu ersetzender Text>/<Neuer Text>/g" {} \;</pre>
 +
 
 +
 
 +
* Die Dateien im Verzeichnis <code>/home/user</code> (= Daten des Benutzers <code>user</code>) in die Datei <code>/tmp/user_backup_$(date +%F_%H-%M-%S).txz</code> (via [https://de.wikipedia.org/wiki/Tar_(Packprogramm) tar] zusammen binden und mit [https://de.wikipedia.org/wiki/XZ_Utils xz] komprimieren. (<code>$(date +%F_%H-%M-%S)</code> generiert einen Zeitstempel dadurch zum Zeitpunkt des aufraufs des kommandos z.B. am 02.09.2018 um 17:07 Uhr und 7 Sekunden wird das Backup <code>/tmp/user_backup_2018-09-02_17-07-08.txz</code> heißen) (siehe auch die Infos im Beitrag [[Backup]]). '''Anmerkung:''' das Verzeichnis <code>/tmp</code> wird je nach Einstellung in einigen Distributionen regelmäßig gelöscht. Hier besser das Verzeichnis einer externen Festplatte oder ein Netzwerklaufwerk verwenden!
 +
<pre>tar cJvf /tmp/user_backup_$(date +%F_%H-%M-%S).txz  -C ~user .</pre>
 +
 
 +
 
 +
* Linux kennt im wesentlichen 3 verschiedene Zeitstempel. Dieses ist zum einen die Zeit der Dateierstellung (creation), der letzten Dateiänderung (modification) sowie des letzten Dateizugriffs (access). Die Zeitstempel einer Datei ansehen:
 +
<pre>stat meine.datei</pre>
 +
 
 +
 
 +
* Die Zeitstempel des letzten Zugriffs (access) und der letzten Änderung (modification) lassen sich mit dem Befehl <code>touch</code> ändern. Mit dem Parameter <code>-r</code> (= reference) werden die Daten von einer anderen Datei übernommen. Mit <code>-m</code> wird die Zeit der letzten Änderung (modification) auf die aktuelle Zeit gestellt und mit <code>-a</code> die des letzten Zugriffs (access). Mit dem Parameter <code>-d</code> kann man eine Zeit angeben wie z.B. "2019-01-20 19:03:01" die Zeit auf den 20.01.2019 um 19:03 Uhr und 1 Sekunde ändert (wird nur <code>-d</code> ohne <code>-m</code> oder <code>-a</code> angegeben, werden beide Zeiten geändert. Im Beispiel werden die Änderungszeit und Zugriffszeit auf "2019-01-20 19:03:01" gestellt:
 +
<pre>touch -d"2019-01-20 19:03:01" meine.datei</pre>
 +
 
 +
 
 +
=== Partitionsbehandlung und Laufwerke Einbinden (Mounten) ===
 +
 
 +
* Alle Platten bzw. Partitionen der verfügbaren Datenträger (nur Blockdevies) anzuzeigen:
 +
<pre>lsblk</pre>
 +
 
 +
* Alternativ alle Platten bzw. Partitionen der verfügbaren Datenträger anzuzeigen (manche systeme benöten dafür root rechte - deshalb "sudo" davor gesetzt um diese nach eingabe des root bzw. Haupbenutzer Passwortes zu bekommen):
 +
<pre>sudo fdisk -l</pre>
 +
 
 +
* Um ein USB-Stick ("/dev/sdx1") als normaler Benutzer (= "user") so einzubinden (= zu "mounten") dass man selber Zugriff hat und es auch unter <code>/var/run/media/$USER</code> eingebunden wird, wird durch folgenden Befehl erreicht (es wird der root oder das Hauptbenutzer Passwort abgefragt):
 +
<pre>udisksctl mount --block-device /dev/sdx1</pre>
 +
 
 +
 
 +
 
 +
==Screen==
 +
 
 +
Möchte man per remote auf einen anderen Liunx-PC lange laufende Prozesse starten, sollte man sich an der Konsole wieder abmelden können. Dieses macht zwar auch ein angehängtes <code>&</code> an den Befehl, allerdings kann man dann die Ausgabe wie Status oder Fehlermeldungen, nicht mehr ansehen. Dieses kann man mit dem Befehl <code>screen</code> machen.
 +
 
 +
 
 +
* Einen Prozess mit Namen '''image''' im Hintergrund starten:
 +
<pre>screen -d -m -S image</pre>
 +
 
 +
 
 +
* Prozesse auflisten:
 +
<pre>screen -list</pre>
 +
 
 +
 
 +
* In den Prozess '''image''' wechseln:
 +
<pre>screen -r image</pre>
 +
 
 +
 
 +
* Alternativ kann man auch in die Prozess-ID welche '''screen -list''' liefert wechseln (z.B. There is a screen on: 19215.image (detached)):
 +
<pre>screen -r 19215</pre>
 +
 
 +
 
 +
* Aus einem '''screen'''-Hintergrund-Prozess wieder auf die Kommandozeile zurück wechseln (z.B. um sich dort per remote wieder abzumelden):
 +
<pre><Strg> + <A> gefolgt von <Strg> + <D></pre>
 +
 
 +
 
 +
'''Anmerkung:'''<br/>Auf der deutschen Tastatur reden wir von der <code><Strg></code>-Taste (=Steuerung); auf englischen Tastaturen heißt diese <code>Ctrl</code>-Taste (=Control, also auch Steuerung auf Deutsch)
 +
 
 +
 
 +
 
 +
==Hardware==
 +
 
 +
* Anzeige der gefundenen USB-Devices (evtl. nur als root möglich, bzw. Pfad mit angeben):
 +
<pre>lsusb -v</pre>
 +
 
 +
 
 +
* Anzeige der gefundenen PCI-Devices:
 +
<pre>lspci -v</pre>
 +
 
 +
 
 +
* Stromsparfunktionen automatisch optimieren (evtl. muss das Programm ''"powertop"'' vorher mit der Linux Paketverwaltung bzw. der Softwareverwaltung installiert werden) (Beschreibung auf [https://www.heise.de/ct/artikel/Powertop-2-0-Strom-sparen-unter-Linux-1167455.html Heise] bzw.[https://wiki.ubuntuusers.de/PowerTOP/ UbuntuUsers]):
 +
<pre>sudo powertop --auto-tune</pre>
 +
 
 +
 
 +
* Stromsparfunktionen kontrollieren und Systemleistung verifizieren. Nun öffnet sich eine Textoberfläche. Durch die Spalten der im Textmodus angezeigten Tabelle kann mit der ''TAB''-Taste "geblättert" werden. Am unteren Rand der Tabelle finden sich weitere Hinweise zur textbasierten Bedienung, welche sich je nach Positionierung durch die "TAB"-Taste ändern können. Die TAB"-Taste findet sich über der Festelltaste für Großschreibung links auf der Tastatur:
 +
<pre>sudo powertop</pre>
 +
 
 +
 
 +
 
 +
==Netzwerk==
 +
 
 +
Die folgenden Befehle erfordern meist root Rechte, die man durch Öffnen eines root Terminals, <code>su</code>, Voranstellen von <code>sudo</code> vor jeden Befehl oder durch Wechseln in den su-mode via <code>sudo su</code> erreicht!
 +
 
 +
* Netzwerkkarten bzw. -Addressen anzeigen:
 +
<pre>ifconfig</pre>
 +
* dito neu:
 +
<pre>ip add show</pre>
 +
 
 +
 
 +
* Netzwerkkarte von Hand die neue IP Adresse 192.168.0.2 zuordnen und das default Gateway mit IP 192.168.0.1 setzen wobe "eth0" durch die jeweilige Device Bezeichnung aus der Ausgabe des obigen Befehls (wie z.B. eno0, eno1, br0, wlp58s0, usw.) ersetzt werden muss:
 +
<pre>ifconfig eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255 up
 +
route add default gw 192.168.0.1</pre>
 +
* dito neu (kann auch mit mehreren Adressen auf das gleiche interface erfolgen!):
 +
<pre>ip addr add 192.168.0.2/24 dev eth0</pre>
 +
 
 +
 
 +
* Eindeutige MAC-Adresse ermitteln (vorher muss man die Adresse allerdings aufgelöst haben, z.B. via <code>ping fritz.box</code> oder <code>ping 192.168.178.1</code> - dann kann man mit nachfolgenden Befehl eine Tabelle mit allen seit dem Start angepingten und aufgelösten Adressen anzeigen lassen):
 +
<pre>arp -a</pre>
 +
* dito neu:
 +
<pre>ip neigh</pre>
 +
 
 +
 
 +
* Die eigene IP ermitteltn (bei Bedarf den Namen des Interfaces ändern)
 +
<pre>ip -4 -o addr show | awk -F"[/, ]" '{print $7"\t: "$2 }'</pre>
 +
 
 +
 
 +
* Eigene IP V4 aus Sicht des Internets:
 +
<pre>dig +short myip.opendns.com @resolver1.opendns.com</pre>
 +
 
 +
 
 +
* Das Default-Gateway ändern (alt):
 +
<pre>route del default
 +
route add default gw 192.168.0.99 (neue gateway ip)</pre>
 +
 
 +
 
 +
* Einen Nameserver gibt man in <code>/etc/resolv.conf</code> an:
 +
<pre>nameserver 192.168.0.1</pre>
 +
 
 +
 
 +
* Ab und an kann es bei Kernel Updates insbesondere bei [https://www.opensuse-forum.de/thread/10777-namensauflösung-via-dns-geht-nicht-mehr/ openSUSE] dazu kommen, dass die Namensauflösung nicht richtig aktualisiert wird. Mit dem nachfolgenden Befehl, kann man die <code>/etc/resolv.conf</code> neu generieren lassen:
 +
<pre>netconfig update -f</pre>
 +
 
 +
 
 +
* Den Weg eines Datenpakets im Netzwerk ansehen (am Beispiel der domain <code>web.de</code>):
 +
<pre>traceroute web.de</pre>
 +
 
 +
 
 +
* Komplette Websites lokal auf den Rechner in das aktuelle Verzeichnis laden:
 +
<pre>wget -r http://www.homepage.de</pre>
 +
 
 +
 
 +
* Eine (grosse) Datei lokal auf den Rechner in das aktuelle Verzeichnis laden. Download fortsetzen (falls abgebrochen (timeout) und dies unterstützt wird):
 +
<pre>wget -c ftp://www.homepage.de/grosse-datei.tgz</pre>
 +
 
 +
 
 +
* Meist will man nicht die komplette Website ('''Achtung!''' das kann sehr, sehr viel sein ...), sondern nur eine bestimmte Seite inklusive der verwendeten Bilder. Dann gibt man die Suchtiefe mit -l an:
 +
<pre>wget -r -l 1 http://www.homepage.de</pre>
 +
 
 +
 
 +
* Weitere nützliche Tips zum rekursiven Herunterladen via wget findet sich beim [http://www.linux-community.de/Archiv/Tipp-der-Woche/Mit-wget-Dateien-rekursiv-herunterladen-auch-per-FTP Linux-Community - Tipp der Woche]
 +
 
 +
 
 +
* Das ''/home'' Verzeichnis des Quellrechners ([http://de.wikipedia.org/wiki/Rekursiv rekursiv]) über eine [http://de.wikipedia.org/wiki/SSH SSH-Verbindung] auf den Ziel-Rechner ''name.zielrechner.local'' in das Verzeichnis ''/datengrab'' und den Dateinamen "home_2007-03-23.tgz" (wenn das Datum des Quellrechners auf den 23.03.2007 steht) speichern. Lautet das Datum aktueller, ist das Datum natürlich anzupassen:
 +
<pre>tar czv /home | ssh name.zielrechner.local "cat > /datengrab/home_$(date +%F).tgz"</pre>
 +
 
 +
 
 +
* Sollte mal z.B. der Displaymanager nicht mehr richtig funktionieren oder sonst der (grafische) Login nicht funktionieren, kann man dem Kernel auch die Anweisung erteilen, eine andere Shell zu starten. Dazu muss man dann z.B. beim Booten den GRUB durch einmaliges Drücken der <ESC>-Taste in den Textmodus wechseln und dort mit der <E>-Taste die angewählte Taste editieren. Hängt man an das Ende der '''Kernel''- Zeile mit '''vmlinuz''' den Parameter <pre>init=/bin/sh</pre>, bzw. wenn man die Bash verwenden möchte eben <pre>init=/bin/bash</pre>, so bootet Linux auf diese Shell (ohne Abfrage des '''root'''-Passwortes). Anschliessend kann man mit der <ENTER>-Taste wieder in die Übersicht zurück wechseln und abschliessend mit der &lt;b&gt;-Taste den geänderten Bootablauf booten.
 +
 
 +
 
 +
* Aufbau eines Servers für ein Heimnetz (Debian Basiert) findet Ihr [http://www.linux-home-server.de/ hier]
 +
 
 +
 
 +
* Möchtet Ihr ein per [https://de.wikipedia.org/wiki/WebDAV WebDAV] verfügbaren [https://de.wikipedia.org/wiki/Cloud_Computing Cloud Speicher] wie (z.B. der bei [https://hilfe-center.1und1.de/tarifergaenzungen-c85328/cloud-c85338/1und1-online-speicher-c84531 1&1 Verträgen enthaltene]) in euer Linux System einbauen gibt es neben der Möglichkeit dieses in den meisten Dateimangern wie [https://de.wikipedia.org/wiki/Dolphin_(KDE) Dophin] bei [https://de.wikipedia.org/wiki/KDE KDE] dieses per (WebDAVs ist wie [https://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol_Secure https] die [https://de.wikipedia.org/wiki/Transport_Layer_Security TLS/SSL] gesicherte Verbindung):<pre>webdav://sd2dav.1und1.de/</pre> oder <pre>webdavs://sd2dav.1und1.de:443/</pre> Sowie einloggen via Benutzernamen (<DeinBenutzer>) und Passwort (<DeinPassword>). Alternativ kann man das auch mit dem WebDAV Dateisystem [https://github.com/jmesmon/wdfs wdfs] wie folgt machen: <pre>wdfs https://sd2dav.1und1.de:443 /mnt/1und1/ -o username=<DeinBenutzer> -o password=<DeinPassword></pre> Bindet man diesen befehl in ein script ein, wird automatisch immer der Cloud-Speicher in das passende Verzeichnis gemounted und man kann zwar etwas Träge aber ohne weiter Einschränkungen darauf zugreifen als ob es Lokal wäre. ''('''Achtung:''' da das Passwort im Klartext in dem Script steht, kann jeder der Zugriff auf dieses script hat sich auch auf eure Cloud zugreifen!)''
 +
 
 +
== Automatisierung mit UDEV Regeln ==
 +
 
 +
Möchte man beim Anstecken von neuer Hardware wie z.B. einen USB Datenträger, automatisch eine Aktion starten, so kann man dass ganz einfach mit einem modernen Linux durch Definition einer so genannten UDEV-Regel tun.
 +
 
 +
 
 +
===Grobes Vorgehen===
 +
 
 +
# mit <code>lsusb</code> bekommt ihr raus, wie das Device (Device = Datenträger) heisst
 +
# Herausfinden der Daten des eingestöpselten Gerätes (hier im Beispiel '''sdb1''') auch mit: <br/><code>udevadm info -a -p $(udevadm info -q path -n /dev/sdb1)</code>
 +
# in der richtigen Sektion, nämlich da, wo auch die '''idVendor''' steht, die Daten zu '''idVendor''' und '''idProduct''' zupfen
 +
# dann <code>/etc/init.d/udev restart</code>
 +
# das UDEV-Log-Level kann man ändern über:<br/><code>control --log-priority=info</code>
 +
# '''Regel-file:''' <code>/etc/udev/rules.d/85-my_rule.rules</code> mit dem bevorzugten Editor öffnen (z.B. mit joe, kate, ...)
 +
# Regel in der Datei eintragen <br/><code>ACTION=="add", ATTRS{idVendor}=="0480", ATTRS{idProduct}=="a208", RUN+="/usr/local/bin/my_script"</code>
 +
# Nun wird beim Erkennen des Herstellergerätes '''0480''' mit der Produkt-Id '''a208''' das script '''/usr/local/bin/my_script''' gestartet (mehr zu Skripten findet Ihr im Artikel [[Nuetzliche_Scripte|Nützliche Skripte]])
 +
 
 +
 
 +
=== Siehe auch ===
 +
 
 +
* UDEV Beschreibung auf [https://de.wikipedia.org/wiki/Udev Wikipedia]
 +
* UDEV Beschreibung auf [https://wiki.ubuntuusers.de/udev/ UbutuUsers.de]
 +
* UDEV Beschreibung auf [https://www.suse.com/de-de/documentation/sles11/singlehtml/book_sle_admin/cha.udev.html SuSE.com]
 +
 
 +
 
 +
 
 +
== Datei umwandeln oder modifizieren ==
 +
 
 +
Unter Linux ist es manchmal einfacher Dateien auf der Shell zu bearbeiten, anstatt lange mehr oder weniger nach einem Programm mit grafischen Interface zu suchen. Dabei gibt es Zahlreiche gute kleine Hilfsprogramme (= Tools) die einige Modifikationen sehr einfach und schnell erledigen.
 +
 
 +
Natürlich müssen die Programme bei bedarf nachinstalliert werden:
 +
* "ghostscript": Ist normalerweise vorinstalliert und wird auch zum Drucken benötigt (= "gs")
 +
* "ImageMagick": enthält mit "convert" einen leistungsfähigen Datei-Umwandler
 +
 
 +
 
 +
''Mein Tip: Einfach mal via Suchmaschine danach suchen (z.B. "Linux PDF verkleinern" - Ergebnis siehe nachfolgend)''
 +
 
 +
* PDF Datei verkleinern (bei mir war ein Gescanntes Dokument 61MB groß - nach dem Befehl waren es unter 1MB)
 +
<pre>gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=Kleine_ZielDatei.pdf Große_QuellDatei.pdf</pre>
 +
 
 +
* Mehre Dateien, mit ImageMagick unterstützten Dateiformat zusammenfügen in eine Datei zu einem Mehrseitigen PDF
 +
<pre>convert QuellDatei1.jpg QuellDatei2.png QuellDatei3.gif QuellDatei4.pdf ZielDatei.pdf</pre>
 +
 
 +
* Mehre PDF Dokumente zu einen zusammen fügen (erfordert das PDF-Toolkit Paket [https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ pdftk (en)]):
 +
<pre>pdftk datei1.pdf datei2.pdf datei3.pdf cat output datei123.pdf
 +
pdftk A=datei2.pdf B=datei2.pdf cat A1-7 B5-end A9 output dateiA1-7_B5-end_A9.pdf</pre>
 +
 
 +
 
 +
Regferenzen/Anleitungen:
 +
# [https://wiki.ubuntuusers.de/pdftk/ pdftk] Beschreibung im UbuntuUsers-Wiki (de)
 +
 
 +
 
 +
== GRUB2-Komandozeile ==
 +
 
 +
Ab und zu kommt es vor, das man z.B. einen USB Stick von [https://de.wikipedia.org/wiki/Grand_Unified_Bootloader#GRUB_2 GRUB2] starten möchte. Meist wird dieser aber nicht in der mittlerweile üblichen Menüliste aufgeführt und man möchte auch nicht zwingend die GRUB2-Konfiguration für eine einmalige Benutzung anpassen. Einfach geht das mit der GRUB2-Kommandozeile, die beim erscheinen des Bootmenüs mit "c" wie englisch "Comandline" gestartet wird.
 +
 
 +
Gute Hilfen finden sich hier:
 +
* Generische Beschreibung zu GRUB2 im [https://wiki.ubuntuusers.de/GRUB_2/ UbuntuUsers.de Wiki]
 +
* Kommandozeilen Optionen im [https://wiki.ubuntuusers.de/GRUB_2/Shell/ UbuntuUsers.de Wiki]
 +
* Bootoptionen im [https://wiki.ubuntuusers.de/Bootoptionen/ UbuntuUsers.de Wiki]
 +
* Tipps zum booten eines anderen Betriebssystems [https://www.aioboot.com/en/boot-windows-grub2/ AIO boot]
 +
* Oder bei BSD auf [https://help.ubuntu.com/community/Grub2%20Other%20Os Ubuntu-Hilfe] (in Englisch)
 +
* Gute Hilfe aber nur wenn man den Artikel gekauft hat in der [https://www.heise.de/select/ct/2018/23/1541484445887443 c't (Heise)]
 +
 
 +
 
 +
=== Starten eines Linux ===
 +
 
 +
"X" muss mit der Laufwerks-Nummer ersetzt werden und "Y" muss mit der Partitions-Nummer ersetzt werden. Als trick, kann man meist mit <TAB> den Befehl bis zur nächsten nicht mehr eindeutigen stelle ausfüllen lassen und mit 2 mal <TAB> kann man alle möglichen Namen auflisten lassen, wie das auf der Linux Kommandozeile auch meist der Fall ist.
 +
 
 +
Start-Datenträger festlegen:
 +
set root=(hdX,Y)
 +
Falls der Home-Ordner auf eine eigene Partition ausgelagert ist muss dieses eingebunden werden:
 +
set home=(hdX,Y)
 +
Wie gesagt "hdX,Y" muss dem eigenen System entsprechend ersetzt werden.
 +
 
 +
Pfad zu den Startdateien angeben:
 +
linux /vmlinuz root=/dev/sdAZ ro
 +
Dabei muss "sdAZ" natürlich auch auf das eigene System angepasst werden (z.B. "/dev/sda2"). "ro" = read only. Bei einigen Systemen muss noch das Verzeichnis "/boot" angeben werden also:
 +
linux /boot/vmlinuz root=/dev/sdAZ ro
 +
Anmerkung: Ist die vmlinuz nicht auffindbar, meldet dieses grub2 mit einer entsprechenden Meldung.
  
<pre>$mount -o loop /tmp/datei.iso /mnt/isofiles</pre>
 
  
* Image Datei ''/tmp/datei.iso'' ins Dateisystem an die Stelle ''/mnt/isofiles'' mounten (dito Dauerhaft)
+
Pfad zur Ramdisk:
<pre>$echo -e "\n#/tmp/datei.iso an /mnt/isofiles mounten\n/tmp/datei.iso /mnt/isofiles iso9660 ro,loop 0 0" >> /etc/fstab
+
initrd /initrd
$mount /mnt/isofiles</pre>
+
Wobei je nach system auch
 +
initrd /initrd.img
 +
Richtig sein kann. "initrd(.img)" ist immer ein Link auf den aktuellsten Kernel. Mit <TAB> oder 2 mal <TAB> kann man alle vorhandenen Kernel anzeigen lassen und z.B. auch einen älteren Kernel starten:
 +
initrd /initrd-5.4.7-1-default
 +
Aber mittlerweile kann auch erforderlich sein, dass Verzeichnis "/boot" noch hinzu gefügt werden muss:
 +
initrd /boot/initrd
 +
Anmerkung: Ist die initrd nicht auffindbar, meldet dieses grub2 mit einer entsprechenden Meldung.
  
===Hardware===
 
  
* Anzeigen der gefundenen USB-Devices (evtl. nur als root möglich bzw. Pfad mit angeben):
+
System starten:
 +
boot
  
<pre>$lsusb -v</pre>
 
  
 +
=== Starten des c't-Notfall-Windows ===
  
* Anzeigen der gefundenen PCI-Devices:
+
Siehe auch Artikel [https://www.heise.de/ct/artikel/c-t-Notfall-Windows-2020-4514169.html c't-Notfall-Windows 2020] auf Heise.
  
<pre>$lspci -v</pre>
+
"X" muss mit der Laufwerks-Nummer ersetzt werden und "Y" muss mit der Partitions-Nummer ersetzt werden:
 +
<pre>set root=(hdX,msdosY)
 +
ntldr /bootmgr
 +
boot</pre>
  
===Netzwerk===
+
Abwer wie findet man "X" und "Y" am besten raus? Ganz einfach, wie in jeden gut konfigurierten Linux wird mit der Tabulatortaste "<TAB>" (einmal Vervollständigung bis mehrere Möglichkeiten und zwei mal betätigt Vorschlag möglicher Bezeichnungen) angezeigt. Alternativ zeigt <code>ls</code> die vorhanden Platten an (hd0 bis .. hdX und ein paar spezielle Laufwerke).
  
* Netzwerkkarte von Hand die neue IP Adresse 192.168.0.2 zuordnen und das default Gateway mit IP 192.168.0.1 setzen
+
set root=<TAB>(<TAB>)
 +
führt zu einem gültigen Eintrag wenn man das nächste Zeichen und erneut <TAB> oder doppelt <TAB> eingibt z.B. zu:
 +
set root=(hd1,msdos1)
 +
Nach Auswahl des Laufwerks und der Partition des "root" (also dort wo hingewechselt werden soll), muss noch das Programm welches den Bootvorgang ausführen soll ausgewählt werden. Bei MS Windows 10 meist:
 +
ntldr /<TAB>(<TAB>)
 +
welches in der Regel zu:
 +
ntldr /bootmgr
 +
da dass Programm /bootmgr.exe verwendet werden soll. Zum Schluss startet man wieder mit
 +
boot
 +
den Bootprozess in diesen Beispiel also <code>hd1,msdos1/bootmgr</code>.
  
<pre>$ifconfig eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255 up
 
$route add default gw 192.168.0.1</pre>
 
  
* Das default Gateway ändern
+
Alternativ kann man auch nach den ersten Bootbaren Windows (Vista, 7, ... 10) suchen:
 +
search -s root -f /Boot/BCD
 +
Erfolgt keine Fehlermeldung kann man mit
 +
<pre>ntldr /bootmgr
 +
boot</pre>
  
<pre>$route del default
+
Falls der erste "search" nicht zum Erfolg geführt hat, kann man auch (Windows XP/2003)
$route add default gw 192.168.0.99 (neue gateway ip)</pre>
+
search -s root -f /NTDETECT.COM drivemap -s hd0 $root
 +
Wenn keine Fehlermeldung erscheint kann man dann mit
 +
<pre>ntldr /ntldr
 +
boot</pre>
 +
das System starten bzw. Booten.
  
* Einen Nameserver gibt man in /etc/resolv.conf an:
 
  
<pre>$nameserver 192.168.0.1</pre>
 
  
 +
== Scripte==
  
* Den Weg von Datenpaket im Netzwerk ansehen (im Beispiel zu web.de)
+
Die oben genannten Befehle, kann man auch in einer Datei zusammenfassen und nach dem Setzen des "Execute"-Attributs als so genanntes Script ausführen. Hier finden sich einige [[Nuetzliche_Scripte|Nützliche Skripte]].
  
<pre>$traceroute web.de</pre>
 
  
  
* Komplette Websites lokal auf den Rechner in das aktuelle Verzeichnis laden
+
== Weiterführende Links ==
  
<pre>$wget -r http://www.homepage.de</pre>
+
* [https://www.heise.de/ratgeber/FAQ-Shell-Helferlein-6221404.html Linux-Shell FAQ] auf Heise
 +
* ...
  
Meist will man nicht die komplette Website (das kann sehr, sehr viel sein...), sondern nur eine bestimmte Seite inklusive der verwendeten Bilder. Dann gibt man die Suchtiefe mit -l an:
 
  
<pre>$wget -r -l 1 http://www.homepage.de</pre>
+
----
 +
Zurück zur [[Erste-Hilfe|Linux Hilfeseite]]

Aktuelle Version vom 30. September 2024, 20:47 Uhr

Die so genannte Shell ist das Linux-Textinterface, welches durch Eingabe von Befehlen den Linux-PC steuern kann. Hier findet sich eine Sammlung von Befehlen, die sich in der Linux Shell verwenden lassen, um Aufgaben zu vereinfachen, oder aber einfach per Markieren und Kopieren (manchmal mit kleinen Anpassungen,- z.B. bei Variablen wie Dateinamen, etc.) verwendbar sind.

Es gibt, wie häufig unter Linux, mehrere Möglichkeiten in eine Konsole zu wechseln. Zum einen bieten die meisten Linux-Desktop-Oberflächen ein Programm an, das sich wie ein Fenster öffnet und in welches dann die Befehle eingegeben werden können. Man findet es zum Beispiel, indem man in der Programmliste nach einem Programm mit der Bezeichnung "Terminal", "Konsole", "XTerm" oder ähnlichem sucht. Meistens kann man die Suche durch Eingabe der Bezeichnungen in dem geöffneten Menü eingrenzen.

Zum anderen kann man auch ganz in eine so genannte Konsole wechseln, die dann den ganzen Bildschirm füllt. Tatsächlich meldet man sich in diesem Fall vorläufig vom Fenstermanager ab, so dass man nur noch über Textbefehle, nicht aber per Maus (grafisch) auf das Betriebssystem zugreifen kann. Das kann besonders dann hilfreich sein, wenn der Desktop nicht mehr bedienbar, oder erst gar nicht angeboten wird (z. B. auf Servern). Diese Konsole kann man mit der Tastenkombination <Strg>+<Alt>+<F1> für die erste "Haupt"-Konsole bis - je nach der verwendeten Distribution - <Strg>+<Alt>+<F4> bis <Strg>+<Alt>+<F6>) erreichen. Dabei sind die so genannten "Control"-Taste (=Ctrl - auf einer deutschen Tastatur meist mit dem Aufdruck "Strg" versehen), die "Alternate"-Taste (auf einer deutschen Tastatur meist mit dem Aufdruck "Alt" versehen) und eine der "Funktionstasten" "F1" bis "F12" gleichzeitig zu betätigen. Dabei drückt man zuerst die "Strg"-Taste, hält diese weiterhin gedrückt und drückt dann zusätzlich noch die (oben beschriebenen) erforderlichen Tasten, bis der Bildschirm einen in der Regel schwarzen Hintergrund mit weisser Schrift zum Benutzer-"Login" auffordert. Dort muss man dann seinen eingestellten Benutzernamen, gefolgt von der "Enter"- oder "Return"-Taste eingeben. Anschliessend wird man in der Regel aufgefordert, das dazugehörige Passwort einzugeben. Die Eingabe des Passwortes ist "unsichtbar", man sieht also nicht, dass getippt wird; auch keine Punkte oder sonstigen Platzhalter. Um die Textkonsole wieder zu verlassen, wendet man folgende Tastenkombination an: <Strg>+<Alt>+<F5> bzw. je nach Distribution F6, F7 oder sogar F8. Bei Notebooks oder kompakten Tastaturen ist es möglich, dass die Funktionstasten mit einer speziellen Taste erst aktiviert werden muss. Auf deutschen Tastaturen handelt es sich bei dieser Funktionstaste um die "fn"-Taste, welche sich in der Regel links der Leertaste und rechts der linken "Strg"-Taste findet (das kann von Hersteller zu Hersteller aber varieren. Ob die "F"-Tasten (ganz oben über den Zahlen) diese zusätzliche Funktionstaste benötigen, sieht man meist an einer farblichen Hervorhebung der Funktionstasten und der Steuertaste. Um in die Textkonsole zu gelangen muss dann zusätzlich noch die "fn"-Funktionstaste gedrückt werden, also z. B. <Strg>+<Alt>+<fn>+<F1>. Um zurück in die grafische Oberfläche zu wechseln muss dann die Tastenkombination <Strg>+<Alt>+<fn>+<F5> (bzw. <F6>, <F7> oder sogar <F8> angewendet werden.


Referenzen:
Auf der Seite Nützliche Scripte finden sich einige Links zu BASH Einführungen

Anmerkung:
Bitte Leerzeichen und Formatierungen beachten, diese können entscheidende Unterschiede machen, so dass der Befehl nicht so funktioniert wie man es erwartet.


Datum/Zeit

  • Eine ASCII konforme Zeitinfo erzeugen, die man z.B. prima für Log-Dateinamen benutzen kann (z.B. 2017-12-22_17-56-34 - also mit abfallender Wertigkeit - dadurch kann man diese dann auch chronologisch sortieren)
cp -a VonVerzeichnis/* ZuVerzeichnis &>> cp_$(date +%F_%H-%M-%S).log


if date +%Z | grep -e CET -e EST; then
  echo "Winterzeit"
else
  echo "Sommerzeit"
fi


Dateisystem

Dateisystem Infos (Platzbedarf, Freier Platz, ...)

  • Platzbedarf eines Verzeichnisses inklusive aller Unterverzeichnisse anzeigen:
du -hs


  • Platzbedarf der Unterverzeichnisse im aktuellen Ordner sowie der Gesamte Speicherbedarf des aktuellen Ordners:
du -hcs *


  • Dateien / Verzeichnisse mit größtem Platzbedarf zuerst anzeigen:
du -hs .* * | sort -h


  • Den freien sowie belegten Platz auf allen gemounteten Partitionen anzeigen:
df -h


  • Eine gut lesbare Anzeige aller Inhalte eines Verzeichnisses mit allen Infos (die neueste Datei am Ende der Ausgabe):
ls -altrh


Datei und Ordner Rechte Management

  • Rechte der Dateien im aktuellen Ordner inklusive aller Unterordner ("-r" = rekursiv) für Benutzer und Gruppe (u = user = Benutzer, g = group = Gruppe, o = others = Alle Anderen, a = all = Alle = a+g+o) auf Lesen und Schreiben erlaubt (x = execute = ausführen, r = read = lesen, w = write = schreiben) ändern:
chmod -R ug+rw *


  • chmod ändert die Rechte von Verzeichnissen und Dateien. Um aber z.B. in das Unterverzeichnis zu kommen, muss diese das "x" Attribut haben, die Dateien aber nicht. Diese kann man durch eine Kommandozeilenkombination lösen (siehe auch Info auf UbuntuUser.de):
find /verzeichnis/ -type d -exec chmod 755 {} +


  • Benutzer auf "otto" und Gruppe auf "users" für das aktuelle Verzeichnis und alle Unterverzeichnisse ("-r" = rekursiv) ändern:
chown -r otto:users *

Daten Packen

Anmerkung: Bei Archiven und Sicherungen möchte man manchmal gerne eindeutige Dateinamen, die Datum und Uhrzeit enthalten, so dass zwei Sicherungen sich nicht überschreiben. Zum anderen wäre es schön, wenn man diese schön chronologisch sortieren könnte. Dass kann man in der Linux Kommandozeile durch das Kommando:

date +%F_%T

einfach erreichen. Dabei wird die Formatierung mit einem "+" (anstatt "-") übergeben. Ein Format fängt ähnlich wie in einigen anderen Programmiersprachen mit "%" an Anfang gekennzeichnet. "%F" entspricht dabei dem Format "JJJJ-MM-TT" also 4 stelliger Jahresangabe, zweistelligen Monat und zweistelligen Tag. Ähnlich ist dieses mit "%T" für "SS:MM:ss" was ebenfalls dem jeweils zweistelliger Stunde, Minute und Sekunde entspricht. Eben grad führte der Befehl bei mir zu "2020-03-31_21:10:06". Die Beiden Formate müssen mit einem erlaubten Zeichen verbunden werden, damit es richtig erkannt wird. Deshalb "+%F_%T"). Möchte man diese Info z.B. in den Dateinahmen aufbauen, kann man mit "$(" und ")" um den Befehl, der Kommandozeile sagen, sie soll den Befehl in der Klammer ausführen und das Ergebnis im Dateinamen mit einbauen.

  • Möchte man z.B. auf aktuellen Systemen (die neben /etc/ auch /usr/etc/ benutzen) die Daten in z.B. ein in /media/backup Verzeichnis eingehängtes externes Laufwerk sichern, kann man das z.B. mit tar -czf (auf manchen systemen gibt es auch ein script tgz dass, das gleiche macht) tun. Dabei steht "-c" für erstellen (create), "-z" für gzip komprimiert und "-f" gibt an dass dieses in die Datei (file) die nachfolgend kommt geschehen soll (dabei ist .tgz nur die kurzform von .tar.gz
tar -czf /media/backup/etc_$(date +%F_%T).tgz /usr/etc/ /etc/
  • Möchte man aber z.B. Daten verschlüsselt und gepackt sichern, kann man dass mit 7zip (muss evtl. nachinstalliert werden) machen. Allerdings mag 7z nicht doppelte Dateinamen im root pfad (hier /usr/etc und /etc - würde beides unter /etc gesichert werden). "a" sagt 7zip dass ein archiv angelegt werden soll. Der Parameter "-p" bewirkt eine Passwort Abfrage (bitte gut merken - denn die Daten sind wirklich gut mit diesem Passort verschlüsselt, so dass es keine Rettung mehr gibt wenn das Passwort vergessen wurde):
7z a /media/backup/etc_$(date +%F_%T).7z /etc/ -p
7z a /media/backup/usr_etc_$(date +%F_%T).7z /usr/etc/ -p


CD/DVD- und Partitionsmanagement

  • Ein CD-ROM bzw. DVD-Image mit dd erstellen (zur Sicherung z.B. einer Linux Live CD/DVD):
dd if=/dev/cdrom of=/tmp/datei.iso


  • Eine Alternative zum Sichern von CD/DVD:
cat /dev/cdrom > /tmp/datei.iso


  • dd-Fortschritt eines Laufenden Prozesses erfragen (pidof dd liefert die eindeutige Prozess-ID die für jeden Prozess im laufenden Linux eindeutig ist):
kill -SIGUSR1 $(pidof dd)


  • Als Alternative kann auch den Befehl pv verwendet werden (welcher ebenfalls den Fortschritt anzeigt, indem er den Durchsatz in einer Pipe ausgibt):
pv < /dev/cdrom > /tmp/datei.iso


  • Ein CD-ROM-Image mit dd erstellen (dito mit einer Art Statusanzeige):
dd if=/dev/cdrom of=/tmp/datei.iso &
$watch -n 1 "ls -l /tmp/datei.iso"


  • Die erste Partition der ersten Platte als komprimiertes Image mit bzip sichern:
dd if=/dev/hda1 | bzip2 -9 > /tmp/partition_image.bzip2


  • Den MBR (Master Boot Record) der ersten Platte (unkomprimiert) sichern (Größe ist immer 512byte * count=1) (der MBR enthält auf älteren BIOS meist den Bootloader GRUB enthält):
dd if=/dev/hda of=~/hda.mbr bs=512 count=1


  • Die Partitionstabelle der ersten Platte (unkomprimiert) sichern:
sfdisk -d /dev/hda > ~/hda.pt


sfdisk /dev/hda < ~/hda.pt


  • Eine Platte (hier /dev/sda) incl. Partitionstabelle gepackt sichern:
dd bs=4M if=/dev/sda iflag=fullblock oflag=direct status=progress | bzip2 -9 > /tmp/sda.img.bzip2
  • Eine Plattensicherung incl. Partitionstabelle unpacken und zurücksichern (hier auf /dev/sdx):
bzip2 -dc /tmp/sda.img.bzip2  | dd bs=4M of=/dev/sdx iflag=fullblock oflag=direct status=progress


  • Ein gepacktes Image (hier ZIP 2020-12-02-raspios-buster-armhf-full.zip als normaler Benutzer auf einen USB Stick (hier /dev/sdb) kopieren:
su -c "unzip -c 2020-12-02-raspios-buster-armhf-full.zip | dd bs=4M of=/dev/sdb iflag=fullblock oflag=direct status=progress; sync"


  • Ein xz komprimiertes "image.raw" direkt auf die partition sda schreiben (mit fortschitsanzeige):
xzcat image.raw.xz | dd bs=4M of=/dev/sda iflag=fullblock oflag=direct status=progress; sync


  • Eine Image-Datei /tmp/datei.iso ins Dateisystem an die Stelle /isofiles mounten (also eine Partition bzw. Laufwerk einhängen):
mount -o loop /tmp/datei.iso /mnt/isofiles


  • Eine Image-Datei /tmp/datei.iso ins Dateisystem an die Stelle /mnt/isofiles dauerhaft einbinden:
echo -e "\n#/tmp/datei.iso an /mnt/isofiles mounten\n/tmp/datei.iso /mnt/isofiles iso9660 ro,loop 0 0" >> /etc/fstab
mkdir /mnt/isofiles
mount /mnt/isofiles


  • Die Partitionstabellen aller vorhandener Platten anzeigen:
fdisk -l


  • Die Partitionstabelle (hier als Beispiel vom zweiten Laufwerk sdb) bearbeiten:
fdisk /dev/sdb


  • Die erste Partition (hier als Beispiel vom dritten Laufwerk sdc) mit ext4 formatieren:
mkfs.ext4 /dev/sdb1


  • Die erstellte Tabelle (hier als Beispiel sdb) dem Linux-Kernel bekannt machen (siehe auch Beschreibung im UbuntuUsers Wiki):
partprobe /dev/sdb

Datei und Inhaltssuche

  • Im home-Verzeichnis (in dem alle Benutzer einen Unterordner für Daten haben nach dem Verzeichnis Downloads suchen (welches normalerweise für jeden Benutzer angelegt wird):
find /home -type d -name Downloads


  • Einen Text z.B. in allen *.html Dateien ab dem aktuellen Verzeichnis und allen Unterverzeichnissen zu ersetzten (hier wird der Text <Zu ersetzender Text> durch den Text <Neuer Text> ersetzt:
find . -iname "*.html" -exec sed -i -e "s/<Zu ersetzender Text>/<Neuer Text>/g" {} \;


  • Die Dateien im Verzeichnis /home/user (= Daten des Benutzers user) in die Datei /tmp/user_backup_$(date +%F_%H-%M-%S).txz (via tar zusammen binden und mit xz komprimieren. ($(date +%F_%H-%M-%S) generiert einen Zeitstempel dadurch zum Zeitpunkt des aufraufs des kommandos z.B. am 02.09.2018 um 17:07 Uhr und 7 Sekunden wird das Backup /tmp/user_backup_2018-09-02_17-07-08.txz heißen) (siehe auch die Infos im Beitrag Backup). Anmerkung: das Verzeichnis /tmp wird je nach Einstellung in einigen Distributionen regelmäßig gelöscht. Hier besser das Verzeichnis einer externen Festplatte oder ein Netzwerklaufwerk verwenden!
tar cJvf /tmp/user_backup_$(date +%F_%H-%M-%S).txz  -C ~user .


  • Linux kennt im wesentlichen 3 verschiedene Zeitstempel. Dieses ist zum einen die Zeit der Dateierstellung (creation), der letzten Dateiänderung (modification) sowie des letzten Dateizugriffs (access). Die Zeitstempel einer Datei ansehen:
stat meine.datei


  • Die Zeitstempel des letzten Zugriffs (access) und der letzten Änderung (modification) lassen sich mit dem Befehl touch ändern. Mit dem Parameter -r (= reference) werden die Daten von einer anderen Datei übernommen. Mit -m wird die Zeit der letzten Änderung (modification) auf die aktuelle Zeit gestellt und mit -a die des letzten Zugriffs (access). Mit dem Parameter -d kann man eine Zeit angeben wie z.B. "2019-01-20 19:03:01" die Zeit auf den 20.01.2019 um 19:03 Uhr und 1 Sekunde ändert (wird nur -d ohne -m oder -a angegeben, werden beide Zeiten geändert. Im Beispiel werden die Änderungszeit und Zugriffszeit auf "2019-01-20 19:03:01" gestellt:
touch -d"2019-01-20 19:03:01" meine.datei


Partitionsbehandlung und Laufwerke Einbinden (Mounten)

  • Alle Platten bzw. Partitionen der verfügbaren Datenträger (nur Blockdevies) anzuzeigen:
lsblk
  • Alternativ alle Platten bzw. Partitionen der verfügbaren Datenträger anzuzeigen (manche systeme benöten dafür root rechte - deshalb "sudo" davor gesetzt um diese nach eingabe des root bzw. Haupbenutzer Passwortes zu bekommen):
sudo fdisk -l
  • Um ein USB-Stick ("/dev/sdx1") als normaler Benutzer (= "user") so einzubinden (= zu "mounten") dass man selber Zugriff hat und es auch unter /var/run/media/$USER eingebunden wird, wird durch folgenden Befehl erreicht (es wird der root oder das Hauptbenutzer Passwort abgefragt):
udisksctl mount --block-device /dev/sdx1


Screen

Möchte man per remote auf einen anderen Liunx-PC lange laufende Prozesse starten, sollte man sich an der Konsole wieder abmelden können. Dieses macht zwar auch ein angehängtes & an den Befehl, allerdings kann man dann die Ausgabe wie Status oder Fehlermeldungen, nicht mehr ansehen. Dieses kann man mit dem Befehl screen machen.


  • Einen Prozess mit Namen image im Hintergrund starten:
screen -d -m -S image


  • Prozesse auflisten:
screen -list


  • In den Prozess image wechseln:
screen -r image


  • Alternativ kann man auch in die Prozess-ID welche screen -list liefert wechseln (z.B. There is a screen on: 19215.image (detached)):
screen -r 19215


  • Aus einem screen-Hintergrund-Prozess wieder auf die Kommandozeile zurück wechseln (z.B. um sich dort per remote wieder abzumelden):
<Strg> + <A> gefolgt von <Strg> + <D>


Anmerkung:
Auf der deutschen Tastatur reden wir von der <Strg>-Taste (=Steuerung); auf englischen Tastaturen heißt diese Ctrl-Taste (=Control, also auch Steuerung auf Deutsch)


Hardware

  • Anzeige der gefundenen USB-Devices (evtl. nur als root möglich, bzw. Pfad mit angeben):
lsusb -v


  • Anzeige der gefundenen PCI-Devices:
lspci -v


  • Stromsparfunktionen automatisch optimieren (evtl. muss das Programm "powertop" vorher mit der Linux Paketverwaltung bzw. der Softwareverwaltung installiert werden) (Beschreibung auf Heise bzw.UbuntuUsers):
sudo powertop --auto-tune


  • Stromsparfunktionen kontrollieren und Systemleistung verifizieren. Nun öffnet sich eine Textoberfläche. Durch die Spalten der im Textmodus angezeigten Tabelle kann mit der TAB-Taste "geblättert" werden. Am unteren Rand der Tabelle finden sich weitere Hinweise zur textbasierten Bedienung, welche sich je nach Positionierung durch die "TAB"-Taste ändern können. Die TAB"-Taste findet sich über der Festelltaste für Großschreibung links auf der Tastatur:
sudo powertop


Netzwerk

Die folgenden Befehle erfordern meist root Rechte, die man durch Öffnen eines root Terminals, su, Voranstellen von sudo vor jeden Befehl oder durch Wechseln in den su-mode via sudo su erreicht!

  • Netzwerkkarten bzw. -Addressen anzeigen:
ifconfig
  • dito neu:
ip add show


  • Netzwerkkarte von Hand die neue IP Adresse 192.168.0.2 zuordnen und das default Gateway mit IP 192.168.0.1 setzen wobe "eth0" durch die jeweilige Device Bezeichnung aus der Ausgabe des obigen Befehls (wie z.B. eno0, eno1, br0, wlp58s0, usw.) ersetzt werden muss:
ifconfig eth0 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255 up 
route add default gw 192.168.0.1
  • dito neu (kann auch mit mehreren Adressen auf das gleiche interface erfolgen!):
ip addr add 192.168.0.2/24 dev eth0


  • Eindeutige MAC-Adresse ermitteln (vorher muss man die Adresse allerdings aufgelöst haben, z.B. via ping fritz.box oder ping 192.168.178.1 - dann kann man mit nachfolgenden Befehl eine Tabelle mit allen seit dem Start angepingten und aufgelösten Adressen anzeigen lassen):
arp -a
  • dito neu:
ip neigh


  • Die eigene IP ermitteltn (bei Bedarf den Namen des Interfaces ändern)
ip -4 -o addr show | awk -F"[/, ]" '{print $7"\t: "$2 }'


  • Eigene IP V4 aus Sicht des Internets:
dig +short myip.opendns.com @resolver1.opendns.com


  • Das Default-Gateway ändern (alt):
route del default
route add default gw 192.168.0.99 (neue gateway ip)


  • Einen Nameserver gibt man in /etc/resolv.conf an:
nameserver 192.168.0.1


  • Ab und an kann es bei Kernel Updates insbesondere bei openSUSE dazu kommen, dass die Namensauflösung nicht richtig aktualisiert wird. Mit dem nachfolgenden Befehl, kann man die /etc/resolv.conf neu generieren lassen:
netconfig update -f


  • Den Weg eines Datenpakets im Netzwerk ansehen (am Beispiel der domain web.de):
traceroute web.de


  • Komplette Websites lokal auf den Rechner in das aktuelle Verzeichnis laden:
wget -r http://www.homepage.de


  • Eine (grosse) Datei lokal auf den Rechner in das aktuelle Verzeichnis laden. Download fortsetzen (falls abgebrochen (timeout) und dies unterstützt wird):
wget -c ftp://www.homepage.de/grosse-datei.tgz


  • Meist will man nicht die komplette Website (Achtung! das kann sehr, sehr viel sein ...), sondern nur eine bestimmte Seite inklusive der verwendeten Bilder. Dann gibt man die Suchtiefe mit -l an:
wget -r -l 1 http://www.homepage.de



  • Das /home Verzeichnis des Quellrechners (rekursiv) über eine SSH-Verbindung auf den Ziel-Rechner name.zielrechner.local in das Verzeichnis /datengrab und den Dateinamen "home_2007-03-23.tgz" (wenn das Datum des Quellrechners auf den 23.03.2007 steht) speichern. Lautet das Datum aktueller, ist das Datum natürlich anzupassen:
tar czv /home | ssh name.zielrechner.local "cat > /datengrab/home_$(date +%F).tgz"


  • Sollte mal z.B. der Displaymanager nicht mehr richtig funktionieren oder sonst der (grafische) Login nicht funktionieren, kann man dem Kernel auch die Anweisung erteilen, eine andere Shell zu starten. Dazu muss man dann z.B. beim Booten den GRUB durch einmaliges Drücken der <ESC>-Taste in den Textmodus wechseln und dort mit der <E>-Taste die angewählte Taste editieren. Hängt man an das Ende der Kernel- Zeile mit vmlinuz' den Parameter
    init=/bin/sh
    , bzw. wenn man die Bash verwenden möchte eben
    init=/bin/bash
    , so bootet Linux auf diese Shell (ohne Abfrage des root-Passwortes). Anschliessend kann man mit der <ENTER>-Taste wieder in die Übersicht zurück wechseln und abschliessend mit der <b>-Taste den geänderten Bootablauf booten.


  • Aufbau eines Servers für ein Heimnetz (Debian Basiert) findet Ihr hier


  • Möchtet Ihr ein per WebDAV verfügbaren Cloud Speicher wie (z.B. der bei 1&1 Verträgen enthaltene) in euer Linux System einbauen gibt es neben der Möglichkeit dieses in den meisten Dateimangern wie Dophin bei KDE dieses per (WebDAVs ist wie https die TLS/SSL gesicherte Verbindung):
    webdav://sd2dav.1und1.de/
    oder
    webdavs://sd2dav.1und1.de:443/
    Sowie einloggen via Benutzernamen (<DeinBenutzer>) und Passwort (<DeinPassword>). Alternativ kann man das auch mit dem WebDAV Dateisystem wdfs wie folgt machen:
    wdfs https://sd2dav.1und1.de:443 /mnt/1und1/ -o username=<DeinBenutzer> -o password=<DeinPassword>
    Bindet man diesen befehl in ein script ein, wird automatisch immer der Cloud-Speicher in das passende Verzeichnis gemounted und man kann zwar etwas Träge aber ohne weiter Einschränkungen darauf zugreifen als ob es Lokal wäre. (Achtung: da das Passwort im Klartext in dem Script steht, kann jeder der Zugriff auf dieses script hat sich auch auf eure Cloud zugreifen!)

Automatisierung mit UDEV Regeln

Möchte man beim Anstecken von neuer Hardware wie z.B. einen USB Datenträger, automatisch eine Aktion starten, so kann man dass ganz einfach mit einem modernen Linux durch Definition einer so genannten UDEV-Regel tun.


Grobes Vorgehen

  1. mit lsusb bekommt ihr raus, wie das Device (Device = Datenträger) heisst
  2. Herausfinden der Daten des eingestöpselten Gerätes (hier im Beispiel sdb1) auch mit:
    udevadm info -a -p $(udevadm info -q path -n /dev/sdb1)
  3. in der richtigen Sektion, nämlich da, wo auch die idVendor steht, die Daten zu idVendor und idProduct zupfen
  4. dann /etc/init.d/udev restart
  5. das UDEV-Log-Level kann man ändern über:
    control --log-priority=info
  6. Regel-file: /etc/udev/rules.d/85-my_rule.rules mit dem bevorzugten Editor öffnen (z.B. mit joe, kate, ...)
  7. Regel in der Datei eintragen
    ACTION=="add", ATTRS{idVendor}=="0480", ATTRS{idProduct}=="a208", RUN+="/usr/local/bin/my_script"
  8. Nun wird beim Erkennen des Herstellergerätes 0480 mit der Produkt-Id a208 das script /usr/local/bin/my_script gestartet (mehr zu Skripten findet Ihr im Artikel Nützliche Skripte)


Siehe auch


Datei umwandeln oder modifizieren

Unter Linux ist es manchmal einfacher Dateien auf der Shell zu bearbeiten, anstatt lange mehr oder weniger nach einem Programm mit grafischen Interface zu suchen. Dabei gibt es Zahlreiche gute kleine Hilfsprogramme (= Tools) die einige Modifikationen sehr einfach und schnell erledigen.

Natürlich müssen die Programme bei bedarf nachinstalliert werden:

  • "ghostscript": Ist normalerweise vorinstalliert und wird auch zum Drucken benötigt (= "gs")
  • "ImageMagick": enthält mit "convert" einen leistungsfähigen Datei-Umwandler


Mein Tip: Einfach mal via Suchmaschine danach suchen (z.B. "Linux PDF verkleinern" - Ergebnis siehe nachfolgend)

  • PDF Datei verkleinern (bei mir war ein Gescanntes Dokument 61MB groß - nach dem Befehl waren es unter 1MB)
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=Kleine_ZielDatei.pdf Große_QuellDatei.pdf
  • Mehre Dateien, mit ImageMagick unterstützten Dateiformat zusammenfügen in eine Datei zu einem Mehrseitigen PDF
convert QuellDatei1.jpg QuellDatei2.png QuellDatei3.gif QuellDatei4.pdf ZielDatei.pdf
  • Mehre PDF Dokumente zu einen zusammen fügen (erfordert das PDF-Toolkit Paket pdftk (en)):
pdftk datei1.pdf datei2.pdf datei3.pdf cat output datei123.pdf
pdftk A=datei2.pdf B=datei2.pdf cat A1-7 B5-end A9 output dateiA1-7_B5-end_A9.pdf


Regferenzen/Anleitungen:

  1. pdftk Beschreibung im UbuntuUsers-Wiki (de)


GRUB2-Komandozeile

Ab und zu kommt es vor, das man z.B. einen USB Stick von GRUB2 starten möchte. Meist wird dieser aber nicht in der mittlerweile üblichen Menüliste aufgeführt und man möchte auch nicht zwingend die GRUB2-Konfiguration für eine einmalige Benutzung anpassen. Einfach geht das mit der GRUB2-Kommandozeile, die beim erscheinen des Bootmenüs mit "c" wie englisch "Comandline" gestartet wird.

Gute Hilfen finden sich hier:


Starten eines Linux

"X" muss mit der Laufwerks-Nummer ersetzt werden und "Y" muss mit der Partitions-Nummer ersetzt werden. Als trick, kann man meist mit <TAB> den Befehl bis zur nächsten nicht mehr eindeutigen stelle ausfüllen lassen und mit 2 mal <TAB> kann man alle möglichen Namen auflisten lassen, wie das auf der Linux Kommandozeile auch meist der Fall ist.

Start-Datenträger festlegen:

set root=(hdX,Y) 

Falls der Home-Ordner auf eine eigene Partition ausgelagert ist muss dieses eingebunden werden:

set home=(hdX,Y) 

Wie gesagt "hdX,Y" muss dem eigenen System entsprechend ersetzt werden.

Pfad zu den Startdateien angeben:

linux /vmlinuz root=/dev/sdAZ ro 

Dabei muss "sdAZ" natürlich auch auf das eigene System angepasst werden (z.B. "/dev/sda2"). "ro" = read only. Bei einigen Systemen muss noch das Verzeichnis "/boot" angeben werden also:

linux /boot/vmlinuz root=/dev/sdAZ ro 

Anmerkung: Ist die vmlinuz nicht auffindbar, meldet dieses grub2 mit einer entsprechenden Meldung.


Pfad zur Ramdisk:

initrd /initrd

Wobei je nach system auch

initrd /initrd.img

Richtig sein kann. "initrd(.img)" ist immer ein Link auf den aktuellsten Kernel. Mit <TAB> oder 2 mal <TAB> kann man alle vorhandenen Kernel anzeigen lassen und z.B. auch einen älteren Kernel starten:

initrd /initrd-5.4.7-1-default

Aber mittlerweile kann auch erforderlich sein, dass Verzeichnis "/boot" noch hinzu gefügt werden muss:

initrd /boot/initrd

Anmerkung: Ist die initrd nicht auffindbar, meldet dieses grub2 mit einer entsprechenden Meldung.


System starten:

boot 


Starten des c't-Notfall-Windows

Siehe auch Artikel c't-Notfall-Windows 2020 auf Heise.

"X" muss mit der Laufwerks-Nummer ersetzt werden und "Y" muss mit der Partitions-Nummer ersetzt werden:

set root=(hdX,msdosY)
ntldr /bootmgr
boot

Abwer wie findet man "X" und "Y" am besten raus? Ganz einfach, wie in jeden gut konfigurierten Linux wird mit der Tabulatortaste "<TAB>" (einmal Vervollständigung bis mehrere Möglichkeiten und zwei mal betätigt Vorschlag möglicher Bezeichnungen) angezeigt. Alternativ zeigt ls die vorhanden Platten an (hd0 bis .. hdX und ein paar spezielle Laufwerke).

set root=<TAB>(<TAB>)

führt zu einem gültigen Eintrag wenn man das nächste Zeichen und erneut <TAB> oder doppelt <TAB> eingibt z.B. zu:

set root=(hd1,msdos1)

Nach Auswahl des Laufwerks und der Partition des "root" (also dort wo hingewechselt werden soll), muss noch das Programm welches den Bootvorgang ausführen soll ausgewählt werden. Bei MS Windows 10 meist:

ntldr /<TAB>(<TAB>)

welches in der Regel zu:

ntldr /bootmgr 

da dass Programm /bootmgr.exe verwendet werden soll. Zum Schluss startet man wieder mit

boot

den Bootprozess in diesen Beispiel also hd1,msdos1/bootmgr.


Alternativ kann man auch nach den ersten Bootbaren Windows (Vista, 7, ... 10) suchen:

search -s root -f /Boot/BCD 

Erfolgt keine Fehlermeldung kann man mit

ntldr /bootmgr 
boot

Falls der erste "search" nicht zum Erfolg geführt hat, kann man auch (Windows XP/2003)

search -s root -f /NTDETECT.COM drivemap -s hd0 $root 

Wenn keine Fehlermeldung erscheint kann man dann mit

ntldr /ntldr 
boot

das System starten bzw. Booten.


Scripte

Die oben genannten Befehle, kann man auch in einer Datei zusammenfassen und nach dem Setzen des "Execute"-Attributs als so genanntes Script ausführen. Hier finden sich einige Nützliche Skripte.


Weiterführende Links



Zurück zur Linux Hilfeseite