Czasami, gdy próbuję uruchomić Firefoksa, mówi „proces Firefox już działa”. Więc muszę to zrobić:
jeremy@jeremy-desktop:~$ ps aux | grep firefox
jeremy 7451 25.0 27.4 170536 65680 ? Sl 22:39 1:18 /usr/lib/firefox-3.0.1/firefox
jeremy 7578 0.0 0.3 3004 768 pts/0 S+ 22:44 0:00 grep firefox
jeremy@jeremy-desktop:~$ kill 7451
To, co chciałbym, to polecenie, które zrobiłoby to wszystko dla mnie. Pobierałby ciąg wejściowy i grep
dla niego (lub cokolwiek innego) na liście procesów, i zabiłby wszystkie procesy na wyjściu:
jeremy@jeremy-desktop:~$ killbyname firefox
Próbowałem to zrobić w PHP, ale exec('ps aux')
wydaje się, że pokazuje tylko procesy, które zostały wykonane exec()
w samym skrypcie PHP (więc jedynym pokazanym procesem jest sam).
pkill -f "Process name"
polecenie ...Odpowiedzi:
Więcej informacji: http://linux.about.com/library/cmd/blcmdl1_pkill.htm
źródło
-f
.pkill -U <username>
jest całkiem przydatny. Mam serwer internetowy Solaris , rzeczywisty demon serwera WWW, jest skonfigurowany jako usługa z własnym użytkownikiem. Określenie przez użytkownika jest prostym / łatwym sposobem na uruchomienie ponownego uruchomienia.-f
flagi dla rozwiązania zbiorczego.Możliwe również użycie:
Dla mnie zadziałało idealnie. Tego właśnie szukałem. pkill nie działa z nazwą bez flagi.
Po
-f
ustawieniu do dopasowania wzorca używany jest pełny wiersz polecenia.źródło
-f
jest naprawdę potrzebna opcja. np.pkill -f "EvilWindowsServer.exe"
-f
flagę, aby zabić proces działający w tle z uruchomionym skryptem Python.pkill -f -9 PROCESSNAME
Możesz zabijać procesy według nazwy za pomocą
killall <name>
Ale jeśli nie widzisz tego procesu
ps aux
, prawdopodobnie nie będziesz miał prawa go zabić ...źródło
killall -s KILL firefox
Nieco dłuższa alternatywa:
źródło
Najłatwiejszym sposobem jest sprawdzenie, czy otrzymujesz właściwe identyfikatory procesów za pomocą:
Jeśli wynik jest zgodny z oczekiwaniami. Iść z:
źródło
Dziwne, ale nie widziałem takiego rozwiązania:
może także zabić wiele procesów (wiele pid), takich jak:
Wolę,
pidof
ponieważ ma jedno wyjście liniowe:źródło
kill: invalid number 'pidof myprogram'
. Co tu jest złego ?.Zabij wszystkie procesy znajdujące się
snippet
na ścieżce uruchamiania. Możesz zabić wszystkie aplikacje uruchomione z jakiegoś katalogu, umieszczając / katalog / jako fragment kodu. Jest to bardzo przydatne, gdy uruchamiasz kilka komponentów dla tej samej aplikacji z tego samego katalogu aplikacji.* Wolę pgrep, jeśli jest dostępny
źródło
grep
.ps ax | awk '/[s]nippet/ { print $1 }' | xargs kill
[s]
działa pod względem niedopasowania samego procesu awk?[x]y
pasuje do ciągu,xy
ale nie odwrotnie. To często zadawane pytania. Link prowadzi do strony sprzed ponad 20 lat, która wyjaśnia to bardziej szczegółowo; i to było już powtarzające się pytanie.Na Macu nie mogłem znaleźć pgrep i pkill, ani też killall nie działał, więc napisałem prosty skrypt liniowy: -
Jeśli jest to łatwiejszy sposób, udostępnij.
źródło
Za pomocą
#killall
polecenia:źródło
Aby zabić grep:
źródło
bardziej poprawne byłoby:
źródło
export
zmienną, której będziesz używać tylko raz w tym samym procesie?Zwykle używam
killall
polecenia.Sprawdź ten link, aby uzyskać szczegółowe informacje na temat tego polecenia.
źródło
Zadawałem sobie to samo pytanie, ale problem z obecnymi odpowiedziami polega na tym, że nie sprawdzają bezpiecznie procesów, które mają zostać zabite, więc ... może to prowadzić do strasznych błędów :) ... zwłaszcza, jeśli kilka procesów pasuje do wzorca .
Jako wyłączenie odpowiedzialności nie jestem zawodowcem i na pewno jest miejsce na ulepszenia.
Więc napisałem mały skrypt sh:
źródło
Jeśli korzystasz z GNOME, możesz użyć monitora systemu (System-> Administracja-> Monitor systemu), aby zabić procesy tak jak w Windows. KDE będzie miało coś podobnego.
źródło
Domyślne
kill
polecenie akceptuje nazwy poleceń jako alternatywę dla PID. Zobacz kill (1) . Często występującym problemem jest to, żebash
udostępnia własny,kill
który akceptuje numery zadań, takie jakkill %1
, ale nie nazwy poleceń. Utrudnia to domyślne polecenie. Jeśli pierwsza funkcja jest dla Ciebie bardziej przydatna niż druga, możesz wyłączyćbash
wersję, dzwoniącenable -n kill
Aby uzyskać więcej informacji, zobacz
kill
ienable
wpisy w bash (1) .źródło
enable -n kill
?enable kill
kill -9 $ (ps aux | grep -e nazwa_procesu | awk '{print 2 $}')
źródło
źródło
awk oneliner, który analizuje nagłówek danych
ps
wyjściowych, więc nie musisz się przejmować numerami kolumn (tylko nazwami kolumn). Obsługa wyrażenia regularnego. Na przykład, aby zabić wszystkie procesy, których nazwa pliku wykonywalnego (bez ścieżki) zawiera słowo „firefox” spróbujźródło