Como eliminar o processo pelo nome no Linux

Forçar o encerramento de processos com comportamento incorreto usando esses comandos do Linux

Para explicar o significado de um 'Processo' nas palavras mais simples, é que ele é uma instância em execução de qualquer aplicativo ou programa em seu sistema. Você pode estar executando vários aplicativos simultaneamente, como navegar, ouvir música em seu terminal, etc. Existem muitos processos em segundo plano associados a esses aplicativos que são executados pelo usuário.

Cada aplicativo ou programa executado em seu sistema cria vários processos associados a seu único aplicativo. Às vezes, isso pode ser um problema e se livrar desses processos é a única opção que você tem.

‘Matar’ um processo é uma opção útil que o Linux oferece para interromper os processos em andamento, seja um processo em primeiro ou em segundo plano. Neste artigo, revisaremos os comandos como matar, pkill e Mate todos para forçar o encerramento de qualquer processo em um sistema.

Por que matar um processo?

Compreender o conceito de eliminar um processo é importante antes de prosseguir neste tutorial. Matar pode parecer uma forma muito brutal de expressar o conceito, mas o que significa figurativamente é abortar um processo à força.

Agora, por que abortar ou encerrar um processo em andamento? Quando vários processos estão sendo executados em segundo plano, todos ou alguns deles podem funcionar incorretamente e fazer com que o sistema funcione incorretamente. Isso atrasa suas tarefas em andamento, pois o processo com defeito pode congelar o sistema por um tempo.

Às vezes, encerrar todos os processos com comportamento inadequado parece ser a única opção para restaurar a normalidade em seu sistema. Linux permite que você mate um processo usando o pid ou o nome do processo.

Usando o pgrep comando

A maioria dos usuários do Linux está familiarizada com o grep comando. O pgrep comando pode ser usado em linhas semelhantes do grep.

pgrep comando quando usado, exibe o pid do processo em execução conforme especificado no comando. Este comando será muito útil ao usar o pkill comando.

Sintaxe geral:

pgrep [opções] [padrão]

Opções importantes disponíveis com o pgrep comando

OpçãoDescrição
-vocêlistar ID de processo pertencente a um usuário específico
-ccontar o número de processos correspondentes
-EUliste apenas nomes de processos
-umalista o caminho completo do nome do processo

Vamos demonstrar o uso de pgrep comando usando um exemplo.

pgrep -u gaurav gnome

Aqui, desejamos ver o pids do gnome de processo que pertence ao usuário ‘gaurav’. Opção -você permite que você liste o pids dos processos pertencentes a um usuário específico. Nesse caso, o usuário gaurav.

Saída:

gaurav @ ubuntu: ~ $ pgrep -u gaurav gnome 1752 1755 1909 1922 2021 2576 4279 gaurav @ ubuntu: ~ $

À medida que avançamos com este tutorial, pgrep O comando nos ajudará a confirmar se o processo foi eliminado ou ainda está em execução.

Vamos agora passar para o pkill comando e sua execução.

Usando pkill comando

Você pode usar o pkill comando no Linux para encerrar o processo usando o nome do processo. Mesmo que você não saiba o pid de algum processo, mesmo assim você pode matar esse processo específico usando o pkill comando.

Os processos podem ser especificados com seu nome completo ou o nome parcial ao usar o pkill comando. Mesmo se você inserir o nome parcial do processo, o pkill comando irá corresponder a todos os processos em execução com o nome correspondente que você inseriu no comando.

Sintaxe:

pkill [opções] [process_name_pattern] 

Exemplo:

Vamos mostrar os processos em execução usando o principal comando. Você também pode usar o ps comando para listar os processos.

principal
topo - 14:24:02 até 3:12, 1 usuário, média de carga: 0,29, 0,48, 0,58 Tarefas: 221 no total, 1 em execução, 172 dormindo, 0 parado, 1 zumbi% CPU (s): 5,6 us, 1,0 sy , 0,0 ni, 92,9 id, 0,4 wa, 0,0 hi, 0,1 si, 0,0 st KiB Mem: 3928240 total, 610456 livre, 2233152 usado, 1084632 buff / cache KiB Swap: 4083708 total, 3378884 livre, 704824 usado. 1187268 disponível Mem PID USUÁRIO PR NI VIRT RES SHR S% CPU% MEM TIME + COMANDO 4077 gaurav 20 0 3312128 673480 118360 S 19,6 17,1 15: 13,23 Web Content 3712 gaurav 20 0 3953008 453544 116476 S 4,0 11,5 9: 28,39 MainThread 2010 gaurav 20 0 4084232 111096 45024 S 1,7 2,8 3: 14,85 gnome-shell 1197 root 20 0 1039612 33704 22988 S 1,0 0,9 3: 04,42 Xorg 1426 couchdb 20 0 3772396 16908 2520 S 0,7 0,4 1: 50,83 beam.smp 3288 gaurav 20 0 722480 25048 18272 S 0,7 0,6 0: 06,84 gnome-terminal- 3915 gaurav 20 0 2804900 231524 111228 S 0,7 5,9 0: 54,42 Conteúdo da web 4146 gaurav 20 0 3017924 245304 120604 S 0,7 6,2 2: 01,21 Conteúdo da web 4417 gaurav 20 0 2964208 234396 119160 S 0,70 6,0 0 : 59,90 Conteúdo da web 4860 gaurav 20 0 3066800 372920 132544 S 0,7 9,5 0: 48,20 Conteúdo da web 16007 gaurav 20 0 41944 3780 3116 R 0,7 0,1 0: 00,28 topo 

Usando principal comando irá exibir vários processos em seu terminal. Vamos tentar exibir o processo com um nome específico. Vamos usar o grep comando para exibir um processo cujo nome corresponde à string ‘mongo’.

topo | grep -i mongo

Observação: Aqui, usei a opção -i para tornar a pesquisa sem distinção entre maiúsculas e minúsculas.

A saída deste comando exibirá os processos correspondentes ao nome ‘mongo’

 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1: 03,22 mongod 1158 mongodb 20 0 288564 4848 1320 S 1,0 0,1 1: 03,25 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1: 03,27 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1: 03,29 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1: 03,31 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1: 03,33 mongod 1158 mongodb 20 0 288564 4848 1320 S 1,0 1: 03,36 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1: 03,33 mongod 1158 mongodb 20 0 288564 4848 1320 S 1,0 1: 03,36 mongod 1158 mongod 20 0 288564 4848 1320 S 0,7 0,1 1: 03,38 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1: 03,40 mongod 1158 mongodb 20 0 288564 4848 1320 S 1,0 0,1 1: 03,43 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,7 1: 03,45 mongod 1158 mongodb 20 0 288564 4848 1320 S 1,0 0,1 1: 03,48 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,3 0,1 1: 03,49 mongod 1158 mongodb 20 0 288564 4848 1320 S 1,0 0,1 1: 03,52 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1: 03,54 mongod 1158 mongodb 20 0 288564 4848 1320 S 1,0 0,1 1: 03,57 mongod

Agora, vamos usar o pkill comando para matar o processo denominado ‘mongo’.

pkill mongo

Este comando irá agora matar o processo mongo. Podemos confirmar se o processo foi forçado a encerrar usando o pgrep comando que exibe o pid do processo em execução de acordo com os critérios especificados pelo usuário.

gaurav @ ubuntu: ~ $ pgrep mongo gaurav @ ubuntu: ~ $

Este comando não retornará nenhum valor. Isso confirma que o processo ‘mongo’ agora é eliminado usando o pkill comando.

Opções frequentemente usadas com pkill comando

Ao usar o pkill precisaremos das opções mencionadas para o uso adequado e sem esforço do pkill comando.

OpçõesDescrição
-fcorresponde a argumentos completos, incluindo espaços, aspas, caracteres especiais
-vocêpara informar o processo pkill para coincidir com o processo que está sendo executado pelo usuário especificado
-1recarrega o processo
-9mata o processo
-15aborta graciosamente um processo

Vamos ver mais um exemplo de pkill comando usando o -f opção.

Existem dois comandos em execução no terminal, conforme mostrado abaixo.

ping bbc.com ping youtube.com

Ambos os processos são iniciados pelo ping comando. Agora, suponha que desejamos encerrar apenas um processo “ping youtube.com”, então temos que usar o -f opção com o pkill comando que mata um processo com um nome específico, incluindo os espaços e aspas do nome do processo.

Comando:

gaurav @ ubuntu: ~ $ pkill -f "ping youtube.com" gaurav @ ubuntu: ~ $ 

Resultado:

gaurav @ ubuntu: ~ $ ping youtube.com PING youtube.com (142.250.67.206) 56 (84) bytes de dados. 64 bytes de bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq = 1 ttl = 117 tempo = 30,9 ms 64 bytes de bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq = 2 ttl = 117 tempo = 121 ms 64 bytes de bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq = 206 ttl = 117 tempo = 86,5 ms 64 bytes de bom12s08-in-f14.1e100.net (142.250.67.206 ): icmp_seq = 207 ttl = 117 tempo = 105 ms Terminado gaurav @ ubuntu: ~ $ 

Aqui o "ping youtube.com”Processo agora está morto e o“ping bbc.com”Ainda está em execução no terminal.

No caso, se tivéssemos usado o pkill ping comando, teria matado tanto o ping processos, o que é indesejável.

Sinais usados ​​com pkill comando

pkill força o encerramento de um processo, enviando um sinal específico para esse processo. Existem três sinais possíveis que pkill comando pode enviar para o processo, dependendo do comando que o usuário dá.

A seguir está a lista dos sinais disponíveis.

SinalEspecificação
1(HUP)recarrega o processo especificado
9 (MATAR)mata o processo especificado
15 (PRAZO)pára ou aborta suavemente o processo especificado

Para este tutorial, estaremos contando muito com o MATAR sinal. Vejamos alguns exemplos para entendê-lo melhor.

Usando o pgrep comando para obter o pid combinando com o nome apache.

gaurav @ ubuntu: ~ $ pgrep apache 1218 10402 10403 gaurav @ ubuntu: ~ $
pkill -KIll apache

OU você também pode usar o comando com números (por exemplo, 1, 9, 15)

pkill -9 apache

Ambos os comandos mostrados acima irão matar o apache do processo. Confirmando com o pgrep comando novamente.

gaurav @ ubuntu: ~ $ pgrep apache gaurav @ ubuntu: ~ $

Enquanto o pgrep O comando não retorna nenhuma saída, prova que o apache do processo foi eliminado.

Conclusão

Neste tutorial, aprendemos sobre o pkill comando e como ele é usado para encerrar o processo usando o nome do processo diretamente. Também aprendemos sobre o pgrep comando que é usado para buscar a id do processo do processo executado por qualquer usuário específico. O pgrep comando permite-nos verificar se o processo foi encerrado.