Como eu mato processos no Ubuntu?

149

Como eu mato todos os processos executados por minha própria conta não raiz?

Eu tenho alguns processos smbd giratórios que causei na minha máquina Windows e, por isso, telnetizei no servidor linux e quero matar esses processos giratórios. Não tenho autoridade para reiniciar serviços ou reiniciar a máquina.

djangofan
fonte

Respostas:

172

Para matar todos os processos que você tem permissão para matar, basta executar o comando

kill -15 -1ou kill -9 -1dependendo do comportamento desejado (use man killpara obter detalhes)

Para matar um processo específico, digamos, firefox, basta executar

pkill firefoxou killall firefoxdependendo do comportamento que você deseja: Qual é a diferença entre 'killall' e 'pkill'?

Se você deseja ver quais processos estão em execução, use o comando

ps -ef

Se você deseja procurar todos os processos pelo usuário bob, isso pode ajudar

pgrep -l -u bob

ou

ps -ef | grep bob
ste_kwr
fonte
4
Eu começaria kill -15 -1e só passaria para kill -9 -1se houver processos difíceis e eu sei o que estou fazendo . Processar aleatoriamente processos que podem estar no meio de uma transação de banco de dados não é algo que você deve fazer tão casualmente como você sugere.
Simon Richter
Além disso, o processo do Firefox é nomeado firefox-bin.
Simon Richter
Não, você pode tentar executar killall firefoxe killall firefox-bine ver o que funciona. Eu concordo com o seu primeiro comentário.
21412 st_kwr
Graças @ste_kwr, trabalhou com as suas instruções, depois de lutar durante dois dias ...
Java.beginner
A vantagem de não precisar de PIDs está nos trabalhos do cron. Usar nomes funciona de maneira limpa.
precisa saber é o seguinte
56

Use sudo kill <pid>ousudo killall <process-name>

Chris Wayne
fonte
3
Eu não acho que isso seja relevante para esta pergunta, você está usando o sudo - o OP não possui esses privilégios, conforme mencionado na pergunta.
pl1nk
O OP não tem privilégios, edite sua resposta ou ela pode ser excluída ou convertida em um comentário como "não uma resposta".
Ish
Se ele não tem privilégios, apenas tem que matar <pid> ou killall <nome do processo> eu apenas usei na minha conta não raiz, não seria capaz de fazê-lo se não fosse por esta resposta .
Shailyn Ortiz
20

Vamos tentar algo mais:

sudo apt-get install htop 

O topcomando é a maneira tradicional de visualizar o uso de recursos do seu sistema e ver os processos que estão ocupando a maioria dos recursos do sistema. Top exibe uma lista de processos, com os que usam mais CPU na parte superior.

htopexibe as mesmas informações com um layout mais fácil de entender. Também permite selecionar processos com as teclas de seta e executar ações, como matá-los ou alterar sua prioridade, com as Fteclas.

Fantomas
fonte
16

Você pode usar

ps -ax | grep application name 

Se você estiver procurando pelo tipo firefox no terminal como ps -ax | grep firefox, mostra o ID do processo do aplicativo correspondente. Você pode parar esse aplicativo por killcomando se id do processo = 1317,

kill -9 1317
Xman Classical
fonte
13

Eu usaria xkill. Entre xkillem um terminal e clique na janela ou digite xkille o ID do processo e ele será encerrado.

Saiba mais sobre xkillno x.org.

Alvar
fonte
1
Use-o em segundo na frequência depois que o pkill nd o amar. +1
Sergiy Kolodyazhnyy
xkill não funciona neste caso ...
Pythonic
@PythoNic, em que caso é isso?
Alvar
1
Ele quer matar um processo não-janela que também não está relacionado com o servidor X como parece para mim ... (todo o caso uma boa ferramenta.)
Pythonic
9

Para tentar eliminar todos os processos pertencentes a um usuário username, execute:

pkill -U username
user129146
fonte
7

Eu dividiria seu problema em duas partes:

1) Como encontro os processos iniciados por mim? Rode isto:

ps -u `whoami`

O whoamié apenas no caso de você não saber o nome da conta que está usando, caso contrário, basta digitar o nome da conta sem as aspas.

Isso listará todos os processos que podem ser excluídos por sua conta.

2) O pscomando listará o número do processo, o TTY, a Hora e o CMD. O ID do processo é a primeira coluna. Use esse número para matar o processo. Tenha cuidado ao matar o processo. Você pode quebrar alguma coisa se matar o processo errado. Para matar um processo, você usará o killcomando que envia um SINAL para o processo. O sinal indica o que o processo deve fazer. Por exemplo, enviar um -1para o processo solicitará que ele recarregue o arquivo de configuração; enviar a -2é equivalente a pressionar Control + C nesse processo; -9fará com que o kernel abandone o processo, sem comunicá-lo ao processo.

Supondo que ps -u whoamiretornou algo como

  PID TTY          TIME CMD
 4333 pts/1    00:00:00 fish
 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

E você queria matar o firefoxprocesso pelo seu ID de processo, então você faria:

kill -1 7667

Em seguida, execute novamente o mesmo pscomando e verifique se o processo ainda está em execução. Se ainda estiver em execução, faça um

kill -2 7667

trabalhando o seu caminho até -9.

Para eliminar todos os processos iniciados por sua conta, insira kill <level> -1. O mesmo de antes: trabalhe até o fim -9.

Se você sabe o nome do processo, pode simplesmente ir killall <processname>, onde está o que você está tentando matar. Por exemplo: killall fish(peixe, nesse sentido, é o escudo interativo amigável).

A documentação para killallpode ser encontrada aqui: http://manpages.ubuntu.com/manpages/hardy/man1/killall.1.html

Alexandre Santos
fonte
3

Com esta aplicação, você pode ver as listagens de programas

instalar htop

sudo apt-get install htop

para ver processar e matar processo Você pode instalá-lo e simplesmente excluir

insira a descrição da imagem aqui

Reza Bojnordi
fonte
2

... Todos os processos no Linux respondem a sinais. Sinais são uma maneira de dizer ao programa que encerre ou modifique seu comportamento.

Como enviar sinais de processos por PID

A maneira mais comum de transmitir sinais para um programa é com o comando kill.

Como você pode esperar, a funcionalidade padrão deste utilitário é tentar matar um processo:

kill PID_of_target_process

Isso envia o sinal TERM para o processo. O sinal TERM informa ao processo para finalizar. Isso permite que o programa execute operações de limpeza e saia sem problemas.

Se o programa estiver se comportando mal e não sair quando receber o sinal TERM, podemos escalar o sinal passando o sinal KILL:

kill -KILL PID_of_target_process

Este é um sinal especial que não é enviado ao programa.

Em vez disso, é fornecido ao kernel do sistema operacional, que encerra o processo. Isso é usado para ignorar programas que ignoram os sinais enviados a eles ...

jackal404258
fonte
2

Escrevi um pequeno script que escrevi para matar (no meu caso) o Skype:

kill -s 9 `ps aux | grep skype | head -n 1 | cut -f4 -d" "`

Mas descobri que, por mais que funcionasse, não funcionou no dia seguinte porque o pid tinha um comprimento diferente e a quantidade de espaços era diferente.

Então me deparei com este site e tentei

pgrep -l -u justin

que gera convenientemente processos no formato

[pid] [name]

Então eu ajustei meu código no script para isso:

kill -s 9 `pgrep -l -u justin | grep skype | cut -f1 -d" "`

O que isso faz é canalizar todos os processos em justinexecução (que podem ser alterados para qualquer nome de usuário) para os grepquais procura skype(isso pode ser alterado para o seu processo) e, em seguida, canaliza a linha na cutqual então lê apenas o PID e, finalmente, usa esse PID no killcomando para matá-lo.

justingiffard
fonte
Você poderia ter deixado cair -l, correu pgrep -u justin skypee matar: pkill -u justin skype(ou pkill -KILL -u justin skypeenviar SIGKILL).
muru
Esta é definitivamente a maneira Unix. Muito bem, vocês dois. Eu vou usar este.
precisa saber é o seguinte
1

Aqui está um script python simples que escrevi, killProcess.py, que aceita qualquer coisa como entrada e mata isso.

Eu escrevi esse script porque tenho muitos processos de python ou nó que quero eliminar individualmente e programaticamente. Não posso usar o "killall python" porque interromperá os processos que eu preciso para continuar em execução.

Nomeie o arquivo "killProcess.py" e adicione o nome do script que deseja parar. Por exemplo: python killProcess.py runnablePoller.py matará o arquivo runnablePoller.py

import os;
import sys;
for arg in sys.argv:
    if(arg!="killProcess.py"):
        process=arg;
        print(process);
processes =os.popen("ps -ef | grep "+process).read();
processes=processes.split("\n");
processes=processes[0].split(" ");
#print(processes);
for p in processes:
    try:
        pid=int(p);
        print(pid); 
        break;
    except:
        continue;

os.system("kill "+str(pid));
nick carraway
fonte
0

Eu usei o seguinte procedimento para matar um processo no Ubuntu ::

Etapa 1: obtenha o pid do processo usando grep ou você pode usar -C also ::

ps aux | -C 'filename'

ou

ps -ef | -C 'filename'

ou

ps aux | grep 'filename'

ou

ps -ef | grep 'filename' 

Etapa 2: Anote o número do PID.

Etapa 3: use o comando 'kill' junto com o número pid como:

kill pidnumber
Akash Kandpal
fonte