Prozesse beenden
Im Allgemeinen gibt es für das Beenden eines Prozesses keinen sichereren Weg, einen Prozess zu beenden als mit einem regulären Kill (SIGTERM). Wenn es sich um einen interaktiven Vorgang handelt, können Sie ihn in der Regel noch sicherer stoppen, indem Sie ein SIGINT-Signal senden, das in der Regel durch Drücken von Ctrl+ gesendet wird C. Dieses Signal wird vom Prozess selbst abgefangen und kann es abhören - und normalerweise elegant stoppen. ( Danke Eliah )
DPKG-Datenbank
In Bezug auf die Paketverwaltung handelt es sich um eine Art Sonderfall. Die DPKG-Datenbank, die die APT-Befehle unter Wasser verwenden, kann immer erkennen, ob eine Operation noch nicht abgeschlossen ist. Jedes Paket hat einen aktuellen Status, der markiert ist, sowie einen aktuellen Status, z. B. entpackt, konfiguriert usw. Durch das Beenden des APT-Frontends befindet sich die Datenbank in einem fehlerhaften, aber bekannten Status. Die Sperrdateien werden erst freigegeben, wenn alles wieder sauber ist. Dies sollte behoben werden, bis neue Vorgänge möglich sind.
Die Lösung besteht darin, einen Prozess auszulösen, um alle Pakete in den konfigurierten Zustand zu versetzen. Wenn Sie einen apt-get
Vorgang unterbrochen haben, können Sie ihn praktisch später mit beenden
sudo dpkg --configure -a
Es weiß, wie es aus dem defekten Zustand in einen vollständig konfigurierten Zustand zurückkehrt und in diesem Sinne einfach dort fortfährt, wo es unterbrochen wurde. Die Sperrdateien werden dort belassen, bis Sie damit fertig sind, und das hat einen Grund - um neue Vorgänge mit der DPKG-Datenbank in einem unsauberen Zustand zu verhindern.
Über Sigkill (9)
Das Senden eines SIGKILL (Dezimaldarstellung 9) ist sehr unsicher. Dieses Signal wird vom Prozess nicht abgefangen, aber der gesamte Prozess wird vom Betriebssystem (Kernel) bereinigt, unabhängig davon, ob es dem Prozess gefällt oder nicht. Der Status der Dateien im Dateisystem kann beschädigt bleiben. Senden Sie diese Signale niemals, es sei denn, Sie hören andere, elegantere Signale nicht mehr.
Wenn ich mit apt-get auf einen Fehler stoße, tue ich Folgendes (als root, dh
sudo
vor allen Befehlen):Beende den Prozess namens apt-get:
Dpkg neu konfigurieren:
Aktualisiere apt-get:
Aktualisierungspakete, einschließlich derer, die nicht ordnungsgemäß installiert wurden:
Das habe ich irgendwo gelernt, aber ich kann mich leider nicht genau erinnern, wo.
quelle
In meinem Fall hatte ich Probleme mit Java 8 auf Ubuntu 12.04, also ...
quelle
Linux und andere Unix-Systeme sind von der Kommandozeile aus sehr mächtig, aber nach dem Start eines Prozesses sehr nachtragend. Wenn Sie einen Prozess mit dem Kill-Signal senden, wird der laufende Prozess mit Sicherheit abgebrochen. Beachten Sie jedoch, dass Sie eine Datenbank in einem instabilen Zustand belassen. Der letzte Datensatz wird möglicherweise nicht ordnungsgemäß geschlossen, sodass Sie möglicherweise eine Datenbank reparieren müssen. Nicht nur bei apt, sondern bei jeder Anwendung.
Versuchen Sie immer, die Anwendung auf normale Weise zu beenden, und beenden Sie nur Prozesse, bei denen es sich um nicht verfügbare Anwendungen handelt.
quelle
Hier ist, wie ich es mache, Ctrl+ CAber bedenke, dass es sicher ist, solange sich apt-get in der Download-Phase befindet oder den Cache aktualisiert. Ansonsten kann ich mir keinen sichereren Weg vorstellen. Lass es einfach zu Ende gehen und mach die Änderungen rückgängig, indem du es deinstallierst oder irgendwie herunterrüstest. Die heruntergeladenen Dateien können mit bereinigt werden
sudo apt-get autoclean
quelle