linux: Zabij zadanie w tle
Jak zabić Ostatnie wywołane zadanie w tle w Linuksie?
Przykład:
doSomething
doAnotherThing
doB &
doC
doD
#kill doB
????
8 answers
Jest do tego specjalna zmienna w bash:
kill $!
$! rozszerza do PID ostatniego procesu wykonanego w tle.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-26 13:14:39
Możesz zabić według numeru zadania. Po umieszczeniu zadania w tle zobaczysz coś w stylu:
$ ./script &
[1] 35341
To {[2] } jest numerem zadania i może być odwołane w następujący sposób:
$ kill %1
$ kill %% # Most recent background job
Aby zobaczyć listę numerów zadań użyj polecenia jobs
. Więcej z man bash
:
Istnieje wiele sposobów, aby odnieść się do zadania w powłoce. Znak
%
wprowadza nazwę zadania. Numer zadanian
może być określana jako%n
. Zadanie może być również określane za pomocą prefiksu o nazwie użytej do jej uruchomienia, lub używając podciągu, który pojawia się w wierszu poleceń. Na przykład,%ce
odnosi się do zatrzymanego zadaniace
. Jeśli prefiks pasuje do więcej niż jednego zadania, bash Zgłoś błąd. Z drugiej strony użycie%?ce
odnosi się do każdego zadania zawierającego łańcuchce
w wierszu poleceń. Jeśli substring pasuje do więcej niż jednego zadania, bash zgłasza błąd. Symbole%%
i%+
odnoszą się do pojęcia powłoki bieżącego zadania, które jest ostatnim praca zatrzymała się, gdy była na pierwszym planie lub rozpoczęła się w tle. Poprzednia praca może być odwołane za pomocą%-
. W wyjściu odnoszącym się do zadań (np. wyjście polecenia jobs), bieżące zadanie jest zawsze oznaczony+
, a poprzednie zadanie-
. Pojedynczy%
(bez towarzyszącej specyfikacji zadania) odnosi się również do aktualna praca.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-26 13:18:11
Poniższe polecenie wyświetla listę wszystkich procesów w tle w sesji, wraz z pid. Następnie można go użyć do zabicia procesu.
jobs -l
Przykładowe użycie:
$ sleep 300 &
$ jobs -l
[1]+ 31139 Running sleep 300 &
$ kill 31139
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-26 13:18:59
To powinno zabić wszystkie procesy w tle:
jobs -p | xargs kill -9
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-20 05:38:38
skill doB
skill
jest wersją polecenia kill, która pozwala wybrać jeden lub wiele procesów na podstawie podanych kryteriów.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-20 05:38:58
Potrzebujesz jego pid... użyj "ps-A", aby go znaleźć.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-26 13:12:55
Jest to odpowiedź nie na temat, ale dla tych, którzy są zainteresowani, to może cenne.
Jak w odpowiedzi @ John Kugelman, % jest związane ze specyfikacją pracy. Jak to skutecznie znaleźć? użyj polecenia &wzorzec less, wygląda na to, że man używa mniej pager (nie jestem pewien), W Man bash wpisz & % wtedy wpisz Enter wyświetli tylko wiersze zawierające'%', aby wyświetlić wszystko, wpisz &. następnie wejdź.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-10 02:24:58
Wystarczy użyć komendy killall:
Killall taskname
Aby uzyskać więcej informacji i bardziej zaawansowane opcje, wpisz "man killall".
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-26 13:14:28