Ogólnie mówiąc za zabicie procesu, nie ma bezpieczniejszego sposobu na zabicie procesu niż zwykłe zabijanie (SIGTERM). W przypadku procesu interaktywnego zwykle pozwala on zatrzymać go jeszcze bezpieczniej, wysyłając sygnał SIGINT, zwykle wysyłany przez naciśnięcie Ctrl+ C. Ten sygnał jest uwięziony przez sam proces, który może go słuchać - i zwykle zatrzymuje się z wdziękiem. ( dzięki Eliah )
Baza danych DPKG
Jeśli chodzi o zarządzanie pakietami, jest to szczególny przypadek. Baza danych DPKG używana przez polecenia APT pod wodą zawsze może wykryć, czy operacja się nie zakończyła. Każdy pakiet ma stan aktualny, który jest oznaczony, a także stan aktualny , np. Rozpakowany, skonfigurowany itp. Po zabiciu interfejsu użytkownika APT baza danych będzie w stanie uszkodzonym, ale w stanie znanym . Pliki blokady zostaną zwolnione dopiero, gdy wszystko wróci do stanu czystego - powinieneś to naprawić, dopóki nie pozwoli na nowe operacje.
Sposobem na naprawę jest uruchomienie procesu, aby uzyskać wszystkie pakiety w skonfigurowanym stanie. Praktycznie rzecz biorąc, jeśli przerwałeś apt-getoperację, możesz po prostu dokończyć ją później
sudo dpkg --configure -a
Wie, jak wyjść ze stanu zepsutego do stanu całkowicie skonfigurowanego iw tym sensie po prostu kontynuować od miejsca, w którym został przerwany. Pliki blokady pozostają tam, dopóki tego nie zrobisz, i to z tego powodu - aby zapobiec nowym operacjom z bazą danych DPKG w stanie nieczystym.
Informacje o firmie SIGKILL (9)
Wysłanie SIGKILL (dziesiętna reprezentacja 9) jest bardzo niebezpieczne. Ten sygnał nie jest wychwytywany przez proces, ale cały proces zostanie wyczyszczony przez system operacyjny (jądro), niezależnie od tego, czy proces mu się podoba, czy nie. Stan plików w systemie plików można pozostawić w stanie uszkodzonym. Nigdy nie wysyłaj tych sygnałów, chyba że nie słuchasz już innych bardziej wdzięcznych sygnałów.
Gdy aplikacja oferuje sposób jej zakończenia, jest to zwykle nawet bezpieczniejsze niż SIGTERM. Na przykład większość (jeśli nie wszystkie) edytorów tekstu, edytorów tekstu, programów graficznych, przeglądarek internetowych i innych aplikacji tekstowych lub graficznych, w których użytkownik może stworzyć treści, których nie należy utracić, nie zapisuj automatycznie przed rezygnacją, gdy otrzymają SIGTERM. Należy również pamiętać, że SIGINT może czasami być bezpieczniejszy niż SIGTERM (ale ogólnie nie powinien być wysyłany, chyba że taki sam wynik jak Ctrl + C jest wyraźnie pożądany).
Eliah Kagan
16
Kiedy napotykam błąd w apt-get, wykonuję następujące czynności (jako root, tj. sudoPrzed wszystkimi poleceniami):
Zabij proces o nazwie apt-get:
killall -9 apt-get
Ponownie skonfiguruj dpkg:
dpkg --configure -a
Zaktualizuj apt-get:
apt-get update
Zaktualizuj pakiety, w tym te nieprawidłowo zainstalowane:
apt-get upgrade
Dowiedziałem się tego skądś, ale niestety nie pamiętam dokładnie gdzie.
Linux i inne systemy uniksowe są bardzo wydajne z linii poleceń, ale bardzo bezlitosne po rozpoczęciu procesu. Wysłanie procesu sygnał zabicia z pewnością zabije uruchomiony proces, ale pamiętaj, że pozostawiasz bazę danych w niestabilnym stanie. Ostatni rekord może nie zostać poprawnie zamknięty, więc istnieje ryzyko naprawy bazy danych. Nie tylko z apt, ale z dowolną aplikacją.
Zawsze staraj się zakończyć aplikację w normalny sposób i zabijaj tylko procesy, które są uruchamiane.
Oto jak to robię Ctrl+. CAle pamiętaj, że jest bezpieczny, dopóki apt-get jest w fazie pobierania lub aktualizuje pamięć podręczną. Poza tym nie mogę wymyślić bezpieczniejszego sposobu. Po prostu pozwól mu zakończyć i cofnąć zmiany, odinstalowując lub obniżając w jakiś sposób wersję. Pobrane pliki można wyczyścić za pomocąsudo apt-get autoclean
Kiedy napotykam błąd w apt-get, wykonuję następujące czynności (jako root, tj.
sudo
Przed wszystkimi poleceniami):Zabij proces o nazwie apt-get:
Ponownie skonfiguruj dpkg:
Zaktualizuj apt-get:
Zaktualizuj pakiety, w tym te nieprawidłowo zainstalowane:
Dowiedziałem się tego skądś, ale niestety nie pamiętam dokładnie gdzie.
źródło
W moim przypadku miałem problemy z Javą 8 na Ubuntu 12.04, więc ...
źródło
Linux i inne systemy uniksowe są bardzo wydajne z linii poleceń, ale bardzo bezlitosne po rozpoczęciu procesu. Wysłanie procesu sygnał zabicia z pewnością zabije uruchomiony proces, ale pamiętaj, że pozostawiasz bazę danych w niestabilnym stanie. Ostatni rekord może nie zostać poprawnie zamknięty, więc istnieje ryzyko naprawy bazy danych. Nie tylko z apt, ale z dowolną aplikacją.
Zawsze staraj się zakończyć aplikację w normalny sposób i zabijaj tylko procesy, które są uruchamiane.
źródło
Oto jak to robię Ctrl+. CAle pamiętaj, że jest bezpieczny, dopóki apt-get jest w fazie pobierania lub aktualizuje pamięć podręczną. Poza tym nie mogę wymyślić bezpieczniejszego sposobu. Po prostu pozwól mu zakończyć i cofnąć zmiany, odinstalowując lub obniżając w jakiś sposób wersję. Pobrane pliki można wyczyścić za pomocą
sudo apt-get autoclean
źródło