Co |
symbol oznacza w sudo ps -ef | grep processname
poleceniu?
Czy ktoś może również wyjaśnić to polecenie? Użyłem tego polecenia tylko do uzyskania PID i zabicia tego procesu, ale widziałem sudo ps -ef | grep processname | grep -v grep
i mam wrażenie, że -v grep
to jak zabicie wcześniej wygenerowanego PID grep
. Jeśli tak, jak to działa?
command-line
bash
process
Aamir
źródło
źródło
sudo
biecps -ef
. Powszechną sztuczką pozwalającą uniknąć trzeciego polecenia jest umieszczenie znaku nazwy procesu w nawiasach kwadratowych:ps -ef | grep [p]rocessname
ps -ef | grep '[p]rocessname'
grep [p]rocessname
, mówisz powłoce, aby szukała pliku w bieżącym katalogu o nazwieprocessname
i zastąpiła wzorzec nazwą tego pliku. Jeśli żaden plik o nazwie nieprocessname
istnieje, powłoka może przekazać wzór dosłownie do grep. Ale to zależy od twoich ustawień. Więc twoja wersja pęknie jeśli plik o nazwieprocessname
istnieje, lub jeśli któryś z poniższych opcji powłoki została włączonafailglob
,nullglob
,nocaseglob
.Odpowiedzi:
Najpierw uruchamia się
sudo ps -ef
i przekazuje dane wyjściowe do drugiego polecenia.Drugie polecenie filtruje wszystkie wiersze zawierające słowo „nazwa procesu”.
ps -ef | grep processname | grep -v grep
wyświetla wszystkie linie zawierająceprocessname
i nie zawierającegrep
.Według
man grep
Według
man ps
Możesz łączyć parametry
-ef
tak samo jak-e -f
.Właściwie
ps -ef | grep processname
wypisz wszystkie wystąpienia wywoływanego procesuprocessname
.źródło
ps -ef
dokładnie robi ??| grep processName
w terminalu, otrzymujemy również wyjście grep, które samo w sobie jest procesem, więc -v zabija to wyjścieTo się nazywa
pipe
. Daje wynik pierwszego polecenia jako dane wejściowe drugiego polecenia.W twoim przypadku oznacza to:
Wynik
sudo ps -ef
podawany jest jako dane wejściowegrep processname
sudo ps -ef
:Zawiera listę wszystkich uruchomionych procesów. Wpisz
man ps
termin, aby uzyskać więcej.grep processname
Tak więc ta lista procesów jest wprowadzana do grep, który tylko wyszukuje program zdefiniowany przez
programname
.Przykład
Wpisanie
sudo ps -ef | grep firefox
w moim terminalu zwraca:źródło
-v grep
działa ..grep -v
jest używany. Aby odfiltrować ostatni wiersz.grep -v
odfiltrowuje linie zawierające wzór.Spróbuję odpowiedzieć na to z prostą praktyczną odpowiedzią:
Fajka
|
pozwala robić niesamowite rzeczy w skorupce! To jedyny operator, który uważam za najbardziej użyteczny i potężny.co powiesz na zliczanie plików w katalogu? prosty:
ls | wc -l
..redirect wyjściels
dowc
parametru wit-l
dla liniilub zliczanie linii w pliku?
co jeśli chcę czegoś szukać? „grep” może wyszukiwać wystąpienia ciągów:
po prostu przekieruj wyjście polecenia po lewej stronie potoku do polecenia po prawej stronie potoku.
jeszcze jeden poziom: jak często coś występuje w pliku?
możesz użyć | na prawie wszystko :)
źródło
grep -c "aRandomStringYouWantToSearchFor" "someFile"
;-)kill $(ps aux | awk '/someString/ { print $2}' | sed -n '1p')
nie, bo to w ogóle by nie służyło.Inne odpowiedzi już odpowiedziały na twoje główne pytanie, ale chciałbym również na to odpowiedzieć;
Zasadniczo zabicie procesu jest często przesadą i pozostawia zasoby przydzielone przez proces w chaotycznym stanie, często możesz po prostu go zakończyć ;
Oprócz tego wystarczy użyć
pkill
do zabicia / zakończenia procesu.pkill
obsługuje określenie dokładnej nazwy procesu lub wyrażenia regularnego:źródło
kill -9
chyba że wiesz, że żaden inny sygnał nie zadziała. Zobacz także iki.fi/era/unix/award.html#killkill
robi. Określenie-9
to dodatkowa i najczęściej katastrofalna dodatkowa opcja.kill
proste, proste. Niezależnie od terminologii, twoja odpowiedź nie powinna doradzać ludziom korzystania z tej-9
opcji, chyba że podasz mięsne zastrzeżenie.