Kiedykolwiek muszę zabijać proces w tle, robię to ps -e | grep <process_name>
Która drukuje coś takiego 1766 ? 00:00:13 conky
, a potem wykorzystywać identyfikator procesu, aby kill
to uczucie tak kill 1766
.
Czy mogę to jakoś uprościć? Zrobić to szybciej? zmniejszyć ilość pisania?
Odpowiedzi:
(TL DR:
pgrep
,pkill
)Wiele wariantów uniksowych jest dostarczanych wraz z
pgrep
towarzyszącym oprogramowaniempkill
: Solaris , Linux (część standardowych narzędzi procesowych , może być nieobecny we wbudowanych systemach Linux), FreeBSD , OpenBSD , NetBSD ,… ale tylko z MacPorts na OS X , nie AIX i tylko ostatnio w HP-UX .pgrep
Narzędziowy przedstawia identyfikator procesu procesów dopasowanych nazwy użytkownika, oraz kilka innych kryteriów. Argument topgrep
jest interpretowany jako wyrażenie regularne, które musi pasować do części nazwy pliku wykonywalnego procesu (chyba że podasz opcję, aby to zmienić). Jeśli zadzwoniszpkill
zamiastpgrep
, narzędzie wysyła sygnał zamiast wyświetlać identyfikatory procesu.Innym podobnym narzędziem jest pidof . W systemie Linux jest dostarczany przez SysVinit lub BusyBox (więc często można go znaleźć we wbudowanym systemie Linux, który nie ma
pgrep
); istnieją również porty w innych wariantach uniksowych.pidof
Narzędzie ma mniej opcji, to przeważnie tylko mecze całych nazw plików wykonywalnych. Narzędzie towarzyszącekillall
wysyła sygnał do dopasowanych programów¹.¹ Strzeż się,
killall
co ma inne znaczenie w systemie Solaris i prawdopodobnie w innych wariantach uniksowych; nie wpisujkillall
jako root w systemie Solaris.źródło
killall ProcessName
(wada tego polecenia polega na tym, że nie zawsze znasz nazwę procesu programu).pidof ProccessName
ikill the result form pidof
ps xu | grep <process name> | grep -v grep | awk '{ print $2 }' | xargs kill -9
Wypróbuj ten jeden wiersz i użyj go ponownie z historii twojego basha lub lepiej stwórz dla niego alias.źródło
pidof
wydaje się nieco łatwiejszy, ale nadal wymaga 2 krokówPodczas gdy Hanan ma kilka dobrych sugestii, dodam
pgrep
/pkill
. Pozwalają na znacznie lepszą kontrolę nad tym, który proces znajdujesz, oraz wyrażeń regularnych, jeśli nie znasz dokładnego procesu, który musisz zabić.PS Hanana
pidof
można karmićkill
bezpośrednio za pomocą backticks:źródło
pkill
było dokładnie to, czego szukałem, ja większość czasu znać nazwę procesu, głównie jegoconky
lubfirefox
lubchrome
lub coś podobnego. DziękiCo powiesz na to -
Przykład:
Aktualizacja:
Niestety, to oczywiście nie spełnia wymogu mniejszego pisania, więc dobrym sposobem na zrobienie tego byłoby dodanie
function
do twojego.bashrc
,.profile
lub cokolwiek innego skryptu startowego. Funkcja może być taka:Po dodaniu możesz po prostu przekazać nazwę swojego procesu:
źródło