Po użyciu po prostu kill <some_pid>
na systemach Unix przez wiele lat, dowiedziałem się pkill
z młodszym Linux-zrozumiały współpracownika kolegi 1 .
Wkrótce zaakceptowałem sposób Linux- pgrep
a i pkill
-ing przez wiele dni i nocy, przez spowolnienia i warunki wyścigowe. Wszystko było dobrze i dobrze.
Ale teraz widzę tylko killall
. Wydaje się, że poradniki tylko wspominają killall
i nie jestem pewien, czy jest to jakiś równoległy rozwój, czy killall
jest następcą pkill
lub czymś innym.
Wydaje się działać jako bardziej ukierunkowany pkill
, ale jestem pewien, że coś mi umknęło.
Czy osoba znająca system Ubuntu / Debian 2 może wyjaśnić, kiedy (lub dlaczego) killall
powinna być używana, szczególnie jeśli powinna być używana zamiast pkill
(kiedy pkill
często wydaje się to łatwiejsze, ponieważ mogę być niechlujny z dopasowywaniem nazw, przynajmniej domyślnie).
Mówiąc o killall
, nie myślę o poleceniu, które w niektórych systemach uniksowych (Solaris, AIX,?) Zabiłoby wszystkie procesy użytkownika. Oto opis tej wersji ze strony podręcznika dla systemu AIX IBM :
Komenda killall anuluje wszystkie uruchomione procesy, z wyjątkiem tych, które powodują proces killall. To polecenie zapewnia wygodny sposób anulowania wszystkich procesów utworzonych przez kontrolowaną powłokę. Po uruchomieniu przez użytkownika root polecenie killall anuluje wszystkie anulowane procesy oprócz tych, które je uruchomiły. Jeśli podano kilka sygnałów, działa tylko ostatni.
1 „kolega” to bezpłatne uaktualnienie od „współpracownika”, więc równie dobrze może.
2 Początkowo myślałem, że to Linux lub Debian, ale niektóre źródła podają, że Linux killall
pochodzi z Uniksa o smaku BSD.
źródło
killall
(stary?) System Solaris, ale zachowywał się inaczej. Zabił wszystko.killall is safer for users to blindly copy and paste
, z wyjątkiem sytuacji, gdy jesteś na komputerze, na którym killall naprawdę zabija wszystko. To niefortunne, że dwa różne narzędzia mają tę samą nazwę.Uważaj na „killall”. W niektórych systemach (zapominam które) killall zabija wszystkie procesy. Po cichu zignoruje argumenty i całkowicie zatrzyma system.
źródło
kill -9 -1
może zabić twój system, a takżekillall -9 -1
może. Ale nie tylkokillall [program]
jeśli aktywujesz / etc / bash_completion, po
killall <part_of_process_name>
i naciśnij tab - auto uzupełnia nazwę procesu z listy uruchomionych procesówźródło
pkill plug<tab>
zabijanie wtyczki flash dla firefoxa, kiedy wiem, że nie mam nic, z czego chciałbym korzystać przez jakiś czas, ale nadal chcę aktywnie używać firefoxa. Jest to funkcja powłoki, a nie różnica między killall a pgrep / pkill.Jeśli spojrzysz na opcje obu programów, zobaczysz, że oba robią to samo, ale na różne sposoby.
pkill wykona dopasowanie dla różnych atrybutów procesu (CMD, PID, PPID, UID ...) i wyśle dany sygnał do każdego pasującego procesu. (W przypadku CMD używane jest wyrażenie regularne, w innych jest to ciąg znaków). pkill nie jest interaktywny, ale lepszy dla programów wsadowych.
killall wykona dopasowanie dla nazwy procesu (comm) lub użytkownika (użytkownika), a nie dla całego ciągu poleceń. Argument jest używany jako prosty ciąg i musi być zgodny z całą wartością „comm” (istnieje również opcja --regexp, aby to zmienić). killall ma opcje --interactive i --younger-than, których pkill nie ma.
Istnieje również killall5 pochodzący z dni SysV i został przeniesiony do innych wariantów UNIX (podobno w pakiecie Ubuntu „sysutils”). Zachowuje się to inaczej w starym stylu. Było to często używane wewnętrznie w skryptach inicjujących w celu zamknięcia lub przejścia do trybu pojedynczego użytkownika.
źródło
pkill
niekillall
należy go używać w skryptach, tylko interaktywnie i ostrożnie.