Muszę znaleźć pewien proces i go zabić. Napisałem takie polecenie:
ps -e | grep dmn | awk '{print $1}' | kill
Gdzie jest nazwa procesu dmn
. Ale to nie działa. Jak mogę znaleźć procesy według nazwy i kill
ich.
linux
bash
shell
command-line
command-line-arguments
user567879
źródło
źródło
$()
składni:kill $(ps -e | grep dmn | awk '{print $1}')
.kill $(ps -efw | grep dmn | grep -v grep | awk '{print $2}')
nie wiem dlaczego i nie przejmuję się zbytnio zajrzyj do niej.kill
próbował zabić nawet proces\n
po każdym awk, jak wawk '{print $1"\n"}'
?Jeśli istnieje wiele procesów, które chcesz usunąć, możesz użyć tego:
ps -efw | grep dmn | grep -v grep | awk '{print $2}' | xargs kill
Uwaga: Musisz usunąć sam proces grep z wyjścia, dlatego
grep -v grep
jest używany.źródło
Możesz użyć
jeśli twój system ma polecenie pkill .
źródło
Dodam tylko inne, ale lubię używać możliwości funkcji regex awk:
kill $(ps | awk '/dmn/{print $1}')
źródło
Jeśli masz
pidof
polecenie w swoim systemie (wiem, że powłoki takie jak ZSH są domyślnie dostarczane z tym, chyba że się mylę), możesz zrobić coś takiego.kill -9 $(pidof dmn)
źródło
Możesz także użyć killall :
źródło
Możesz tego nie potrzebować
pipe
, jeśli maszpidof
polecenie i znasz nazwę obrazu, zrobiłem to tak:kill $(pidof synergyc)
$()
Rozumiem to, ponieważ konwertuje to wyjście na zmienną, której może użyć kill, zasadniczo tak, jak zrobiłby to pipe. Krótsze i łatwiejsze do zrozumienia niż niektóre inne opcje, ale może też mniej elastyczne i bardziej bezpośrednie.źródło
for procid in $(ps -aux | grep "some search" | awk '{print $2}'); do kill -9 $procid; done
cześć przyjaciele ... możemy to zrobić za pomocą pętli for.
„Some search” to tutaj nazwa procesu, który chcesz przeszukać, na przykład „java”, więc powiedzmy, że liczba procesów w Javie to 200+, więc zabijanie jednego po drugim będzie zbyt typowe.
więc możesz użyć powyższego polecenia.
Dzięki.
źródło
Używaj
pgrep
z opcją -f.kill $(pgrep -f dmn)
źródło
pgrep
, dlaczego nie po prostupkill -f dmn
?