Подтвердить что ты не робот

Убить процесс в bash

Как убить процесс, который работает в bash - например, предположим, что я открываю файл:

$gedit file.txt

есть ли какой-либо путь в командной строке, чтобы закрыть его? Этот пример довольно тривиален, так как я мог просто закрыть окно, но, похоже, это немного похоже, особенно когда я ошибаюсь в командах.

Также есть способ избежать запуска исполняемого файла? Это, вероятно, имеет то же самое решение, но я думал, что все равно спрошу.

Спасибо

4b9b3361

Ответ 1

Чтобы прервать его, вы можете попробовать нажать ctrl c для отправки SIGINT. Если это не остановит его, вы можете попытаться его убить, используя kill -9 <pid>, который отправляет SIGKILL. Последний не может быть проигнорирован/перехвачен самим процессом (тот, кто убит).

Чтобы переместить активный процесс в фоновый режим, вы можете нажать ctrl z. Процесс отправляется на задний план, и вы возвращаетесь к приглашению оболочки. Используйте команду fg, чтобы сделать обратное.

Ответ 2

У вас есть несколько вариантов:

Сначала вы можете использовать kill. Но вам нужен pid вашего процесса, который вы можете получить, используя ps, pidof или pgrep.

ps -A  // to get the pid, can be combined with grep
-or-
pidof <name>
-or-
pgrep <name>

kill <pid>

Можно убить процесс, просто зная имя. Используйте pkill или killall.

pkill <name>
-or-
killall <name>

Все команды посылают сигнал процессу. Если процесс зависает, может потребоваться отправить sigkill в процесс (это номер сигнала 9, поэтому следующие примеры делают то же самое):

pkill -9 <name>
pkill -SIGKILL <name>

Вы можете использовать эту опцию также с kill и killall.

Прочтите эту статью о управлении процессами, чтобы получить больше информации о процессах в целом.

Ответ 3

попробуйте kill -9 {processID}

Чтобы найти идентификатор процесса, вы можете использовать ps -ef | grep gedit

Ответ 4

Это насилие следует использовать с осторожностью:

pkill -9 -e -f processname 

Если ваше имя процесса "sh", оно также убьет "bash"

Ответ 5

Старый пост, но я столкнулся с очень похожими проблемами. После некоторых экспериментов я обнаружил, что вы можете сделать это с помощью одной команды:

kill $(ps aux | grep <process_name> | grep -v "grep" | cut -d " " -f2)

В случае OP <process_name> будет "gedit file.txt".

Ответ 6

Вы можете использовать команду pkill для уничтожения процессов. Если вы хотите "поиграть", вы можете использовать "pgrep", который работает точно так же, но возвращает процесс, а не убивает его.

pkill имеет параметр -f, который позволяет вам сопоставлять всю команду. Итак, для вашего примера вы можете: pkill -f "gedit file.txt"

Ответ 7

Мне непонятно, что вы подразумеваете под "побегом исполняемого файла, который работает", но ctrl-z поместит процесс в фоновый режим и вернет управление в командную строку. Затем вы можете использовать команду fg, чтобы вернуть программу обратно на передний план.

Ответ 8

Пожалуйста, проверьте команду "сверху", а затем, если ваш script или любой из них работает, обратите внимание на "PID"

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1384 root      20   0  514m  32m 2188 S  0.3  5.4  55:09.88 example
14490 root      20   0 15140 1216  920 R  0.3  0.2   0:00.02 example2



kill <you process ID>

Example : kill 1384