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.
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.
Odpowiedzi:
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 w awk '{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.
Możesz tego nie potrzebować pipe
, jeśli masz pidof
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.
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.
Używaj pgrep
z opcją -f.
kill $(pgrep -f dmn)
pgrep
, dlaczego nie po prostu pkill -f dmn
?
$()
składni:kill $(ps -e | grep dmn | awk '{print $1}')
.