Jak zabić proces, którego „sudo kill -9” nie może zabić bez ponownego uruchomienia?

20

Próbowałem zabić proces:

  sam@sam-desktop:~$ ps -aux|grep sda
  Warning: bad ps syntax, perhaps a bogus '-'? See       http://procps.sf.net/faq.html
  root      2898  0.0  0.0      0     0 ?        S    11:39   0:00       [jbd2/sda6-8]
  root      2899  0.0  0.0   2300   716 ?        D    11:39   0:00       mount -t ext4 -o uhelper=udisks,nodev,nosuid /dev/sda6       /media/634bad56-5543-40fe-843b-cd31f4a95dba_
  sam       2973  0.0  0.0   3328   876 pts/0    S+   14:13   0:00       grep --color=auto sda
  sam@sam-desktop:~$ sudo kill -9 2898
  sam@sam-desktop:~$ sudo kill -9 2899
  sam@sam-desktop:~$ sudo killall -9 2898
  2898: no process found
  sam@sam-desktop:~$ sudo killall -9 2899
  2899: no process found
  sam@sam-desktop:~$ ps -aux|grep sda
  Warning: bad ps syntax, perhaps a bogus '-'? See       http://procps.sf.net/faq.html
  root      2898  0.0  0.0      0     0 ?        S    11:39   0:00       [jbd2/sda6-8]
  root      2899  0.0  0.0   2300   716 ?        D    11:39   0:00       mount -t ext4 -o uhelper=udisks,nodev,nosuid /dev/sda6       /media/634bad56-5543-40fe-843b-cd31f4a95dba_
  sam       2987  0.0  0.0   3328   872 pts/0    S+   14:22   0:00       grep --color=auto sda
  sam@sam-desktop:~$ 

Po sugestiach próbowałem:

 sam@sam-desktop:~$ sudo umount -f      /media/634bad56-5543-40fe-843b-cd31f4a95dba_
 umount2: Invalid argument
 umount: /media/634bad56-5543-40fe-843b-cd31f4a95dba_: not mounted
 sam@sam-desktop:~$ sudo umount -l      /media/634bad56-5543-40fe-843b-cd31f4a95dba_
 umount: /media/634bad56-5543-40fe-843b-cd31f4a95dba_: not mounted
 sam@sam-desktop:~$ 
sam
źródło

Odpowiedzi:

24

Kilka punktów:

  • killall przyjmuje tylko nazwy procesów, więc twoja składnia była niepoprawna.

  • [bracketed]procesy to wątki jądra, które nie będą reagować na zabicie przez program przestrzeni użytkownika, taki jak kill.

  • Coś takiego mountczeka na odpowiedź jądra. Powinien się zamontować, a następnie zamknąć. Jedyny czas, w którym się zawiesza, to kiedy nie można przejść przez wierzchowca, AFAIK. Rozważ użycie -vopcji montowania, aby zobaczyć dokładny problem.

Myślę, że chcesz spróbować sudo umount -f /media/634bad56-5543-40fe-843b-cd31f4a95dba_, a jeśli to nie działa: sudo umount -l /media/634bad56-5543-40fe-843b-cd31f4a95dba_. Mam nadzieję, że jądro zauważy odmontowanie i zatrzyma poprzednią operację montowania.

Również jeśli jest to montowanie od ciebie /etc/fstab, możesz rozważyć użycie identyfikatorów UUID zamiast " /dev/sdxn" urządzeń, które mogą zmieniać nazwy między butami.

Oli
źródło
Zaktualizowałem oryginalny post. Problem nadal istnieje. Kiedy powinienem używać UUID?
sam
11

Proces jest w nieprzerwanym śnie i dlatego nie można go zabić.

Z wikipedii

Nieprzerwany stan snu to stan snu, który nie obsłuży sygnału od razu. Budzi się tylko w wyniku udostępnienia zasobu oczekującego lub gdy upłynie limit czasu podczas tego oczekiwania (jeśli jest określony, gdy uśpiony). Jest używany głównie przez sterowniki urządzeń czekające na dyskowe lub sieciowe IO (wejście / wyjście). Gdy proces śpi nieprzerwanie, sygnały nagromadzone podczas snu zostaną zauważone, gdy proces powróci z wywołania systemowego lub pułapki.

Sprawdziłbym więc dysk twardy i partycję pod kątem błędów .

zorganizować
źródło
2
Wiem, że na dysku twardym występują błędy, ale jak zabić program, próbując go użyć, co powoduje wieczną pętlę.
Sam
2

Wierzę, że procesy w nawiasach to te, które są uruchamiane przez wątki jądra i jako takie mają kluczowe znaczenie dla funkcji systemu. W takim przypadku jbd2 jest urządzeniem blokującym kronikowanie, które jest wymagane, jeśli chcesz korzystać z dysku twardego.

Dlaczego chcesz zabić ten proces?

mfisch
źródło
1
Ponieważ ten proces jest tworzony przeze mnie. Używam narzędzia dyskowego do zamontowania dysku twardego, ale wydaje się montować na zawsze. Chcę zatrzymać ten proces i ponowić próbę naprawy dysku twardego. Nie mogę się zrestartować, ponieważ moja partycja / wydaje się być uszkodzona. Używam dużo czasu, aby uruchomić się na moim Ubuntu.
Sam
1
Proces ten nie został utworzony przez Ciebie - narzędzie dyskowe zainicjowało urządzenie blokowe, które, jak wspomnieli inni, czeka na pewien czas
Rory Alsop
2
informacje w odpowiedzi są zasadniczo błędne: procesy w nawiasach to wątki jądra, nie uruchamiane przez init.
David Schmitt,
David, zmienię to, aby to naprawić.
mfisch,