suchen

Einführung in Dateitypen unter Linux

Feb 26, 2019 pm 04:16 PM
linux文件类型

Der Inhalt dieses Artikels besteht darin, verschiedene Dateitypen unter Linux vorzustellen. Ich hoffe, dass er für Freunde hilfreich ist. [Video-Tutorial-Empfehlung: Linux-Tutorial]

Unter dem Linux-System gibt es sieben Dateitypen:

  • Gewöhnliche Dateien ( - )

  • Verzeichnis (d)

  • Softlink (Zeichenlink L)

  • Socket-Datei(en)

  • Zeichengerät(e)

  • Gerät blockieren (B)

  • Pipe-Datei (benannte Pipe P)

Normale Dateien, Verzeichnisse und Softlinks bedürfen keiner weiteren Erklärung. Werfen wir einen Blick auf Pipe-Dateien, Socket-Dateien, Zeichengeräte und Blockgerätetypen.

Pipe-Datei

Pipes werden in anonyme Pipes und benannte Pipes unterteilt. Pipes werden an einem Ende geschrieben und am anderen Ende gelesen. Ihre Daten werden direkt im Speicher übertragen, z. B. beim Schreiben von übergeordneten Prozessen und beim Lesen von untergeordneten Prozessen. .

In der Shell ist die anonyme Pipe ein Pipe-Symbol „|“, z. B. ls | grep xxx, wobei der Prozess, der ls entspricht, der übergeordnete Prozess in dieser unabhängigen Prozessgruppe ist und der Prozess, der grep entspricht, der übergeordnete Prozess ist Der untergeordnete Prozess schreibt die Lesevorgänge des untergeordneten Prozesses.

In Programmiersprachen werden anonyme Pipes implementiert, indem zwei Dateihandles oder Dateideskriptoren (z. B. A, B) erstellt werden. Ein Dateihandle wird zum Schreiben von Daten verwendet (z. B. A-Schreibende, Daten-Schreibende Eingabe von A). schiebt es automatisch nach B) und ein anderes Dateihandle wird zum Lesen der Daten verwendet (d. h. B).

Für Named Pipes, also Pipes mit Namen, behalten Named Pipes Dateien im Dateisystem, es wird auch FIFO genannt, was „First In First Out“ bedeutet. Obwohl die Named-Pipe-Datei im Dateisystem gespeichert bleibt, ist diese Datei nur ein Einstiegspunkt für die Verwendung der Named-Pipe. Wenn die Named-Pipe zum Übertragen von Daten verwendet wird, erfolgt die Ausführung weiterhin im Speicher, was bedeutet, dass sie nicht gespeichert wird Das Dateisystem ist weniger effizient.

In der Shell können Sie den Befehl mknod oder den Befehl mkfifo verwenden, um eine Named Pipe zu erstellen. Named Pipes sind sehr nützlich, wenn Sie Shell-Skripte mit bestimmten speziellen Anforderungen schreiben. Tatsächlich wird die Funktion von Coroutinen (mit dem Befehl coproc) seit Bash 4 unterstützt (ksh und zsh unterstützen Coroutinen seit langem), aber die Anforderungen von Coroutinen können über Named Pipes realisiert werden.

Allgemeine Pipes sind unidirektionale Kommunikation und können die Funktion der bidirektionalen Kommunikation nicht realisieren, das heißt, sie können nur gleichzeitig schreiben und lesen, aber nicht auf beiden Seiten lesen und schreiben. Wenn Sie eine bidirektionale Kommunikation erreichen möchten, können Sie zwei Pipes erstellen (also vier Dateihandles, zwei Leseenden und zwei Schreibenden) oder einen bequemeren Socket verwenden.

Socket

Socket wird verwendet, um die Kommunikation zwischen beiden Enden zu realisieren. Wie oben analysiert, kann es die prozessübergreifende Kommunikationsfunktion einer bidirektionalen Pipeline realisieren. Darüber hinaus können Sockets auch die prozessübergreifende Kommunikation zwischen Hosts über das Netzwerk realisieren.

Sockets müssen gepaart sein, um sinnvoll zu sein, das heißt, sie sind in zwei Enden unterteilt. Jedes Ende verfügt über einen Dateideskriptor (oder Dateihandle) zum Lesen und Schreiben, was einer bidirektionalen Kommunikation entspricht Rohre.

Sockets werden entsprechend der Protokollfamilie in zwei Kategorien unterteilt: Netzwerk-Sockets (Typ AF_INET, unterteilt in inet4 und inet6 entsprechend ipv4 und ipv6) und Unix-Domänen-Sockets (Typ AF_UNIX). Natürlich können Sockets von der Protokollfamilie abwärts in viele Typen unterteilt werden. Beispielsweise können INET-Sockets in TCP-Sockets, UDP-Sockets, Link-Layer-Sockets, Raw-Sockets usw. unterteilt werden. Unter diesen sind Netzwerk-Sockets die Grundlage und der Kern der Netzwerkprogrammierung.

Unix-Domänen-Socket

Für die Kommunikation zwischen Prozessen auf einem einzelnen Computer ist es besser, den Unix-Domänen-Socket als den Inet-Socket zu verwenden, da der Unix-Domänen-Socket keine Netzwerkkommunikationskomponente hat, und zwar nur Es fehlen viele Netzwerkfunktionen und es ist leichter. Tatsächlich werden die von einigen Sprachen auf bestimmten Betriebssystemplattformen implementierten Pipeline-Funktionen über die Unix-Domäne implementiert, und man kann sich ihre hohe Effizienz vorstellen.

Der Unix-Domänen-Socket verfügt über zwei Dateihandles (z. B. A, B). Beide Dateihandles sind gleichzeitig lesbar und beschreibbar. Wenn Prozess 1 Daten nach A schreibt, werden diese automatisch nach B gepusht. Prozess 2 kann die von A geschriebenen Daten von B lesen. Wenn Prozess 2 Daten nach B schreibt, werden sie automatisch nach A gepusht. Prozess 1 kann lesen die von B von A geschriebenen Daten. Wie folgt:

进程1            进程2
------------------------
A   ----------->  B
B   ----------->  A

In Programmiersprachen verfügt das Erstellen eines Unix-Domain-Sockets natürlich über entsprechende Funktionen, um es einfach zu erstellen (kann man socketpair sein). Für die Bash-Shell können Sie sie über den Befehl nc (NetCat) erstellen oder einfach zwei Named Pipes verwenden, um die entsprechenden Funktionen zu implementieren. Bei Bedarf können Sie lernen, wie Sie Unix-Domain-Sockets in der Bash-Shell verwenden.

Netzwerk-Sockets

Für die prozessübergreifende Kommunikation über ein Netzwerk sind Netzwerk-Sockets erforderlich. Jeder Netzwerk-Socket besteht aus 5 Teilen, die als 5-Tupel des Sockets bezeichnet werden. Das Format ist wie folgt:

{protocol, src_addr, src_port, dest_addr, dest_port}

d. h. Protokoll, Quelladresse, Quellport, Zieladresse, Zielport.

Jedes Ende des Sockets hat zwei Puffer im Kernelraum (das heißt, ein Paar Sockets hat 4 Puffer), und jedes Ende hat einen Empfangspuffer und einen Sendepuffer. Prozess 1 schreibt Daten in den Sendepuffer seines eigenen Sockets, die an den Empfangspuffer des Peers gesendet werden, und dann kann Prozess 2 des Peers Daten aus dem Empfangspuffer lesen und umgekehrt.

Aber bevor Sie den Netzwerk-Socket tatsächlich lesen und schreiben können, benötigt der Netzwerk-Socket noch einige Einstellungen. Nachdem der Server-Socket erstellt wurde (Socket ()-Funktion, gibt es ein Dateihandle oder einen Dateideskriptor für Lese- und Schreibvorgänge), muss er auch die Adresse (über die Funktion bind ()) und den Überwachungsport (über listen () binden. )-Funktion), muss der Client nur den Socket erstellen und direkt die Funktion connect() verwenden, um eine Verbindungsanforderung an den Server-Socket zu initiieren.

Wenn der Client bei TCP-Sockets eine Verbindungsanforderung initiiert, bedeutet dies, dass er einen Drei-Wege-Handshake mit dem Server durchführen muss (wird vom Kernel ausgeführt und hat nichts mit dem User-Space-Prozess zu tun). Teilen Sie jeden dieser drei Handshakes auf. Wenn der Client zum ersten Mal eine SYN-Anfrage sendet, stellt der Kernel die Verbindung in die Syn-Warteschlange, setzt den Status auf syn-recv und sendet dann ack+syn an Auf der Clientseite verschiebt der Kernel nach Erhalt der Antwortbestätigung des Clients die Verbindung von der Syn-Warteschlange in die eingerichtete Warteschlange (oder Akzeptanzwarteschlange) und markiert den Status der Verbindung als hergestellt. Schließlich initiiert der auf Benutzerbereich wartende Prozess den Systemaufruf „accept()“, damit der Kernel ihn aus der Akzeptanzwarteschlange entfernen kann. Die Verbindung nach der Annahme () zeigt an, dass die Verbindung hergestellt wurde, wodurch die Datenübertragung zwischen den Prozessen an beiden Enden tatsächlich realisiert werden kann.

Weitere Informationen zu den Prinzipien von TCP-Sockets finden Sie in meinem anderen Artikel: Der Socket- und TCP-Verbindungsprozess, den man kennen muss.

Blockgeräte und Zeichengeräte

Blockgeräte sind Hardwaregeräte, die sich durch zufälligen (nicht unbedingt sequenziellen) Zugriff auf Datenblöcke fester Größe auszeichnen. Ein Chunk mit fester Größe wird als Block bezeichnet. Das häufigste Blockgerät ist die Festplatte, aber es gibt auch viele andere Blockgeräte, wie zum Beispiel Diskettenlaufwerke, Blu-ray-Lesegeräte und Flash-Speicher. Beachten Sie, dass es sich dabei um Geräte handelt, auf denen Dateisysteme gemountet sind, und dass Dateisysteme wie eine Verkehrssprache für Blockgeräte sind.

Der Zugriff auf Zeichengeräte erfolgt über einen kontinuierlichen Datenstrom, Byte für Byte. Typische Zeichengeräte sind Terminals (es gibt viele Arten von Terminals, sowohl physische als auch virtuelle) und Tastaturen .

Der einfachste Weg, Blockgeräte und Zeichengeräte zu unterscheiden, besteht darin, sich die Art und Weise anzusehen, wie auf Daten zugegriffen wird. Auf Blockgeräte kann nach dem Zufallsprinzip zugegriffen werden, um Daten zu erhalten, und auf Zeichengeräte muss in Bytereihenfolge zugegriffen werden.

Wenn Sie hier ein paar Daten lesen können, dort ein paar Daten lesen und sie schließlich zu einem kontinuierlichen Datenstück verketten können, dann ist dies ein Blockgerät, genau wie die Daten auf der Festplatte diskontinuierlich sind Möglicherweise muss über eine Direktzugriffsmethode zugegriffen werden, um ein Datenelement zu erhalten. Beispielsweise können sich in einer etwas größeren Datei auf einer Festplatte die ersten 10.000 Daten in zusammenhängenden Datenblöcken oder in zusammenhängenden Sektoren befinden, und die nächsten 10.000 Daten können weit davon entfernt oder sogar auf verschiedenen Zylindern liegen.

Wenn jedes Byte in einem Datenelement dieselbe Bytereihenfolge wie beim Zugriff aufweist, d. h. die Bytereihenfolge vom Zeitpunkt des Zugriffs bis zur endgültigen Verarbeitung der Daten vollständig konsistent ist, dann Dies ist ein Zeichengerät. Mit anderen Worten: Zeichengeräte können als Stream-Geräte betrachtet werden. Genau wie bei der Eingabe von Daten auf einer Tastatur müssen beim kontinuierlichen Drücken zweier Tasten die diesen beiden Tasten entsprechenden Bytedaten beim Empfang zuerst vorne und dann hinten eingegeben werden. Ebenso funktioniert das Endgerät. Wenn das Programm Daten an das Terminal ausgibt, gibt das Programm zuerst den Buchstaben a und dann die Zahl 3 aus. Bei der Anzeige auf dem Terminal muss dann a vorne und 3 innen stehen die Rückseite.

Das obige ist der detaillierte Inhalt vonEinführung in Dateitypen unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Dieser Artikel ist reproduziert unter:博客园. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
So überprüfen Sie die Debian OpenSSL -KonfigurationSo überprüfen Sie die Debian OpenSSL -KonfigurationApr 12, 2025 pm 11:57 PM

In diesem Artikel werden verschiedene Methoden eingeführt, um die OpenSSL -Konfiguration des Debian -Systems zu überprüfen, um den Sicherheitsstatus des Systems schnell zu erfassen. 1. Bestätigen Sie zuerst die OpenSSL -Version und stellen Sie sicher, ob OpenSSL installiert wurde und Versionsinformationen. Geben Sie den folgenden Befehl in das Terminal ein: Wenn OpenSslversion nicht installiert ist, fordert das System einen Fehler auf. 2. Zeigen Sie die Konfigurationsdatei an. Die Hauptkonfigurationsdatei von OpenSSL befindet sich normalerweise in /etc/ssl/opensl.cnf. Sie können einen Texteditor (z. B. Nano) verwenden: Sudonano/etc/ssl/openSSL.cnf Diese Datei enthält wichtige Konfigurationsinformationen wie Schlüssel-, Zertifikatpfad- und Verschlüsselungsalgorithmus. 3.. Verwenden Sie OPE

Wie man ein Hadoop -Entwicklungsumfeld auf Debian bautWie man ein Hadoop -Entwicklungsumfeld auf Debian bautApr 12, 2025 pm 11:54 PM

In diesem Leitfaden wird beschrieben, wie Sie eine Hadoop -Entwicklungsumgebung für ein Debian -System erstellen. 1. Installieren Sie Java Development Kit (JDK) zuerst, OpenJDK: Java_home = "/usr/lib/jvm/java-11-openjdk-amd64" speichern und beenden und dann ausführen: Quelle/etc.

Wie man Hadoop Resource Management auf Debian machtWie man Hadoop Resource Management auf Debian machtApr 12, 2025 pm 11:51 PM

Das effektive Verwalten von Hadoop -Ressourcen im Debian -System erfordert die folgenden Schritte: Hadoop -Bereitstellung: Füllen Sie zunächst die Installation und Konfiguration von Hadoop im Debian -System aus. Dies beinhaltet die erforderlichen Vorgänge wie das Herunterladen von Hadoop -Verteilungspaketen, Dekomprimierung, Einstellungsvariablen usw. Clusterkonfiguration: Konfigurieren Sie nach Abschluss der Installation den Hadoop -Cluster, wobei die Einstellungen von HDFs (Hadoop -verteiltes Dateisystem) und Garn (Yetanotherresourcenegotiator) abdeckt. Sie müssen die Kernkonfigurationsdatei ändern, wie z.

Was sind die Sicherheitseinstellungen für Debian Tomcat -Protokolle?Was sind die Sicherheitseinstellungen für Debian Tomcat -Protokolle?Apr 12, 2025 pm 11:48 PM

Um die Sicherheit von Debiantomcat -Protokollen zu verbessern, müssen wir auf die folgenden Schlüsselrichtlinien achten: 1. Berechtigungssteuerung und Dateiverwaltung: Protokolldateiberechtigungen: Die Standardprotokolldateiberechtigungen (640) beschränkt den Zugriff. Es wird empfohlen, den Ummask -Wert im Skript von Catalina.sh zu ändern (z. B. Wechsel von 0027 auf 0022) oder direkte Filepermissionen in der Konfigurationsdatei log4j2 festlegen, um die entsprechenden Lesen- und Schreibberechtigungen sicherzustellen. LOG -Dateispeicherort: Tomcat -Protokolle befinden sich normalerweise in/opt/tomcat/logs (oder einen ähnlichen Pfad), und die Berechtigungseinstellungen dieses Verzeichnisses müssen regelmäßig überprüft werden. 2. Protokolldrehung und Format: Protokolldrehung: konfigurieren server.xml

Wie man Warnungen in Tomcat -Protokollen interpretiertWie man Warnungen in Tomcat -Protokollen interpretiertApr 12, 2025 pm 11:45 PM

Warnmeldungen in den Tomcat -Server -Protokollen zeigen potenzielle Probleme an, die die Anwendungsleistung oder -stabilität beeinflussen können. Um diese Warninformationen effektiv zu interpretieren, müssen Sie auf die folgenden wichtigen Punkte achten: Warninhalt: Untersuchen Sie die Warninformationen sorgfältig, um den Typ, die Ursache und die möglichen Lösungen zu klären. Warninformationen liefern normalerweise eine detaillierte Beschreibung. Protokollstufe: Tomcat-Protokolle enthalten unterschiedliche Informationen, wie z. B. Informationen, Warn, Fehler usw. "Warn" -Stegwarnungen sind nicht tödliche Probleme, aber sie brauchen Aufmerksamkeit. TIMESTAMP: Erfassen Sie die Zeit, in der die Warnung auftritt, um den Zeitpunkt zu verfolgen, wenn das Problem auftritt, und die Beziehung zu einem bestimmten Ereignis oder Operation zu analysieren. Kontextinformationen: Zeigen Sie den Protokollinhalt vor und nach der Warninformationen an, erhalten Sie

Wie Tomcat -Protokolle bei der Fehlerbehebung bei Speicherlecks helfenWie Tomcat -Protokolle bei der Fehlerbehebung bei Speicherlecks helfenApr 12, 2025 pm 11:42 PM

Tomcat -Protokolle sind der Schlüssel zur Diagnose von Speicherleckproblemen. Durch die Analyse von Tomcat -Protokollen können Sie Einblicke in das Verhalten des Speicherverbrauchs und des Müllsammlung (GC) erhalten und Speicherlecks effektiv lokalisieren und auflösen. Hier erfahren Sie, wie Sie Speicherlecks mit Tomcat -Protokollen beheben: 1. GC -Protokollanalyse zuerst aktivieren Sie eine detaillierte GC -Protokollierung. Fügen Sie den Tomcat-Startparametern die folgenden JVM-Optionen hinzu: -xx: printgCDetails-xx: printgCDatESTAMPS-XLOGGC: GC.Log Diese Parameter generieren ein detailliertes GC-Protokoll (GC.Log), einschließlich Informationen wie GC-Typ, Recycling-Objektgröße und Zeit. Analyse gc.log

Was hat die Auswirkungen von Debian Apache -Protokoll auf die ServerleistungWas hat die Auswirkungen von Debian Apache -Protokoll auf die ServerleistungApr 12, 2025 pm 11:39 PM

Die Auswirkungen von Apache-Protokollen auf die Serverleistung unter dem Debian-System sind ein zweischneidiges Schwert, das sowohl positive Auswirkungen als auch potenzielle negative Auswirkungen hat. Positiver Aspekt: ​​Problemdiagnose -Tool: Apache -Protokoll zeichnet alle Anforderungen und Antworten auf dem Server aus. Durch die Analyse des Fehlerprotokolls können Konfigurationsfehler, Berechtigungsfragen und andere Ausnahmen leicht identifiziert werden. Sicherheitsüberwachung Sentinel: Zugriffsprotokolle können potenzielle Sicherheitsbedrohungen wie böswillige Angriffsversuche verfolgen. Durch das Festlegen von Protokollprüfungsregeln können abnormale Aktivitäten effektiv erkannt werden. Leistungsanalyse Assistent: Zugriff auf Protokollierungsanforderungsfrequenz und Ressourcenverbrauch, um zu analysieren, welche Seiten oder Dienste am beliebtesten sind, wodurch die Ressourcenzuweisung optimiert wird. Kombiniert mit Top oder HTOP usw.

So verwenden Sie Debian Apache -Protokolle, um die Website der Website zu verbessernSo verwenden Sie Debian Apache -Protokolle, um die Website der Website zu verbessernApr 12, 2025 pm 11:36 PM

In diesem Artikel wird erläutert, wie die Leistung der Website verbessert wird, indem Apache -Protokolle im Debian -System analysiert werden. 1. Log -Analyse -Basics Apache Protokoll Datensätze Die detaillierten Informationen aller HTTP -Anforderungen, einschließlich IP -Adresse, Zeitstempel, URL, HTTP -Methode und Antwortcode. In Debian -Systemen befinden sich diese Protokolle normalerweise in /var/log/apache2/access.log und /var/log/apache2/error.log verzeichnis. Das Verständnis der Protokollstruktur ist der erste Schritt in der effektiven Analyse. 2. Tool mit Protokollanalyse Mit einer Vielzahl von Tools können Apache -Protokolle analysiert: Befehlszeilen -Tools: GREP, AWK, SED und andere Befehlszeilen -Tools.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

SublimeText3 Linux neue Version

SublimeText3 Linux neue Version

SublimeText3 Linux neueste Version

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor