Erstellen Sie eine Bindung an einen Unix-Socket neu, wobei die gebundene Datei entfernt wird

Erstellen Sie eine Bindung an einen Unix-Socket neu, wobei die gebundene Datei entfernt wird

Ich war vor kurzem mit einer speziellen Situation konfrontiert. Eine Suche im Internet und in den Linux-Spezifikationen hat keine eindeutige Antwort ergeben. Nun, ich glaube, das ist nicht möglich, aber vielleicht kennen Sie den Weg.

Das Szenario ist wie folgt

  1. /var/lib/mysql/mysql.sock wird beim Start von einem MySQL-Prozess erstellt

  2. /var/lib/mysql/mysql.sock verschwindet, z. B. durch eine externe Aktion entfernt

  3. ss -lpn | grep mysqldzeigt immer noch diesen Unix-Socket

    u_str LISTEN 0 128 /var/lib/mysql/mysqld.sock -786114905 * 0 users:(("mysqld",pid=30220,fd=41))

  4. lsof -p 30220 | grep /var/lib/mysql/mysqld.sockzeigt an, dass ein Prozess daran gebunden ist

    mysqld 30220 mysql 41u unix 0xffff8800245603c0 0t0 3508852391 /var/lib/mysql/mysqld.sock

Ist es möglich, die gelöschte Unix-Socket-Datei neu zu erstellen/wiederherzustellen, ohne den übergeordneten Prozess neu zu starten, sodass Clients weiterhin wie vor der Löschung über diese Socket-Datei eine Verbindung herstellen können?

Danke.

Antwort1

Sie können den alten Unix-Trick verwenden, um eine noch geöffnete, aber gelöschte Datei wiederherzustellen. In diesem Fall haben Sie den größten Teil der Arbeit bereits erledigt:

ss -lpn | grep mysqld 

u_str  LISTEN     0      128    /var/lib/mysql/mysqld.sock -786114905            * 0                   users:(("mysqld",pid=30220,fd=41))

Überprüfen Sie die geöffneten Dateien vom PID, hier 30220:

# ls -l /proc/30220/fd

lr-x------ 1 mysql mysql 64 janv. 15 19:04 0 -> /dev/null
l-wx------ 1 mysql mysql 64 janv. 15 19:04 1 -> /var/log/mysqld.log
lrwxrwxr-- 1 mysql mysql 64 janv. 15 19:04 2 -> /var/lib/mysql/mysqld.sock (deleted)

Jetzt können Sie einen symbolischen Link /proc/30220/fd/2zu einem anderen Namen erstellen (Sie können ihn jedoch nicht auf denselben Namen wiederherstellen).

verwandte Informationen