Interrupções de linha de comando no OS X vs Linux

2

Ocasionalmente, quando estou desenvolvendo no meu Mac, recebo um processo que é interrompido. Quando isso acontecer, tentarei o seguinte:

  1. Ctrl + C na janela do terminal ativo
  2. Se nada acontecer, vou abrir uma nova janela de terminal e fazer kill -SIGTERM {PID}
  3. Se ainda nada, feche a janela do terminal.

Eu estou correndo em situações em que depois de fazer os dois 1 e 2, o PID ainda está listado na minha lista de processos. Em outras palavras, parece não haver uma opção de linha de comando para matar o processo - tudo que posso fazer é matar o terminal.

Nos ambientes de linha de comando do Linux, obviamente não temos a opção 3. Então, as interrupções na linha de comando funcionam de maneira diferente? Existe outra maneira de matar processos que estou negligenciando? Qual é a opção de 'último recurso' para matar um processo Linux?

    
por Yarin 06.08.2012 / 00:35

2 respostas

5

O mesmo que no OS X: Enviar SIGKILL.

    
por 06.08.2012 / 00:45
0

Você pode tentar Ctrl + \ (barra invertida de controle), que envia o sinal QUIT. Isso geralmente funciona quando o SIGINT foi preso.

Às vezes, um processo ignora os sinais porque está parado.

Você pode usar algo assim para matar um processo normalmente, se possível:

KILL() {
  kill -CONT "$@"
  kill -TERM "$@"
  kill -HUP "$@"
  sleep 1
  kill -KILL "$@"
}

KILL 12345

Mesmo isso nem sempre funciona. Se houver algum erro de E / S , como um dispositivo ausente, por exemplo.

    
por 06.08.2012 / 09:40