Angenommen, es /usr/local/bin/ruby
wird im Hintergrund ausgeführt, und dann wird ruby
mit einer anderen Version überschrieben oder sogar gelöscht ruby
.
Was passiert mit denen, die Ruby-Prozesse ausführen?
Dies hängt davon ab, wie genau die ausführbare Datei aktualisiert wird. Wenn dieselbe Datei geöffnet und Teile davon geändert werden, passieren schlimme Dinge. Wenn es entfernt wird, wird die Datei aus der Verzeichnisstruktur des Dateisystems entfernt, aber nicht wirklich entkoppelt (dh gelöscht), bis der letzte Prozess, der sie geöffnet hat, sie beendet hat. Wenn also die ausführbare Datei entfernt und an ihrer Stelle eine neue mit demselben Namen geschrieben wird, sollte die alte weiterhin einwandfrei funktionieren.
Sie werden weitermachen. Vielleicht schrecklich abstürzen, wenn sie versuchen, auf sich selbst zuzugreifen und etwas völlig Falsches zu erhalten. Ich würde es nicht tun, wenn ich nicht müsste :)
quelle
quelle
Nach meinem Verständnis verfügt der Linux-Kernel über eine Komponente namens Loader, die die ausführbare Datei selbst mit dem Image während des Lade- / Verknüpfungsprozesses öffnet. Sobald die Verknüpfung mit Bibliotheken usw. abgeschlossen ist, schließt der Loader die Datei. Somit geschieht dieser Prozess und ist abgeschlossen, wenn der Kernel den Prozess tatsächlich startet.
Ich bin nicht sicher, ob auf die ursprüngliche ausführbare Datei auf der Festplatte verwiesen werden muss, wenn die ausführbare Datei später versucht, externe Bibliotheken zu importieren.
Ich würde sagen, und es ist meine Erfahrung, dass, wenn Sie die ausführbare Datei auf der Festplatte löschen, die im Speicher geladene ausführbare Datei nicht betroffen ist. Wenn die ausführbare Datei durch eine neuere Version ersetzt wird, werden derzeit ausgeführte Dateien nicht "automatisch" aktualisiert, es sei denn, sie werden angehalten und neu gestartet.
Ich hatte Probleme mit einem RAID-Controller, die dazu führten, dass die gesamte Festplatte, auf der das Stammverzeichnis und andere Partitionen gemountet waren, plötzlich so tat, als wäre sie getrennt. Neue Programme konnten nicht geladen werden, aber die im Speicher funktionierten einwandfrei, bis sie Dateien von der Festplatte benötigten.
quelle