Como interrompo um script bash na linha de comando?

Como interrompo um script bash na linha de comando?

Eu tenho um script bash que uso para executar o XCode no OS X, o que leva vários minutos. Não consigo encontrar o comando chave para pará-lo se eu perceber um erro... no DOS estou acostumado Ctrl+C/ Ctrl+Zmas nenhum dos dois parece funcionar. O que estou procurando (no terminal OS X padrão)?

Responder1

Existem alguns pressionamentos de tecla que devem ajudá-lo aqui.

Ctrl+ Cdeve enviar o processo em primeiro plano SIGINT, e isso deve encerrar o processo, a menos que você capture o sinal com algo como trap INT ...em seu código shell.

Ctrl+ Zdeve enviar SIGSTOP, o que pausaria seu processo novamente, a menos que você capture seus sinais.

O mapeamento de sequências de teclas passa por alguns obstáculos, incluindo configurações de terminal. O que stty -adiz no seu computador? Procure na saída intr, esse é o pressionamento de tecla que deve acionar o SIGINT. Se nada estiver definido, você precisará configurá-lo, algo comostty intr ^C

Como já foi dito, você também pode encerrar o processo em outra janela.

Responder2

Se Ctrl+ Cnão estiver funcionando para você, você pode abrir uma nova guia Terminal e digitar

killall [process name]

onde [process name]está o nome do seu script bash (você pode encontrá-lo no Activity Monitor do OS X).

Responder3

Você pode tentar estas soluções:

  • experimente esta combinação de teclado: Ctrl+ AltGr+8
  • abra um novo terminal e executepkill -f script_name

Responder4

Para complementar o que outros usuários disseram, você também pode usar Ctrl+ \que envia SIGQUITe é o mesmo que, SIGINTexceto que também produz um core dump. Descobri que programas que ignoram SIGINTmuitas vezes não ignoram SIGQUIT.

Com base nopágina de manual para matar, você também pode enviar um SIGTERMou SIGKILLpara qualquer processo. Você faria isso encontrando seu processo na tabela de processos (type ps) e depois digitando kill -15 [pid]para enviar a SIGTERMou kill -9 [pid]para enviar a SIGKILL(SIGKILL não pode ser ignorado e encerrará o processo de qualquer maneira).

Fonte 1eFonte 2

informação relacionada