Как мне убить все процессы, запущенные моей собственной учетной записью без полномочий root?
У меня есть несколько вращающихся процессов smbd, которые я вызвал с моей машины с Windows, и поэтому я подключился к серверу Linux по telnet и я хочу убить эти прядильные процессы. У меня нет полномочий перезапускать службы или перезагружать компьютер.
Чтобы убить все процессы, на которые у вас есть разрешение, просто выполните команду
kill -15-1
или kill -9-1
в зависимости от желаемого поведения (используйте man kill
для подробностей)
Чтобы убить определенный процесс, например firefox, просто запустите
pkill firefox
или killall firefox
в зависимости от желаемого поведения: в чем разница между killall и pkill?
Если вы хотите узнать, какие процессы запущены, используйте команду
ps -ef
Если вы хотите просмотреть все процессы пользователя bob, это может помочь
pgrep -l -u bob
или
ps -ef | grep bob
Используйте sudo kill
или sudo killall
3
Давайте попробуем еще кое-что:
sudo apt-get install htop
вверху
— это традиционный способ просмотреть использование ресурсов вашей системой и увидеть процессы, которые занимают больше всего системных ресурсов. Вверху отображается список процессов, причем те из них, которые используют больше всего ЦП, находятся вверху.
htop
отображает ту же информацию в более удобном для понимания формате. Он также позволяет вам выбирать процессы с помощью клавиш со стрелками и выполнять такие действия, как их уничтожение или изменение их приоритета, с помощью клавиш F .
0
Вы можете использовать
ps -ax | grep application name
Если вы ищете firefox, введите в терминале ps -ax | grep firefox
, он показывает идентификатор процесса соответствующего приложения. Вы можете остановить это приложение командой kill
, если идентификатор процесса = 1317,
kill -9 1317
Я бы использовал xkill
. Введите xkill
в терминале и щелкните в окне или введите xkill
и идентификатор процесса, и он будет прекращен.
Подробнее о xkill
на x.org.
4
Чтобы попытаться убить все процессы, принадлежащие пользователю username
, запустить:
pkill -U username
Я бы разбил вашу проблему на 2 части:
1) Как мне найти запущенные мной процессы? Запустите это:
ps -u `whoami`
whoami
только что если вы не знаете имя учетной записи, которую используете, в противном случае просто введите имя учетной записи без обратных кавычек.
Здесь будут перечислены все процессы, которые могут быть удалены вашей учетной записью.
2) Команда ps
отобразит номер процесса, TTY, время и CMD. Идентификатор процесса — это первый столбец. Используйте этот номер, чтобы убить процесс. Будьте осторожны, убивая процесс. Вы можете что-то сломать, если убьете не тот процесс. Чтобы убить процесс, вы воспользуетесь командой kill
, которая отправляет СИГНАЛ процессу. Сигнал указывает, что должен делать процесс . Например, отправка -1
процессу потребует от него перезагрузки файла конфигурации; отправка -2
эквивалентна нажатию Control + C в этом процессе; -9
заставит ядро отказаться от процесса, не передавая его процессу.
Предположим, что ps -u whoami
вернул что-то вроде
PID TTY TIME CMD 4333 pts/1 00 : 00: 00 рыба 4335? 00:00:00 Fishd 4816? 00:00:00 intellij 4868? 00:50:42 java 4939? 00:00:19 fsnotifier64 7667? 02:49:08 firefox 7698? 00:00:00 unity-webapps-s
И вы хотите убить процесс firefox
по его идентификатору процесса, тогда вы бы сделали :
kill -1 7667
Затем вы должны повторно запустить тот же ps
и проверьте, запущен ли процесс. Если он все еще работает, выполните
kill -2 7667
, дойдя до -9
.
Чтобы остановить все процессы, запущенные вашей учетной записью, введите kill -1
. То же, что и раньше: увеличивайте число до -9
.
Если вы знаете имя процесса, вы можете просто перейти к killall
, где это то, что вы пытаетесь убить. Например: killall fish
(в этом смысле рыба — это дружественная интерактивная оболочка).
Документация для killall
может можно найти здесь: http://manpages.ubuntu.com/manpages/hardy/man1/killall.1. html
С помощью этого приложения вы можете просматривать списки программ
install htop
sudo apt-get install htop
для увидеть процесс и убить процесс. Вы можете установить его и просто удалить
… Все процессы в Linux реагируют на сигналы. Сигналы — это способ на уровне операционной системы сообщить программам о завершении или изменении их поведения.
Как отправлять сигналы процессов по PID
Самый распространенный способ передачи сигналов в программа использует команду kill.
Как и следовало ожидать, по умолчанию эта утилита пытается убить процесс:
kill PID_of_target_process
Это отправляет сигнал TERM процессу. Сигнал TERM сообщает процессу о завершении. Это позволяет программе выполнять операции очистки и плавно завершать работу.
Если программа работает некорректно и не завершает работу по сигналу TERM, мы можем усилить сигнал, передав сигнал KILL:
kill -KILL PID_of_target_process
Это специальный сигнал, который не отправляется программе.
Вместо этого он передается ядру операционной системы, которое завершает процесс. Это используется для обхода программ, которые игнорируют отправленные им сигналы …
0
Я написал небольшой скрипт, который написал, чтобы убить (в моем случае) Skype:
kill -s 9 `ps aux | grep skype | голова -n 1 | cut -f4 -d "" `
Но я обнаружил, что хотя тогда это сработало, на следующий день это не сработало, потому что pid был другой длины и для количество пробелов было другим
Затем я наткнулся на этот сайт и попробовал
pgrep -l -u justin
, который удобно выводит процессы в формате
[pid] [name]
Итак, я скорректировал свой код в скрипте на это:
kill -s 9 `pgrep -l -u justin | grep skype | cut -f1 -d "" `
То, что он делает, — это конвейеры для всех процессов, запущенных justin
(это может быть изменено на любого пользователя name) в grep
, который ищет skype
(это можно изменить для вашего процесса), а затем направляет эту строку в cut
, который затем читает только PID и, наконец, использует этот PID в команде kill
, чтобы убить его..
2
Я использовал следующие процедура для уничтожения процесса в Ubuntu ::
Шаг 1: Получите pid процесса с помощью grep или вы также можете использовать -C ::
ps aux | -C 'filename'
или
ps -ef | -C 'filename'
или
ps aux | grep 'filename'
или
ps -ef | grep 'filename'
Шаг 2: Обратите внимание на номер pid.
Шаг 3: Используйте команду ‘kill’ вместе с номером pid как:
kill pidnumber
Ctrl + Alt + Delete можно настроить так, чтобы предоставить вам доступ к диспетчеру задач из где легко убить процессы парой щелчков мышью, и для меня меньше требований к запоминанию команд, которые могут повредить, если сделать неправильно:
http://ubuntuhandbook.org/index.php/2013 /07/use-ctrl-alt-del-task-manager-ubuntu/
https://www.itsmarttricks.com/a-guide-to-kill-pkill-and-killall- команды для остановки процесса в linux-kill-process-linux/
Как завершить фоновый процесс?
Я запустил wget на удаленном компьютере. машина в фоновом режиме с помощью &
. Вдруг перестает скачиваться. Я хочу завершить его процесс, а затем повторно запустить команду. Как мне его закрыть?
Я не закрыл окно его оболочки. Но, как вы знаете, использование Ctrl + C и Ctrl + Z .
Есть много способов сделать это.
Метод №1 — ps
Вы можете использовать команду ps
, чтобы найти идентификатор процесса для этого процесса, а затем использовать PID, чтобы убить процесс.
Пример
$ ps -eaf | grep [w] get saml 1713 1709 0 Dec10 pts/0 00:00:00 wget ... $ kill 1713
Метод № 2 — pgrep
Вы также можете найти идентификатор процесса с помощью pgrep
.
Пример
$ pgrep wget1234 $ kill 1234
Метод № 3 — pkill
Если вы уверены, что это единственный wget
, который вы запустили вы можете использовать команду pkill
, чтобы убить задание по имени.
Пример
$ pkill wget
Метод №4 — задания
Если вы находитесь в той же оболочке, из которой вы выполняли задание, это теперь фоновое задание. Вы можете проверить, работает ли он по-прежнему, используя команду jobs
, а также убить его по номеру задания.
Пример
My поддельная работа, сон
.
$ sleep 100 & [1] 4542
Найдите номер задания. ПРИМЕЧАНИЕ. число 4542 — это идентификатор процесса.
$ jobs [1] + Running sleep 100 & $ kill% 1 [1] + Завершение сна 100
Метод № 5 — fg
Вы можете вернуть фоновое задание на передний план с помощью fg
команда.
Пример
Поддельное задание, sleep
.
$ sleep 100 & [1] 4650
Получить номер задания.
$ jobs [1] + Running sleep 100 &
Верните задание № 1 на передний план, а затем используйте Ctrl + C .
$ fg 1sleep 100 ^ C $
В bash вы можете использовать fg
, чтобы вывести задание на передний план, а затем использовать Ctrl + C
Или укажите процесс в фоновом режиме с помощью jobs
, а затем выполните
kill% 1
(где 1 заменяется числом, которое вам дал вакансии
)
Вы также можете использовать kill $!
, чтобы убить последнее фоновое задание.
1
РЕДАКТИРОВАТЬ: находясь на переднем плане, вы можете Ctrl + C , или, как упоминает @Zelda, kill с помощью ‘% x’, где ‘x’ — номер задания, отправит сигнал по умолчанию (скорее всего, SIGTERM в случае Linux).
просто введите fg
, чтобы вывести его на передний план, если это был последний процесс, который вы выполняли в фоновом режиме (с ‘&’).
Если он не был последним, введите: jobs
и найдите «номер вакансии», представленный в «[]». Затем просто введите:
fg 2
.. где «2» — номер задания, например:
foo @ bar: ~/junk/books $ jobs [1] + Запуск okular how_to_cook_a_turkey.pdf & foo @ bar: ~/junk/books $ fg 1okular how_to_cook_a_turkey.pdf
Правильный способ — ввести jobs
, а затем использовать номер задания, чтобы убить его. Чтобы использовать pid, чтобы убить его, вам нужно вывести его на передний план, как указано в первом ответе.
Попробуйте это
~/Desktop $ sleep 1000 & [1] 7056 ~/Desktop $ jobs [1] + Running sleep 1000 &/ Desktop $ kill% 1 # (% 1 - номер задания)
Если вы запускаете задание сразу после его завершения, вы должны увидеть это
Desktop $ jobs [1] + Прерванный сон 1000
Единственное, чего я здесь не вижу и который считаю очень полезным, особенно при тестировании команд, — это pidof
. Вы можете использовать pidof [command]
, чтобы найти идентификатор процесса, который выполняется в данный момент. Мне это нравится, потому что он позволяет мне быстро найти идентификатор нужной мне команды, который обычно я только что вызвал.
Когда у вас есть pid, вы можете просто убить процесс. Он позволяет создавать простые сценарии для завершения процесса, только если он в данный момент запущен.
1
Типичным примером является инструмент стресс
. Допустим, вы выполнили следующее:
$ stress -c 4 -m 4
и закрыли окно терминала. Процесс продолжит поглощать ваши ресурсы в фоновом режиме.
Я ее делаю:
$ x = `pgrep stress`; sudo kill -9 $ x
pgrep
перечисляет PID подчиненного процесса и сохраняет его в переменной x
который затем используется kill -9
для его завершения.
в последней остановке bash процесс (Ctrl-Z), который вы убьете:
kill %% kill -9 %%
или, если хотите выберите, используйте:
jobs
затем:
kill% N
как kill% 2
Самый простой способ — использовать флаг -9
в kill код> команда
user @ host:/path> jobs [1] + Запуск/usr/home/script1.sh $ i & user @ host:/path> fg/usr /home/script1.sh $ i ^ C [1] + Остановлен/usr/home/script1.sh $ iuser @ host:/path> kill -9% 1 [1] + Остановлен/usr/home/script1.sh $ iuser @ host:/path> [1] + Killed/usr/home/script1.sh $ iuser @ host:/path> user @ host:/path> jobsuser @ host:/path>