Como posso matar um trabalho iniciado em outro shell (janela ou guia de terminal)?

7

Se eu começar um processo e colocar em segundo plano em uma janela de terminal (digamos ping google.com & ), posso matá-lo usando kill %1 (assumindo que é o job 1).

No entanto, se eu abrir outra janela de terminal (ou guia), o processo em segundo plano não está listado em jobs e não pode ser eliminado diretamente usando kill .

É possível eliminar esse processo de outra janela ou guia de terminal?

Nota: Estou usando o Xfce Terminal Emulator 0.4.3 e o bash (embora, se houver uma solução em outro shell comum, mas não em bash, também estou aberto a isso)

    
por KennyPeanuts 11.12.2012 / 02:18

3 respostas

9

Sim, tudo o que você precisa saber é o ID do processo (PID) do processo. Você pode encontrar isso com o comando ps ou o comando pidof .

kill $(pidof ping)

Deve funcionar de qualquer outro shell. Se não, você pode usar ps e grep para ping.

    
por 11.12.2012 / 04:16
5

Se você digitar top na outra janela do terminal, listará todo o processo em execução. Anote o id do processo de seu job , Em seguida, pressione q para sair dessa tela. Então kill o processo como de costume.

    
por 11.12.2012 / 12:03
3

Eu costumo fazer algo assim:

ps aux | grep $PROCESS | grep -v grep | awk '{print $2 " " $11}'

Por exemplo, se $ PROCESS="bash", então esta é a saída da minha sessão atual:

2683 bash
4481 bash
5695 bash

Em seguida, eu kill $PID para qualquer/bin/bash que eu não queira mais executar.

ps , grep e (opcionalmente) awk são úteis para procurar PIDs em kill .

    
por 11.12.2012 / 16:35