não pode matar um processo em execução no servidor [duplicado]

0

Eu executei um console R em nosso servidor, e o processo levou muito mais tempo do que eu esperava. Assim, eu estava tentando fechar por ctrl + z, não funcionou. Finalmente acabei de fechar o terminal. Mas o processo ainda está lá quando eu verifico os principais comandos. Eu usei matar, mas não vou matar o processo. A saída do comando principal:

 PID   USER     PR   NI  VIRT    RES    SHR  S  %CPU %MEM  TIME+ COMMAND     
27448 zhenyang  20   0 20.133g 0.020t 3.840g R 100.0 21.3  72:00.06 R 

Eu verifiquei o site e alguém disse que poderia ser ctrl + z colocar o processo em segundo plano, mas o comando fg não funcionará.

Alguém ajuda?

    
por concer guo 05.09.2016 / 09:12

2 respostas

1

Execute o comando kill e passe o ID do processo, ou seja, no seu caso

kill 27448

Por padrão, isso mata o processo, mas se o programa tiver configurado um manipulador de sinal, ele poderá continuar a ser executado. Se o processo continuar rodando, use

kill -KILL 27448

(ou equivalentemente kill -9 27448 ). O sinal KILL não pode ser capturado, sempre mata o processo. ( Talvez não imediatamente se o processo estiver fazendo alguma entrada longa / output, mas mata-o.)

    
por 06.09.2016 / 01:59
0

CTRL + Z não mata processos, suspende sua execução (também pára). Isso é feito enviando o sinal TSTP para o processo, que pode ser retomado enviando o sinal CONT para o processo.

kill -CONT <pid>

Uma vez suspenso, os processos não responderão a outros sinais legais como TERM (que é o que kill envia por padrão) até que o processo seja retomado com o sinal CONT - ponto no qual ele processará todos os pendentes sinaliza imediatamente. A exceção a isso é o sinal KILL , que mata imediatamente o processo sem dar a chance de terminar normalmente.

kill -KILL <pid>

Isto é geralmente desencorajado pois irá pular qualquer desmontagem / limpeza que o processo normalmente faz. Em vez de CTRL+Z , você deve usar CTRL+C para solicitar que o processo em primeiro plano termine. Isso envia o sinal INT para o processo que geralmente (nem sempre) tem um comportamento semelhante ao sinal TERM - ele pede que o processo seja encerrado normalmente.

Você pode ler mais sobre o controle de tarefas do processo linux / bash aqui .

    
por 05.09.2016 / 10:50

Tags