Убить процесс в bash
Как убить процесс, который работает в bash - например, предположим, что я открываю файл:
$gedit file.txt
есть ли какой-либо путь в командной строке, чтобы закрыть его? Этот пример довольно тривиален, так как я мог просто закрыть окно, но, похоже, это немного похоже, особенно когда я ошибаюсь в командах.
Также есть способ избежать запуска исполняемого файла? Это, вероятно, имеет то же самое решение, но я думал, что все равно спрошу.
Спасибо
Ответы
Ответ 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