Existem muitas maneiras de fazer isso.
Método # 1 - ps
Você pode usar o ps
comando para encontrar o ID do processo e, em seguida, usar o PID para interromper o processo.
Exemplo
$ ps -eaf | grep [w]get
saml 1713 1709 0 Dec10 pts/0 00:00:00 wget ...
$ kill 1713
Método # 2 - pgrep
Você também pode encontrar o ID do processo usando pgrep
.
Exemplo
$ pgrep wget
1234
$ kill 1234
Método # 3 - pkill
Se você tem certeza de que é o único wget
que você executou, pode usar o comando pkill
para eliminar o trabalho pelo nome.
Exemplo
$ pkill wget
Método # 4 - trabalhos
Se você estiver no mesmo shell de onde executou o trabalho que está agora em segundo plano. Você pode verificar se ainda está em execução usando o jobs
comando e também eliminá-lo pelo número do trabalho.
Exemplo
Meu trabalho falso sleep
.
$ sleep 100 &
[1] 4542
Encontre o número do trabalho. NOTA: o número 4542 é o ID do processo.
$ jobs
[1]+ Running sleep 100 &
$ kill %1
[1]+ Terminated sleep 100
Método # 5 - fg
Você pode trazer um trabalho em segundo plano de volta ao primeiro plano usando o fg
comando
Exemplo
Trabalho falso sleep
,.
$ sleep 100 &
[1] 4650
Obter o número do trabalho.
$ jobs
[1]+ Running sleep 100 &
Traga o trabalho nº 1 de volta ao primeiro plano e use Ctrl+ C.
$ fg 1
sleep 100
^C
$
jobs
não temoutput
efg
sais:-bash: fg: 1: no such job
. Mas digitarfg
funciona bem e tambémpkill wget
funciona bem. masps -eaf|grep wget
então akill <process number>
dose não interrompe o trabalho. ps: eu uso o terceiro número como número do processo .ps
. O terceiro número é a identificação do processo dos pais.ps -eaef| grep [w]get
.pgrep
em vez disso,pgrep wget
.ps -eaf | grep [w]get
. As opções estão naps
página do manual.man ps
.No bash, você pode usar
fg
para colocar o trabalho em primeiro plano e usar Ctrl+COu liste o processo em segundo plano com
jobs
e, em seguida, faça(com 1 substituído pelo número
jobs
fornecido)fonte
Você também pode usar
kill $!
para eliminar o trabalho em segundo plano mais recente.fonte
EDIT: Uma vez em primeiro plano, você pode Ctrl+ C, ou como @Zelda menciona, matar com o '% x' onde 'x' é o número do trabalho que enviará o sinal padrão (provavelmente o SIGTERM no caso do Linux).
basta digitar
fg
para trazê-lo para o primeiro plano, se foi o último processo que você colocou em segundo plano (com '&').Se não foi o último, digite:
jobs
e encontre o 'número do trabalho', representado em '[]'. Então digite:..onde '2' é o número do trabalho, por exemplo:
fonte
A maneira correta é digitar
jobs
e usar o número do trabalho para eliminá-lo. Para usar o pid para matá-lo, você precisa trazê-lo para o primeiro plano, conforme observado na primeira resposta.Tente isto
Se você executar trabalhos logo após matá-lo, deverá ver isso
fonte
Uma coisa que não vejo aqui, que achei muito útil, especialmente ao testar comandos, é
pidof
. Você pode usarpidof [command]
para encontrar a identificação do processo em execução no momento. Gosto porque permite encontrar rapidamente o ID do comando que desejo, que geralmente é algo que acabei de invocar.Depois de ter o pid, você pode simplesmente matar o processo. Ele permite criar scripts simples para matar um processo apenas se ele estiver em execução no momento.
fonte
Um exemplo comum é a
stress
ferramenta. Digamos que você executou o seguinte:e fechou a janela do terminal. O processo continuaria consumindo seus recursos em segundo plano.
Dela é o que eu faço:
pgrep
lista os PIDs do processo submetido e os armazena na variávelx
que então é usadakill -9
para finalizá-lo.fonte
No último processo interrompido do bash (Ctrl-Z), você mata:
ou se desejar escolher, use:
jobs
então:
kill %N
gostar
kill %2
fonte