Como outras respostas já explicaram, Ctrl + C não mata o Nano porque a entrada de nano
ainda está vindo do terminal, e o terminal está ainda o terminal de controle de nano
, então Nano está colocando o terminal no modo raw onde os caracteres de controle como Ctrl + C são transmitidos para o programa e não são interceptados pelo terminal para gerar sinais.
Quando interceptado pelo terminal, Ctrl + C gera um sinal SIGINT . Se você conhece o ID de processo de nano
(você pode descobrir com ps u -C nano
(Linux ps
syntax) ou pgrep nano
ou outro utilitário de listagem de processos), você pode enviar este sinal com kill -INT 12345
onde 12345 é o PID. No entanto, SIGINT convencionalmente significa “retornar ao loop principal”, e o Nano não sai quando recebe o SIGINT. Em vez disso, envie SIGTERM , que significa "finalizar normalmente"; este é o sinal padrão, então você pode apenas executar kill 12345
. Outra possibilidade é kill -HUP 12345
; SIGHUP significa "você não tem mais um terminal, saia com graça, a menos que você possa viver sem". Se tudo mais falhar, envie SIGKILL ( kill -KILL 12345
, ou famosa kill -9 12345
), que mata o programa se quer morrer ou não.
Muitos programas, incluindo o Nano, reconhecem Ctrl + Z para suspender. Esta é a mesma sequência que envia o sinal SIGTSTP . Se o programa reconhecer essa chave de controle, você recebe de volta um prompt do shell e, como o programa se torna um job em segundo plano, você pode facilmente eliminá-lo com kill %%
(que envia um sinal para o último trabalho) .
Com o Nano, há um substituto way : envia a sequência de teclas de saída, ou seja, Ctrl + X seguido, se necessário, por N para “não salvar” . Mas, em geral, lembre-se disso:
- Tente Ctrl + Z seguido por
kill %%
, e se isso não matar o programakill -9 %%
. - Se a Ctrl + Z não funcionou, mude para outro terminal, encontre o ID do processo (você pode usar
ps -t pts/42
para listar os processos em execução no terminal/dev/pts/42
) e mate-o.