Есть много способов сделать это.
Способ № 1 - пс
Вы можете использовать ps
команду, чтобы найти идентификатор процесса для этого процесса, а затем использовать PID, чтобы завершить процесс.
пример
$ ps -eaf | grep [w]get
saml 1713 1709 0 Dec10 pts/0 00:00:00 wget ...
$ kill 1713
Метод № 2 - pgrep
Вы также можете найти идентификатор процесса, используя pgrep
.
пример
$ pgrep wget
1234
$ kill 1234
Метод № 3 - Пкилл
Если вы уверены, что это единственное, что wget
вы запустили, вы можете использовать команду, pkill
чтобы убить задание по имени.
пример
$ pkill wget
Метод № 4 - работа
Если вы находитесь в той же оболочке, из которой вы выполняли задание, то теперь оно задним числом. Вы можете проверить, работает ли он по-прежнему с помощью jobs
команды, а также убить его по номеру задания.
пример
Моя фальшивая работа sleep
.
$ sleep 100 &
[1] 4542
Найди это номер работы. ПРИМЕЧАНИЕ: номер 4542 - это идентификатор процесса.
$ jobs
[1]+ Running sleep 100 &
$ kill %1
[1]+ Terminated sleep 100
Метод № 5 - фг
Вы можете вернуть фоновое задание обратно на передний план, используя fg
команду.
пример
Поддельная работа sleep
.
$ sleep 100 &
[1] 4650
Получить номер работы.
$ jobs
[1]+ Running sleep 100 &
Верните задание № 1 на передний план, а затем используйте Ctrl+ C.
$ fg 1
sleep 100
^C
$
jobs
не имеютoutput
иfg
сай:-bash: fg: 1: no such job
. Но набор текстаfg
работает хорошо, а такжеpkill wget
работает хорошо. ноps -eaf|grep wget
и тогдаkill <process number>
доза не остановит работу. PS: я использую третий номер в качестве номера процесса .ps
. Третий # - это идентификатор процесса родителя.ps -eaef| grep [w]get
.pgrep
вместоpgrep wget
.ps -eaf | grep [w]get
. Опции находятся наps
странице руководства .man ps
,В bash вы можете использовать,
fg
чтобы вывести задание на передний план, а затем использовать Ctrl+CИли перечислите процесс в фоновом режиме,
jobs
а затем выполните(с 1 заменен на номер
jobs
дал вам)источник
Вы можете в равной степени использовать,
kill $!
чтобы убить самую последнюю заднюю работу.источник
РЕДАКТИРОВАТЬ: Оказавшись на переднем плане, вы можете Ctrl+ Cили, как упоминает @Zelda, уничтожить с помощью «% x», где «x» - номер задания, который отправит сигнал по умолчанию (наиболее вероятно, SIGTERM в случае Linux).
просто напечатайте,
fg
чтобы вывести его на передний план, если это был последний процесс, который вы сделали в фоновом режиме (с '&').Если это был не последний, введите:
jobs
и найдите «номер задания», представленный в «[]». Затем просто введите:..where '2' - это номер задания, например:
источник
Правильный способ - набрать, а
jobs
затем использовать номер задания, чтобы убить его. Чтобы убить его, вы должны вынести его на передний план, как отмечено в первом ответе.Попробуй это
Если вы запускаете задания сразу после того, как убили его, вы должны увидеть это
источник
Одна вещь, которую я не вижу здесь, и которую я нашел очень полезной, особенно при тестировании команд, это
pidof
. Вы можете использовать,pidof [command]
чтобы найти идентификатор процесса, который запущен в данный момент. Мне это нравится, потому что это позволяет мне быстро найти идентификатор команды, которую я хочу, и это обычно то, что я только что вызвал.Получив pid, вы можете просто убить процесс. Он позволяет создавать простые сценарии для уничтожения процесса, только если он запущен в данный момент.
источник
Типичным примером является
stress
инструмент. Допустим, вы запустили следующее:и закрыл окно терминала. Процесс будет продолжать пожирать ваши ресурсы на заднем плане.
Вот что я делаю
pgrep
перечисляет PID подчиненного процесса и сохраняет его в переменной,x
которая затем используетсяkill -9
для его завершения.источник
в bash последний остановленный процесс (Ctrl-Z) вы убьете:
или, если хотите выбрать, используйте:
jobs
тогда:
kill %N
любить
kill %2
источник