Linux Professional Institute Learning Logo.
Weiter zum Inhalt
  • Home
    • Alle Ressourcen
    • LPI Lernmaterialien
    • Mitmachen
    • Publishing Partner
    • Publishing Partner werden
    • Über uns
    • FAQ
    • Mitwirkende
    • Roadmap
    • Kontakt
  • LPI.org
104.7 Lektion 1
Thema 101: Systemarchitektur
101.1 Hardwareeinstellungen ermitteln und konfigurieren
  • 101.1 Lektion 1
101.2 Das System starten
  • 101.2 Lektion 1
101.3 Runlevel wechseln und das System anhalten oder neu starten
  • 101.3 Lektion 1
Thema 102: Linux-Installation und -Paketverwaltung
102.1 Festplattenaufteilung planen
  • 102.1 Lektion 1
102.2 Einen Bootmanager installieren
  • 102.2 Lektion 1
102.3 Shared Libraries verwalten
  • 102.3 Lektion 1
102.4 Debian-Paketverwaltung verwenden
  • 102.4 Lektion 1
102.5 RPM und YUM-Paketverwaltung verwenden
  • 102.5 Lektion 1
102.6 Linux als Virtualisierungs-Gast
  • 102.6 Lektion 1
Thema 103: GNU- und Unix-Befehle
103.1 Auf der Befehlszeile arbeiten
  • 103.1 Lektion 1
  • 103.1 Lektion 2
103.2 Textströme mit Filtern verarbeiten
  • 103.2 Lektion 1
103.3 Grundlegende Dateiverwaltung
  • 103.3 Lektion 1
  • 103.3 Lektion 2
103.4 Ströme, Pipes und Umleitungen verwenden
  • 103.4 Lektion 1
  • 103.4 Lektion 2
103.5 Prozesse erzeugen, überwachen und beenden
  • 103.5 Lektion 1
  • 103.5 Lektion 2
103.6 Prozess-Ausführungsprioritäten ändern
  • 103.6 Lektion 1
103.7 Textdateien mit regulären Ausdrücken durchsuchen
  • 103.7 Lektion 1
  • 103.7 Lektion 2
103.8 Grundlegendes Editieren von Dateien
  • 103.8 Lektion 1
Thema 104: Geräte, Linux-Dateisysteme, Filesystem Hierarchy Standard
104.1 Partitionen und Dateisysteme anlegen
  • 104.1 Lektion 1
104.2 Die Integrität von Dateisystemen sichern
  • 104.2 Lektion 1
104.3 Das Mounten und Unmounten von Dateisystemen steuern
  • 104.3 Lektion 1
104.5 Dateizugriffsrechte und -eigentümerschaft verwalten
  • 104.5 Lektion 1
104.6 Symbolische und Hardlinks anlegen und ändern
  • 104.6 Lektion 1
104.7 Systemdateien finden und Dateien am richtigen Ort plazieren
  • 104.7 Lektion 1
How to get certified
  1. Thema 104: Geräte, Linux-Dateisysteme, Filesystem Hierarchy Standard
  2. 104.7 Systemdateien finden und Dateien am richtigen Ort plazieren
  3. 104.7 Lektion 1

104.7 Lektion 1

Zertifikat:

LPIC-1

Version:

5.0

Thema:

104 Geräte, Linux-Dateisysteme, Filesystem Hierarchy Standard

Lernziel:

104.7 Systemdateien finden und Dateien am richtigen Ort plazieren

Lektion:

1 von 1

Einleitung

Linux-Distributionen gibt es in allen Formen und Größen, aber eines haben fast alle gemeinsam: Sie folgen dem Filesystem Hierarchy Standard (FHS), der ein “Standardlayout” für das Dateisystem definiert, was die Zusammenarbeit und die Systemadministration wesentlich erleichtert. In dieser Lektion erfahren Sie mehr über diesen Standard und wie Sie Dateien auf einem Linux-System finden können.

Der Filesystem Hierarchy Standard

Der Filesystem Hierarchy Standard (FHS) ist ein Versuch der Linux Foundation, die Verzeichnisstruktur und den Verzeichnisinhalt auf Linux-Systemen zu standardisieren. Die Einhaltung des Standards ist nicht zwingend, aber die meisten Distributionen folgen ihm.

Note

Wer sich für die Details der Dateisystemorganisation interessiert, kann die FHS 3.0-Spezifikation lesen, die in mehreren Formaten verfügbar ist unter: http://refspecs.linuxfoundation.org/fhs.shtml

Gemäß dem Standard stellt sich die grundlegende Verzeichnisstruktur wie folgt dar:

/

Dies ist das Stammverzeichnis (auch Wurzelverzeichnis genannt) und stellt das oberste Verzeichnis in der Hierarchie dar. Jedes andere Verzeichnis befindet sich darin. Ein Dateisystem wird oft mit einem “Baum” verglichen, so dass dies der “Stamm” wäre, mit dem alle Zweige verbunden sind.

/bin

Wesentliche Binärdateien, verfügbar für alle Benutzer.

/boot

Dateien, die für den Bootprozess benötigt werden, einschließlich der Initial RAM Disk (initrd) und des Linux-Kernels selbst.

/dev

Gerätedateien. Dies können entweder physikalische Geräte sein, die mit dem System verbunden sind (z. B. wäre /dev/sda die erste SCSI- oder SATA-Platte) oder virtuelle Geräte, die vom Kernel bereitgestellt werden.

/etc

Hostspezifische Konfigurationsdateien. Programme können Unterverzeichnisse in /etc anlegen, um bei Bedarf mehrere Konfigurationsdateien zu speichern.

/home

Jeder Benutzer im System verfügt über ein “home”-Verzeichnis, um persönliche Dateien und Einstellungen zu speichern, und die meisten von ihnen befinden sich unter /home. Typischerweise trägt das Homeverzeichnis den gleichen Namen wie der Benutzer, so würde der Benutzer John sein Homeverzeichnis unter /home/john vorfinden. Die Ausnahmen davon ist der Superuser (root), der ein eigenes Verzeichnis (/root) hat, sowie einige Systembenutzer.

/lib

Gemeinsame Bibliotheken, die zum Booten des Betriebssystems und zur Ausführung der Binärdateien unter /bin und /sbin benötigt werden.

/media

Vom Benutzer einhängbare Wechselmedien, wie Flash-Laufwerke, CD- und DVD-ROM-Laufwerke, Disketten, Speicherkarten und externe Festplatten werden hier eingehängt.

/mnt

Einhängepunkt für temporär eingehängte Dateisysteme.

/opt

Anwendungssoftwarepakete.

/root

Homeverzeichnis für den Superuser (root).

/run

Daten von Laufzeitvariablen.

/sbin

Systembinärdateien.

/srv

Daten, die vom System gehostet werden. Zum Beispiel könnten die von einem Webserver gehosteten Seiten unter /srv/www gespeichert werden.

/tmp

Temporäre Dateien.

/usr

Schreibgeschützte Benutzerdaten, einschließlich Daten, die von einigen sekundären Dienstprogrammen und Anwendungen benötigt werden.

/proc

Virtuelles Dateisystem, das Daten zu den laufenden Prozessen enthält.

/var

Variable Daten, die während des Systembetriebs geschrieben werden, einschließlich Druckwarteschlange, Protokolldaten, Mailboxen, temporäre Dateien, Browsercache, usw.

Denken Sie daran, dass einige dieser Verzeichnisse, wie /etc, /usr und /var, eine ganze Hierarchie von Unterverzeichnissen enthalten.

Temporäre Dateien

Temporäre Dateien sind Dateien, die von Programmen zum Speichern von Daten verwendet werden, die nur für kurze Zeit benötigt werden. Dies können Daten laufender Prozesse, Absturzprotokolle, Arbeitsdateien aus einem automatischem Speichervorgang, Zwischendateien, die bei einer Dateikonvertierung verwendet werden, Cache-Dateien und dergleichen sein.

Speicherort temporärer Dateien

Version 3.0 des Filesystem Hierarchy Standard (FHS) definiert Standardspeicherorte für temporäre Dateien auf Linux-Systemen. Jeder Speicherort hat einen anderen Zweck und ein anderes Verhalten, und es wird empfohlen, dass Entwickler beim Schreiben temporärer Daten auf die Festplatte den vom FHS festgelegten Konventionen folgen.

/tmp

Gemäß des FHS sollten Programme nicht davon ausgehen, dass hier geschriebene Dateien zwischen den Aufrufen eines Programms erhalten bleiben. Es wird empfohlen, dieses Verzeichnis beim Hochfahren des Systems zu leeren (alle Dateien zu löschen), obwohl dies nicht zwingend erforderlich ist.

/var/tmp

Ein weiterer Speicherort für temporäre Dateien, der jedoch während des Systemstarts nicht gelöscht werden sollte. Die hier gespeicherten Dateien bleiben normalerweise zwischen Neustarts erhalten.

/run

Dieses Verzeichnis enthält Laufzeitvariablendaten, die von laufenden Prozessen verwendet werden, wie z. B. Prozessidentifikationsdateien (.pid). Programme, die mehr als eine Laufzeitdatei benötigen, können hier Unterverzeichnisse anlegen. Dieses Verzeichnis muss beim Systemstart geleert werden. Der Zweck dieses Verzeichnisses wurde früher von /var/run erfüllt, und auf einigen Systemen kann /var/run ein symbolischer Link zu /run sein.

Beachten Sie, dass es nichts gibt, was ein Programm daran hindert, temporäre Dateien an anderer Stelle auf dem System anzulegen, aber es ist ein bewährtes Verfahren, die vom FHS festgelegten Konventionen zu respektieren. === Dateien finden

Um auf einem Linux-System nach Dateien zu suchen, können Sie den Befehl find verwenden. Dies ist ein sehr leistungsfähiges Werkzeug mit vielen Parametern, mit denen Sie dessen Verhalten anpassen und die Ausgabe genau nach Ihren Bedürfnissen einstellen können.

Um zu beginnen, benötigt find zwei Argumente: einen Startpunkt und wonach gesucht werden soll. Um zum Beispiel nach allen Dateien im aktuellen Verzeichnis (und Unterverzeichnissen) zu suchen, deren Name auf .jpg endet, können Sie wie folgt vorgehen:

$ find . -name '*.jpg'
./pixel_3a_seethrough_1.jpg
./Mate3.jpg
./Expert.jpg
./Pentaro.jpg
./Mate1.jpg
./Mate2.jpg
./Sala.jpg
./Hotbit.jpg

Dies wird mit jeder Datei übereinstimmen, deren letzte vier Zeichen des Namens .jpg sind, egal was davor kommt, da * ein Platzhalter für “irgendwas” ist. Schauen Sie jedoch, was passiert, wenn ein weiteres * am Ende des Suchmusters hinzugefügt wird:

$ find . -name '*.jpg*'
./pixel_3a_seethrough_1.jpg
./Pentaro.jpg.zip
./Mate3.jpg
./Expert.jpg
./Pentaro.jpg
./Mate1.jpg
./Mate2.jpg
./Sala.jpg
./Hotbit.jpg

Die Datei Pentaro.jpg.zip (oben hervorgehoben) war in der vorherigen Auflistung nicht enthalten, da sie zwar .jpg im Namen enthält, aber nicht mit dem Muster übereinstimmte, da am Ende noch zusätzliche Zeichen standen. Das neue Muster bedeutet “irgendwas .jpg irgendwas”, daher die Übereinstimmung.

Tip

Beachten Sie, dass der Parameter -name zwischen Groß- und Kleinschreibung unterscheidet. Wenn Sie eine Suche ohne Unterscheidung von Groß- und Kleinschreibung durchführen möchten, verwenden Sie -iname.

Der Ausdruck *.jpg muss in einfache Anführungszeichen gesetzt werden, damit die Shell das Muster nicht selbst interpretiert. Versuchen Sie es ohne die Anführungszeichen und sehen Sie, was passiert.

Standardmäßig beginnt find am Startpunkt und steigt durch alle gefundenen Unterverzeichnisse (und deren Unterverzeichnisse) ab. Sie können dieses Verhalten mit den Parametern -maxdepth N einschränken, wobei N die maximale Anzahl der Ebenen darstellt.

Um nur das aktuelle Verzeichnis zu durchsuchen, wird -maxdepth 1 verwendet. Angenommen, es liegt folgende Verzeichnisstruktur vor:

directory
├── clients.txt
├── partners.txt -> clients.txt
└── somedir
    ├── anotherdir
    └── clients.txt

Um innerhalb von somedir zu suchen, müssten Sie -maxdepth 2 verwenden (das aktuelle Verzeichnis +1 Ebene tiefer). Um innerhalb von anotherdir zu suchen, wäre -maxdepth 3 erforderlich (das aktuelle Verzeichnis +2 Ebenen tiefer). Der Parameter -mindepth N arbeitet in umgekehrter Weise und sucht nur in Verzeichnissen, die mindestens N Ebenen tiefer liegen.

Der Parameter -mount kann verwendet werden, um zu verhindern, dass find in eingehängten Dateisystemen landet. Sie können die Suche auch auf bestimmte Dateisystemtypen beschränken, indem Sie den Parameter -fstype verwenden. So würde find /mnt -fstype exfat -iname "*report*" nur in exFAT-Dateisystemen suchen, die unter /mnt eingehängt sind.

Suche nach Attributen

Sie können die unten aufgeführten Parameter verwenden, um nach Dateien mit bestimmten Attributen zu suchen, z. B. nach solchen, die von Ihrem Benutzer beschreibbar sind, einen bestimmten Satz von Berechtigungen haben oder eine bestimmte Größe aufweisen:

-user USERNAME

Passt auf Dateien, die dem Benutzer USERNAME gehören.

-group GROUPNAME

Passt auf Dateien, die der Gruppe GROUPNAME gehören.

-readable

Passt auf Dateien, die für den aktuellen Benutzer lesbar sind.

-writable

Passt auf Dateien, die vom aktuellen Benutzer beschreibbar sind.

-executable

Passt auf Dateien, die für den aktuellen Benutzer ausführbar sind. Im Falle von Verzeichnissen passt dies auf jedes Verzeichnis, die der Benutzer betreten kann (x-Berechtigung).

-perm NNNN

Passt auf alle Dateien, die genau die Berechtigung NNNN innehaben. Zum Beispiel passt -perm 0664 auf alle Dateien, die der Benutzer und die Gruppe lesen und schreiben können und der Rest der Welt lesen können (oder rw-rw-r--).

Sie können ein - vor NNNN hinzufügen, um nach Dateien zu suchen, die mindestens die angegebene Berechtigung haben. Zum Beispiel würde -perm -644 auf Dateien passen, die mindestens die Berechtigung 644 (rw-r—​r--) erfüllen. Dies schließt eine Datei mit 664 (rw-rw-r--) oder sogar 775 (rwxrwx-r-x) mit ein.

-empty

Passt auf leere Dateien und Verzeichnisse.

-size N

Passt auf alle Dateien der Größe N, wobei N standardmäßig die Anzahl von 512-Byte-Blöcken ist. Sie können Suffixe an N für andere Einheiten hinzufügen: Nc zählt die Größe in Bytes, Nk in Kibibytes (KiB, Vielfache von 1024 Bytes), NM in Mebibytes (MiB, Vielfache von 1024 * 1024) und NG für Gibibytes (GiB, Vielfache von 1024 * 1024 * 1024).

Auch hier können Sie die Präfixe + oder - hinzufügen (was für größer als und kleiner als steht), um nach relativen Größen zu suchen. Zum Beispiel findet -size -10M jede Datei mit einer Größe von weniger als 10 MiB.

Um z. B. nach Dateien in Ihrem Homeverzeichnis zu suchen, die das von Groß- und Kleinschreibung unabhängige Muster report in einem beliebigen Teil des Namens enthalten, die die Berechtigung 0644 besitzen, auf die vor 10 Tagen zugegriffen wurde und deren Größe mindestens 1 Mib beträgt, können Sie Folgendes verwenden:

$ find ~ -iname "*report*" -perm 0644 -atime 10 -size +1M

Suche per Zeit

Neben der Suche nach Attributen können Sie auch eine Suche per Zeit durchführen, um Dateien zu finden, auf die innerhalb eines bestimmten Zeitraums zugegriffen wurde, deren Attribute geändert wurden oder die modifiziert wurden. Die Parameter dazu lauten:

-amin N, -cmin N, -mmin N

Passt auf Dateien, auf die vor N Minuten zugegriffen wurde, deren Attribute geändert wurden bzw. die vor N Minuten geändert wurden.

-atime N, -ctime N, -mtime N

Passt auf Dateien, auf die zugegriffen wurde, deren Attribute geändert wurden oder die vor N*24 Stunden geändert wurden.

Bei -cmin N und -ctime N führt jede Attributänderung zu einem Treffer, einschließlich einer Änderung der Berechtigungen, Lesen oder Schreiben in der Datei. Das macht diese Parameter besonders mächtig, da praktisch jede Operation, die die Datei betrifft, einen Treffer auslöst.

Das folgende Beispiel würde auf jede Datei im aktuellen Verzeichnis passen, die vor weniger als 24 Stunden geändert wurde und größer als 100 MiB ist:

$ find . -mtime -1 -size +100M

Verwendung von locate und updatedb

locate und updatedb sind Befehle, die verwendet werden können, um schnell eine Datei zu finden, die einem bestimmten Muster auf einem Linux-System entspricht. Aber im Gegensatz zu find durchsucht locate nicht das Dateisystem nach dem Muster: Stattdessen sucht es in einer Datenbank, die durch den Befehl updatedb erstellt wurde. Dadurch erhalten Sie sehr schnell Ergebnisse, diese können aber ungenau sein, je nachdem, wann die Datenbank zuletzt aktualisiert wurde.

Die einfachste Art, locate zu verwenden, ist, einfach ein Muster zu übergeben, nach dem gesucht werden soll. Um zum Beispiel jedes JPEG-Bild auf Ihrem System zu finden, würden Sie locate jpg verwenden. Die Liste der Ergebnisse kann ziemlich lang sein, könnte sich aber wie folgt darstellen:

$ locate jpg
/home/carol/Downloads/Expert.jpg
/home/carol/Downloads/Hotbit.jpg
/home/carol/Downloads/Mate1.jpg
/home/carol/Downloads/Mate2.jpg
/home/carol/Downloads/Mate3.jpg
/home/carol/Downloads/Pentaro.jpg
/home/carol/Downloads/Sala.jpg
/home/carol/Downloads/pixel_3a_seethrough_1.jpg
/home/carol/Downloads/jpg_specs.doc

Wenn nach dem Muster jpg gefragt wird, zeigt locate alles an, was diesem Muster entspricht, egal, was davor oder danach kommt. Sie können ein Beispiel dafür in der Datei jpg_specs.doc in der Auflistung oben sehen: Sie enthält das Muster, aber die Dateiendung muss nicht zwingend jpg lauten.

Tip

Denken Sie daran, dass Sie mit locate Muster abgleichen, nicht Dateiendungen.

Standardmäßig wird bei Mustern zwischen Groß- und Kleinschreibung unterschieden. Das bedeutet, dass Dateien, die .JPG enthalten, nicht angezeigt werden, da das Muster in Kleinbuchstaben übergeben wurde. Um dies zu vermeiden, übergeben Sie den Parameter -i an locate. Wir wiederholen das vorheriges Beispiel:

$ locate -i .jpg
/home/carol/Downloads/Expert.jpg
/home/carol/Downloads/Hotbit.jpg
/home/carol/Downloads/Mate1.jpg
/home/carol/Downloads/Mate1_old.JPG
/home/carol/Downloads/Mate2.jpg
/home/carol/Downloads/Mate3.jpg
/home/carol/Downloads/Pentaro.jpg
/home/carol/Downloads/Sala.jpg
/home/carol/Downloads/pixel_3a_seethrough_1.jpg

Beachten Sie, dass die Datei Mate1_old.JPG, oben fett gedruckt, in der vorherigen Auflistung nicht vorhanden war.

Sie können mehrere Muster an locate übergeben, trennen Sie diese einfach mit Leerzeichen. Das folgende Beispiel würde eine unabhängige Suche betreffend der Groß-/Kleinschreibung nach allen Dateien durchführen, die den Mustern zip und jpg entsprechen:

$ locate -i zip jpg
/home/carol/Downloads/Expert.jpg
/home/carol/Downloads/Hotbit.jpg
/home/carol/Downloads/Mate1.jpg
/home/carol/Downloads/Mate1_old.JPG
/home/carol/Downloads/Mate2.jpg
/home/carol/Downloads/Mate3.jpg
/home/carol/Downloads/OPENMSXPIHAT.zip
/home/carol/Downloads/Pentaro.jpg
/home/carol/Downloads/Sala.jpg
/home/carol/Downloads/gbs-control-master.zip
/home/carol/Downloads/lineage-16.0-20190711-MOD-quark.zip
/home/carol/Downloads/pixel_3a_seethrough_1.jpg
/home/carol/Downloads/jpg_specs.doc

Wenn Sie mehrere Muster verwenden, können Sie locate auffordern, nur Dateien anzuzeigen, die mit allen übergebenen Mustern übereinstimmen. Dies wird mit der Option -A erreicht. Das folgende Beispiel würde alle Dateien anzeigen, die mit den Mustern .jpg und .zip übereinstimmen:

$ locate -A .jpg .zip
/home/carol/Downloads/Pentaro.jpg.zip

Wenn Sie die Anzahl der Dateien zählen möchten, die mit einem bestimmten Muster übereinstimmen, anstatt deren vollständigen Pfad anzuzeigen, können Sie die Option -c verwenden. Zum Beispiel, um die Anzahl der .jpg-Dateien auf einem System zu zählen:

$ locate -c .jpg
1174

Ein Problem mit locate ist, dass es nur Einträge anzeigt, die in der von updatedb erzeugten Datenbank vorhanden sind (zu finden in /var/lib/mlocate.db). Wenn die Datenbank veraltet ist, könnte die Ausgabe Dateien anzeigen, die seit der letzten Aktualisierung gelöscht worden sind. Eine Möglichkeit, dies zu vermeiden, besteht darin, den Parameter -e hinzuzufügen, mit dem geprüft wird, ob die Datei noch existiert, bevor diese in der Ausgabe erscheint.

Dies löst natürlich nicht das Problem, dass Dateien, die nach der letzten Datenbankaktualisierung erstellt wurden, nicht angezeigt werden. Hierfür müssen Sie die Datenbank mit dem Befehl updatedb aktualisieren. Wie lange dies dauert, hängt von der Menge der Dateien auf Ihrer Festplatte ab.

Steuerung des Verhaltens von updatedb

Das Verhalten von updatedb kann über die Datei /etc/updatedb.conf gesteuert werden. Dies ist eine Textdatei, in der jede Zeile eine Variable steuert. Leerzeichen werden ignoriert und Zeilen, die mit dem Zeichen # beginnen, werden als Kommentare behandelt.

PRUNEFS=

Alle Dateisystemtypen, die nach diesem Parameter angegeben werden, werden von updatedb nicht gescannt. Die Liste der Typen sollte durch Leerzeichen getrennt werden, und die Typen selbst unterscheiden nicht zwischen Groß- und Kleinschreibung, sodass NFS und nfs dasselbe sind.

PRUNENAMES=

Dies ist eine durch Leerzeichen getrennte Liste von Verzeichnisnamen, die nicht von updatedb gescannt werden sollen.

PRUNEPATHS=

Dies ist eine Liste von Pfadnamen, die von updatedb ignoriert werden sollen. Die Pfadnamen müssen durch Leerzeichen getrennt sein und so angegeben werden, wie diese von updatedb angezeigt werden würden (z. B. /var/spool /media)

PRUNE_BIND_MOUNTS=

Dies ist eine einfache yes oder no Variable. Auf den Wert yes gesetzt, werden Bind-Mounts (Verzeichnisse, die anderswo mit dem Befehl mount --bind eingehängt wurden) ignoriert.

Suche nach Binärdateien, Handbuchseiten und Quellcode

which ist ein sehr nützlicher Befehl, der den vollständigen Pfad zu einer ausführbaren Datei anzeigt. Wenn Sie z. B. die ausführbare Datei für bash finden möchten, können Sie den Befehl verwenden:

$ which bash
/usr/bin/bash

Wenn die Option -a hinzugefügt wird, zeigt der Befehl alle Pfadnamen an, die mit der ausführbaren Datei übereinstimmen. Beachten Sie den Unterschied:

$ which mkfs.ext3
/usr/sbin/mkfs.ext3

$ which -a mkfs.ext3
/usr/sbin/mkfs.ext3
/sbin/mkfs.ext3
Tip

Um herauszufinden, welche Verzeichnisse sich im PATH befinden, verwenden Sie den Befehl echo $PATH. Dadurch wird der Inhalt der Variable PATH ($PATH) auf dem Terminal ausgegeben (echo).

type ist ein ähnlicher Befehl, der Informationen über ein Binärprogramm anzeigt, u. a. auch wo es sich befindet und welchen Typ es hat. Verwenden Sie einfach type gefolgt vom Befehlsnamen:

$ type locate
locate is /usr/bin/locate

Der Parameter -a funktioniert auf die gleiche Weise wie bei which und zeigt alle Pfadnamen an, die mit der ausführbaren Datei übereinstimmen. Zum Beispiel so:

$ type -a locate
locate is /usr/bin/locate
locate is /bin/locate

Und der Parameter -t zeigt den Dateityp des Befehls an, der alias, keyword, function, builtin oder file sein kann. Zum Beispiel:

$ type -t locate
file

$ type -t ll
alias

$ type -t type
type is a built-in shell command

Der Befehl whereis ist vielseitiger und kann neben Binärdateien auch dazu verwendet werden, den Ort von Manpages oder sogar Quellcode für ein Programm anzuzeigen (falls in Ihrem System vorhanden). Geben Sie einfach whereis gefolgt vom Binärnamen ein:

$ whereis locate
locate: /usr/bin/locate /usr/share/man/man1/locate.1.gz

Die obigen Ergebnisse enthalten Binärdateien (/usr/bin/locate) und komprimierte Handbucheinträge (/usr/share/man/man1/locate.1.gz).

Sie können die Ergebnisse schnell filtern, indem Sie Kommandozeilenschalter wie -b verwenden, was die Suche auf Binärdateien beschränkt, -m, zur Beschränkung auf Handbuchseiten, oder -s, um nur Quellcode herauszufiltern. Wenn Sie das obige Beispiel wiederholen, erhalten Sie:

$ whereis -b locate
locate: /usr/bin/locate

$ whereis -m locate
locate: /usr/share/man/man1/locate.1.gz

Geführte Übungen

  1. Stellen Sie sich vor, ein Programm muss eine temporäre Datei zur einmaligen Verwendung erstellen, die nach dem Beenden des Programms nie wieder benötigt wird. Welches wäre das richtige Verzeichnis, um diese Datei abzulegen?

  2. Welches ist das temporäre Verzeichnis, das während des Bootvorgangs geleert werden muss?

  3. Suchen Sie mit find ausschließlich im aktuellen Verzeichnis nach Dateien, die vom Benutzer beschreibbar sind, in den letzten 10 Tagen geändert wurden und größer als 4 GiB sind.

  4. Suchen Sie mit locate alle Dateien, die in ihrem Namen die Muster report und entweder updated, update oder updating enthalten.

  5. Wie können Sie herausfinden, wo die Manpage für ifconfig gespeichert ist?

  6. Welche Variable muss zu /etc/updatedb.conf hinzugefügt werden, damit updatedb ntfs-Dateisysteme ignoriert?

  7. Ein Systemadministrator möchte eine interne Festplatte (/dev/sdc1) einhängen. Unter welchem Verzeichnis soll diese Platte laut FHS gemountet werden?

Offene Übungen

  1. Wenn locate verwendet wird, werden die Ergebnisse aus einer von updatedb erzeugten Datenbank bezogen. Diese Datenbank kann jedoch veraltet sein, wodurch locate Dateien anzeigt, die nicht mehr existieren. Wie kann man locate dazu bringen, nur existierende Dateien in seiner Ausgabe abzuzeigen?

  2. Finden Sie alle Dateien im aktuellen Verzeichnis oder deren Unterverzeichnissen bis zur 2 Ebenen tiefer, mit Ausnahme von eingehängten Dateisystemen, die das Muster Status oder statute in ihrem Namen enthalten.

  3. Beschränkt auf die Suche von ext4-Dateisystemen, finden Sie alle Dateien unter /mnt, die mindestens Ausführungsrechte für die Gruppe haben, für den aktuellen Benutzer lesbar sind und bei denen in den letzten 2 Stunden ein beliebiges Attribut geändert wurde.

  4. Suchen Sie leere Dateien, die vor mehr als 30 Tagen erstellt wurden und sich mindestens zwei Ebenen unterhalb des aktuellen Verzeichnisses befinden!

  5. Nehmen wir an, dass die Benutzer carol und john Teil der Gruppe mkt sind. Suchen Sie im Homeverzeichnis von john alle Dateien, die auch von carol gelesen werden können.

Zusammenfassung

In dieser Lektion haben wir die grundlegende Organisation des Dateisystems auf einem Linux-Rechner gemäß dem FHS kennengelernt und erfahren, wie Binärdateien und Dateien entweder über den Namen oder über Attribute gefunden werden können. Die folgenden Befehle wurden in dieser Lektion besprochen:

find

Ein vielseitiger Befehl zum Suchen von Dateien und Ordnern anhand einer Vielzahl von Suchkriterien.

locate

Ein Dienstprogramm, das eine lokale Datenbank verwendet, welche die Speicherorte für lokal gespeicherte Dateien enthält.

updatedb

Aktualisiert die lokale Datenbank, die vom Befehl locate verwendet wird.

which

Zeigt den vollständigen Pfad zu einer ausführbaren Datei an.

whereis

Zeigt die Speicherorte von Handbuchseiten, Binärdateien und Quellcode auf dem System an.

type

Zeigt den Speicherort einer Binärdatei und den Typ der Anwendung an, um die es sich handelt (z. B. ein installiertes Programm, ein in die Bash integriertes Programm und mehr).

Lösungen zu den geführten Übungen

  1. Stellen Sie sich vor, ein Programm muss eine temporäre Datei zur einmaligen Verwendung erstellen, die nach dem Beenden des Programms nie wieder benötigt wird. Welches wäre das richtige Verzeichnis, um diese Datei abzulegen?

    Da wir uns nicht um die Datei kümmern, nachdem das Programm beendet ist, ist das richtige Verzeichnis /tmp.

  2. Welches ist das temporäre Verzeichnis, das während des Bootvorgangs geleert werden muss?

    Das Verzeichnis ist /run oder, auf manchen Systemen, /var/run.

  3. Suchen Sie mit find ausschließlich im aktuellen Verzeichnis nach Dateien, die vom Benutzer beschreibbar sind, in den letzten 10 Tagen geändert wurden und größer als 4 GiB sind.

    Hierfür benötigen Sie die Parameter -writable, -mtime und -size:

    find . -writable -mtime -10 -size +4G
  4. Suchen Sie mit locate alle Dateien, die in ihrem Namen die Muster report und entweder updated, update oder updating enthalten.

    Da locate auf alle Muster passen muss, verwenden Sie die Option -A:

    locate -A "report" "updat"
  5. Wie können Sie herausfinden, wo die Manpage für ifconfig gespeichert ist?

    Verwenden Sie den Parameter -m für whereis:

    whereis -m ifconfig
  6. Welche Variable muss zu /etc/updatedb.conf hinzugefügt werden, damit updatedb ntfs-Dateisysteme ignoriert?

    Die Variable ist PRUNEFS=, gefolgt vom Dateisystemtyp: PRUNEFS=ntfs

  7. Ein Systemadministrator möchte eine interne Festplatte (/dev/sdc1) einhängen. Unter welchem Verzeichnis soll diese Platte laut FHS gemountet werden?

    In der Praxis kann die Festplatte überall eingehängt werden. Der FHS empfiehlt jedoch, dass temporäre Einhängungen unter /mnt erfolgen.

Lösungen zu den offenen Übungen

  1. Wenn locate verwendet wird, werden die Ergebnisse aus einer von updatedb erzeugten Datenbank bezogen. Diese Datenbank kann jedoch veraltet sein, wodurch locate Dateien anzeigt, die nicht mehr existieren. Wie kann man locate dazu bringen, nur existierende Dateien in seiner Ausgabe abzuzeigen?

    Fügen Sie den Parameter -e zu locate hinzu, wie in locate -e PATTERN.

  2. Finden Sie alle Dateien im aktuellen Verzeichnis oder deren Unterverzeichnissen bis zur 2 Ebenen tiefer, mit Ausnahme von eingehängten Dateisystemen, die das Muster Status oder statute in ihrem Namen enthalten.

    Denken Sie daran, dass Sie für -maxdepth auch das aktuelle Verzeichnis berücksichtigen müssen, wir wollen also drei Ebenen (das Aktuelle plus 2 Ebenen tiefer):

    find . -maxdepth 3  -mount -iname "*statu*"
  3. Beschränkt auf die Suche von ext4-Dateisystemen, finden Sie alle Dateien unter /mnt, die mindestens Ausführungsrechte für die Gruppe haben, für den aktuellen Benutzer lesbar sind und bei denen in den letzten 2 Stunden ein beliebiges Attribut geändert wurde.

    Verwenden Sie den Parameter -fstype wie beim Befehl mount, um die Suche auf bestimmte Dateisystemtypen zu beschränken. Eine Datei, die vom aktuellen Benutzer lesbar ist, hätte mindestens 4 an der ersten Stelle der Berechtigungen, und eine von der Gruppe ausführbare hätte mindestens den Wert 1 an der zweiten Stelle. Da wir uns nicht um die Berechtigungen für den Rest der Welt kümmern, können wir 0 für die dritte Stelle angeben. Verwenden Sie -cmin N, um die letzten Attributänderungen zu filtern, und denken Sie daran, dass N in Minuten angegeben wird. Also:

    find /mnt -fstype ext4 -perm -410 -cmin -120
  4. Suchen Sie leere Dateien, die vor mehr als 30 Tagen erstellt wurden und sich mindestens zwei Ebenen unterhalb des aktuellen Verzeichnisses befinden!

    Der Parameter -mindepth N kann verwendet werden, um die Suche auf mindestens N Ebenen nach unten zu begrenzen, aber denken Sie daran, dass Sie das aktuelle Verzeichnis in die Zählung einbeziehen müssen. Verwenden Sie -empty, um nach leeren Dateien zu suchen, und -mtime N, um nach der Änderungszeit zu suchen. Also:

    find . -empty -mtime +30 -mindepth 3
  5. Nehmen wir an, dass die Benutzer carol und john Teil der Gruppe mkt sind. Suchen Sie im Homeverzeichnis von john alle Dateien, die auch von carol gelesen werden können.

    In Anbetracht der Tatsache, dass beide Benutzer Mitglieder der gleichen Gruppe sind, brauchen wir mindestens ein r (4) für die Gruppenberechtigungen, und die anderen sind uns egal. Also:

    find /home/john -perm -040

Linux Professional Insitute Inc. Alle Rechte vorbehalten. Besuchen Sie die LPI Learning Website: https://learning.lpi.org
Dieses Werk steht unter der Lizenz Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International.

Linux Professional Insitute Inc. Alle Rechte vorbehalten. Besuchen Sie die LPI Learning Website: https://learning.lpi.org
Dieses Werk steht unter der Lizenz Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International.

LPI ist eine Non-Profit-Organisation.

© 2023 Linux Professional Institute (LPI) ist eine globale Organisation für Zertifizierungsstandards und zur Karriereplanung für Open-Source-Profis. Mit mehr als 200.000 Zertifikatsinhabern ist es die weltweit erste und größte herstellerneutrale Linux- und Open-Source-Zertifizierungsstelle. LPI verfügt über zertifizierte Fachleute in über 180 Ländern, bietet Prüfungen in mehreren Sprachen an und hat Hunderte von Trainingspartnern.

Unser Ziel ist es, wirtschaftliche und kreative Möglichkeiten für alle zu ermöglichen, indem wir Open-Source-Wissens- und Kompetenzzertifizierungen allgemein zugänglich machen.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Kontaktieren Sie uns
  • Datenschutz und Cookie-Richtlinien

Haben Sie einen Fehler entdeckt oder möchten Sie helfen, diese Seite zu verbessern? Lassen Sie es uns wissen.

© 1999–2023 The Linux Professional Institute Inc. Alle Rechte vorbehalten.