Estou executando um programa no terminal do qual não posso escapar Ctrl- Ce que quero matar. Como posso encontrar seu PID?
command-line
process
Jjed
fonte
fonte
Respostas:
Abra outro terminal e execute
ps ax | grep foo
onde foo é o nome do programa que não responde. Isso deve retornar uma linha de saída que se parece com isso:O primeiro campo de cada linha de saída é um número que representa o ID do processo do programa correspondente
grep
(você pode ignorar com segurança o último, que se representagrep
.Para interromper o processo incorreto, faça:
kill pid
where pid é o ID do processo do programa. Talvez você precise julgar qual das correspondências precisa serkill
editada ou, emtop
vez disso, use-a . O usokill
por si só envia o SIGTERM, que você deve tentar primeiro, pois permite que o programa limpe adequadamente depois de si mesmo. Se SIGTERM falhar, tente SIGHUP, que é a medicina stonger:kill -HUP pid
. Se tudo mais falhar, envie SIGKILL. Porém, você deve fazê-lo apenas como último recurso, porque o SIGKILL faz com que o kernel finalize o processo imediatamente, sem possibilidade de limpeza. Às vezes, isso pode resultar em corrupção de dados ou outros problemas. Então, novamente, envie apenas SIGKILL como último recurso. Para fazer isso, façakill -KILL pid
oukill -9 pid
.Se você está executando uma interface gráfica, é claro, não precisa se enganar com essas coisas malucas da linha de comando para fazer o trabalho. Basta abrir o "System Monitor", navegar até a guia Processos, escolher o processo que deseja interromper (Hm, poderia ser aquele que usa 90% da CPU?) E clicar com o botão direito do mouse. Como o processo já está parado, (esse é o problema, certo?), Escolha Finalizar processo ou Finalizar processo no menu resultante.
fonte
kill -9
é um mau conselho. Eu editei a resposta para corrigi-la.ping
comando esleep
. De acordo com unix.stackexchange.com/a/275826/72988 , não é possível no Ubuntu semmultiplexer
.Eu não acho que haja necessidade de comandos tão longos quando você pode executar os mesmos comandos com pgrep, pkill, pidof etc ...
pgrep:
DESCRIÇÃO: O pgrep examina os processos em execução no momento e lista os IDs do processo que correspondem aos critérios de seleção para o stdout. Todos os critérios devem corresponder. Por exemplo,
Para localizar o processo chamado sshd, de propriedade do root.
Listar os processos pertencentes ao root OU daemon.
pidof:
DESCRIÇÃO :
Pidof localiza os IDs de processo (pids) dos programas nomeados. Ele imprime esses IDs na saída padrão.
sintaxe: pidof program_name
Para matar um programa por pid, use o exemplo pkill:
-f
flag: Pesquisa o flag process_name (consulte man pkill)-o
: selecione apenas o processo mais antigo correspondente.-n
flag: selecione apenas o mais novo dos processos correspondentes.-l
flag: Liste o nome do processo e o ID do processo.fonte
A maneira mais fácil de saber o pid de um programa em execução é usando:
Por exemplo, se você iniciou o vim e deseja conhecer seu pid:
Lembre-se de que você precisará fornecer o nome exato do programa que foi iniciado.
Por exemplo, se você estiver executando o vi e execute
pidof vim
, não obterá resultados corretos.Consulte a
pidof
página do manual para mais informações.fonte
pidof mysqld
retorna um PID. No entanto, se eu digitarpidof Mariadb
nada será retornado. É o mesmo PID para o MariaDB e o MySQL?Eu achei bom usar uma pesquisa sem distinção entre maiúsculas e minúsculas adicionando o "-i" e usando "aux" em vez de "ax" para obter uma saída mais descritiva:
Se você gostaria de matar todos os processos, você pode usar:
Isso é uma matança forçada. Solte o "-9" se você quiser uma morte suave.
fonte
ps aux | grep -i firefox...
processo, porque contém o textofirefox
em seu comando!grep -i firefo[x]
para corresponder apenas ao firefox-9
comkill
, consulte aqui para explicaçõesSe você quiser apenas o pid (útil para scripts de autokill, etc ...)
fonte
Para aqueles que executam o Ubuntu 16.04 LTS, você deve usar
ps ax
e não apenasps
na linha de comando, caso contrário, você obterá os processos gerados a partir da instância do terminal em que você está. (Geralmente apenas 'bash' [o shell em que você está] ] e 'ps' [o que você acabou de executar])fonte
ps -e
(mostra tudo) eps -ejH
(mostra uma árvore de processo).Você também pode abrir outro terminal (ou alternar para outro tty) e executar
top
, que é basicamente uma versão em texto do System Monitor. A primeira coluna lista o PID de cada processo em execução, que você pode eliminar pressionando K, inserindo o PID e, em seguida, inserindo um sinal numérico para enviar.fonte
Você poderia fazer:
os dois primeiros pipes obtêm informações do processo, depois tentamos obter a coluna PID usando o corte da velha escola e depois damos o PID resultante para matar.
fonte
kill -9
é a maior arma que você precisa para matar um processo. Você deve tentar um sinal mais gentil no início antes de recorrer à SIGKILL para dar ao processo a chance de limpar seus recursos.ou
listar todos os pid com o processo correspondente
fonte