Jest na to wiele sposobów.
Metoda nr 1 - ps
Możesz użyć ps
polecenia, aby znaleźć identyfikator procesu dla tego procesu, a następnie użyć PID, aby zabić proces.
Przykład
$ ps -eaf | grep [w]get
saml 1713 1709 0 Dec10 pts/0 00:00:00 wget ...
$ kill 1713
Metoda nr 2 - pgrep
Możesz również znaleźć identyfikator procesu za pomocą pgrep
.
Przykład
$ pgrep wget
1234
$ kill 1234
Metoda nr 3 - zabij
Jeśli masz pewność, że to jedyne wget
uruchomione narzędzie, możesz użyć polecenia, pkill
aby zabić zlecenie według nazwy.
Przykład
$ pkill wget
Metoda nr 4 - zadania
Jeśli znajdujesz się w tej samej powłoce, z której wykonałeś zadanie w tle. Możesz sprawdzić, czy nadal działa, używając jobs
polecenia, a także zabić go według numeru zadania.
Przykład
Mój fałszywy praca, sleep
.
$ sleep 100 &
[1] 4542
Znajdź numer pracy. UWAGA: liczba 4542 jest identyfikatorem procesu.
$ jobs
[1]+ Running sleep 100 &
$ kill %1
[1]+ Terminated sleep 100
Metoda nr 5 - rys
Za pomocą fg
polecenia możesz przenieść zadanie w tle z powrotem na pierwszy plan .
Przykład
Fałszywe praca, sleep
.
$ sleep 100 &
[1] 4650
Uzyskaj numer pracy.
$ jobs
[1]+ Running sleep 100 &
Przenieś zadanie nr 1 z powrotem na pierwszy plan, a następnie użyj Ctrl+ C.
$ fg 1
sleep 100
^C
$
jobs
Nie maoutput
ifg
NOK:-bash: fg: 1: no such job
. Ale pisaniefg
działa dobrze, a takżepkill wget
działa dobrze. aleps -eaf|grep wget
i wtedykill <process number>
dawka nie zatrzyma pracy. ps: używam trzeciej liczby jako numeru procesu .ps
. 3rd # to identyfikator procesu rodzica.ps -eaef| grep [w]get
.pgrep
zamiast tegopgrep wget
.ps -eaf | grep [w]get
. Opcje znajdują się naps
stronie man.man ps
.W bash możesz użyć,
fg
aby przenieść pracę na pierwszy plan, a następnie użyć Ctrl+CLub wypisz proces w tle za pomocą,
jobs
a następnie wykonaj(z 1 zastąpionym przez numer,
jobs
który ci dał)źródło
Możesz również użyć
kill $!
do zabicia ostatniego zadania w tle.źródło
EDYCJA: Na pierwszym planie możesz Ctrl+ Club, jak wspomina @Zelda, zabić za pomocą „% x”, gdzie „x” to numer zadania, który wyśle sygnał domyślny (najprawdopodobniej SIGTERM w przypadku Linuksa).
po prostu wpisz,
fg
aby przenieść go na pierwszy plan, jeśli był to ostatni proces w tle (za pomocą „&”).Jeśli nie był to ostatni, wpisz:
jobs
i znajdź „numer zadania” przedstawiony w „[]”. Następnie wpisz:.. gdzie „2” to numer zadania, na przykład:
źródło
Prawidłowym sposobem jest wpisanie,
jobs
a następnie użycie numeru zadania, aby go zabić. Aby użyć pid do zabicia go, musisz przenieść go na pierwszy plan, jak zauważono w pierwszej odpowiedzi.Spróbuj tego
Jeśli uruchamiasz zadania zaraz po ich zabiciu, powinieneś to zobaczyć
źródło
Jedną rzeczą, której tu nie widzę, która okazała się bardzo przydatna, szczególnie podczas testowania poleceń, jest
pidof
. Możesz użyć,pidof [command]
aby znaleźć identyfikator procesu, który jest aktualnie uruchomiony. Podoba mi się, ponieważ pozwala mi szybko znaleźć identyfikator żądanego polecenia, które zwykle jest właśnie wywoływane.Po otrzymaniu pid możesz po prostu zabić proces. Pozwala na tworzenie prostych skryptów do zabijania procesu tylko wtedy, gdy jest on aktualnie uruchomiony.
źródło
Typowym przykładem jest
stress
narzędzie. Powiedzmy, że wykonałeś następujące czynności:i zamknął okno terminala. Proces będzie kontynuował jedzenie twoich zasobów z tła.
Oto, co robię:
pgrep
wyszczególnia PID poddanego procesu i zapisuje go w zmiennej,x
która następnie używana jestkill -9
do jego zakończenia.źródło
w ostatnim zatrzymanym procesie bash (Ctrl-Z) zabijesz:
lub jeśli chcesz wybrać, użyj:
jobs
następnie:
kill %N
lubić
kill %2
źródło