So öffnen Sie Unix-Sockets unter Linux

Unix-Sockets sind eine der Kommunikationsformen zwischen Prozessen, die unter Linux am häufigsten verwendet werden. Aus diesem Grund ist es bei der Diagnose oft sehr nützlich , offene oder empfangsbereite Unix-Sockets abzurufen .

Dies ist das Ziel dieses Tutorials, in dem erklärt wird, wie eine Liste mit allen offenen Unix-Sockets erstellt wird. Dazu benötigen wir nur Zugriff auf das Linux-Terminal.

So öffnen Sie Unix-Sockets unter Linux über die Konsole.

Ich weiß, dass viele von Ihnen die Unix-Sockets bereits genau kennen und nur daran interessiert sind, wie man sie auflistet. Daher zeige ich Ihnen zunächst den Befehl, den wir verwenden werden, und erkläre dann kurz die verschiedenen Konzepte für diejenigen, die neu in der Welt der Unix-Sockets sind.

Befehl zum Auflisten der im System geöffneten Unix-Sockets:
netstat -xl

 zeokat@ubuntu:~$ sudo netstat -xl Active UNIX domain sockets (only servers) Proto RefCnt Flags    Type    State     I-Node  Path unix 2   [ ACC ]   STREAM   LISTENING   16209  public/flush unix 2   [ ACC ]   STREAM   LISTENING   10818  /run/systemd/private unix 2   [ ACC ]   STREAM   LISTENING   10822  /run/systemd/fsck.progress unix 2   [ ACC ]   STREAM   LISTENING   16436  /run/user/1000/systemd/private unix 2   [ ACC ]   SEQPACKET LISTENING   10833  /run/udev/control unix 2   [ ACC ]   STREAM   LISTENING   16218  private/smtp unix 2   [ ACC ]   STREAM   LISTENING   10836  /run/systemd/journal/stdout unix 2   [ ACC ]   STREAM   LISTENING   16221  private/relay unix 2   [ ACC ]   STREAM   LISTENING   16224  public/showq unix 2   [ ACC ]   STREAM   LISTENING   16184  public/cleanup unix 2   [ ACC ]   STREAM   LISTENING   16180  public/pickup unix 2   [ ACC ]   STREAM   LISTENING   16187  public/qmgr unix 2   [ ACC ]   STREAM   LISTENING   15597  /var/run/mysqld/mysqld.sock unix 2   [ ACC ]   STREAM   LISTENING   16251  private/maildrop unix 2   [ ACC ]   STREAM   LISTENING   16254  private/uucp unix 2   [ ACC ]   STREAM   LISTENING   16257  private/ifmail unix 2   [ ACC ]   STREAM   LISTENING   16260  private/bsmtp unix 2   [ ACC ]   STREAM   LISTENING   16263  private/scalemail-backend unix 2   [ ACC ]   STREAM   LISTENING   13362  /run/uuidd/request unix 2   [ ACC ]   STREAM   LISTENING   13363  /var/run/dbus/system_bus_socket unix 2   [ ACC ]   STREAM   LISTENING   16266  private/mailman 

Die Erklärung des Befehls ist sehr einfach. Wir verwenden das Tool netstat mit den folgenden Optionen:

  • x : Filtert die Liste so, dass nur Unix-Sockets angezeigt werden.
  • l : zeigt nur die empfangsbereiten Sockets an, auch Server genannt.
See also  So ändern Sie das Symbol einer exe-Datei

Manchmal ist es interessant, die PID des Prozesses oder Programms zu kennen, dem der Socket gehört. Dazu müssen wir nur die Option -p hinzufügen, damit der Befehl lautet:
sudo netstat -xlp

 zeokat@ubuntu:~$ sudo netstat -xlp Active UNIX domain sockets (only servers) Proto RefCnt Flags    Type    State     I-Node  PID/Program name  Path unix 2   [ ACC ]   STREAM   LISTENING   16209  1224/master     public/flush unix 2   [ ACC ]   STREAM   LISTENING   10818  1/init       /run/systemd/private unix 2   [ ACC ]   STREAM   LISTENING   10822  1/init       /run/systemd/fsck.progress unix 2   [ ACC ]   STREAM   LISTENING   16436  1233/systemd    /run/user/1000/systemd/private unix 2   [ ACC ]   SEQPACKET LISTENING   10833  1/init       /run/udev/control unix 2   [ ACC ]   STREAM   LISTENING   16218  1224/master     private/smtp unix 2   [ ACC ]   STREAM   LISTENING   10836  1/init       /run/systemd/journal/stdout unix 2   [ ACC ]   STREAM   LISTENING   16221  1224/master     private/relay unix 2   [ ACC ]   STREAM   LISTENING   16224  1224/master     public/showq unix 2   [ ACC ]   STREAM   LISTENING   16184  1224/master     public/cleanup unix 2   [ ACC ]   STREAM   LISTENING   16180  1224/master     public/pickup unix 2   [ ACC ]   STREAM   LISTENING   16187  1224/master     public/qmgr unix 2   [ ACC ]   STREAM   LISTENING   15597  1031/mysqld     /var/run/mysqld/mysqld.sock unix 2   [ ACC ]   STREAM   LISTENING   16251  1224/master     private/maildrop unix 2   [ ACC ]   STREAM   LISTENING   16254  1224/master     private/uucp unix 2   [ ACC ]   STREAM   LISTENING   16257  1224/master     private/ifmail unix 2   [ ACC ]   STREAM   LISTENING   16260  1224/master     private/bsmtp unix 2   [ ACC ]   STREAM   LISTENING   16263  1224/master     private/scalemail-backend unix 2   [ ACC ]   STREAM   LISTENING   13362  1/init       /run/uuidd/request unix 2   [ ACC ]   STREAM   LISTENING   13363  1/init       /var/run/dbus/system_bus_socket unix 2   [ ACC ]   STREAM   LISTENING   16266  1224/master     private/mailman 

In diesem Fall habe ich sudo verwendet, um den Befehl auszuführen, aber wir haben sicherlich nicht genügend Berechtigungen, um alle PIDs anzuzeigen.

Einführung in Unix-Sockets.

Um einen tieferen Einblick in die Welt der Unix-Sockets zu erhalten , versuchen wir, eine einfache und erschwingliche Erklärung abzugeben. Dazu müssen wir zunächst erklären, was ein Socket ist, und es könnte als abstrakte Methode definiert werden, die den Datenfluss ermöglicht . Im Allgemeinen ist das Konzept der Buchse mit dem eines Steckers verbunden, der zwei Programme kontaktiert.

See also  Ubuntu 16.04 LTS verfügbar und mit vielen neuen Funktionen

Jetzt können wir als Unix-Socket eine Methode definieren, die die Kommunikation zwischen zwei Prozessen desselben Geräts ermöglicht . Mit anderen Worten, es ermöglicht den ordnungsgemäßen und zuverlässigen Datenfluss zwischen den beiden Prozessen innerhalb des Betriebssystems.

Die Kommunikation kann bidirektional sein, wenn sogenannte Stream-Sockets verwendet werden, und unidirektional, wenn Datagramm-Sockets verwendet werden.

Eine sehr wichtige Besonderheit von UNIX-Sockets ist, dass sie das Dateisystem als Namespace-Adresse verwenden , sodass ein UNIX-Socket anhand seines Pfadnamens identifiziert wird. Auf diese Weise können wir das Dateiberechtigungskontrollsystem verwenden und diese zusammen mit dem Socket zum Festlegen von Berechtigungen verwenden.

Schließlich schlage ich als Beispiel einen UNIX-Socket vor, wenn wir einen Nginx- oder Apache- Server mit PHP-FPM konfigurieren, wobei wir normalerweise einen Socket für den Server und das PHP-Verarbeitungsmodul zur Kommunikation verwenden.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *