서버에서 실행 중인 프로세스를 종료할 수 없습니다.

서버에서 실행 중인 프로세스를 종료할 수 없습니다.

서버에서 R 콘솔을 실행했는데 프로세스가 예상보다 훨씬 오래 걸렸습니다. 그래서 ctrl+z로 닫으려고 했는데 성공하지 못했습니다. 드디어 터미널을 닫았습니다. 하지만 top 명령을 확인하면 프로세스가 여전히 존재합니다. 나는 kill을 사용했지만 프로세스를 종료하지는 않습니다. 상위 명령 출력:

 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 

홈페이지를 확인해 보니 ctrl+z를 누르면 프로세스가 백그라운드로 들어가는데 fg 명령이 작동하지 않는다는 분들도 계시더군요.

누구든지 도와줄 수 있나요?

답변1

명령을 실행 kill하고 프로세스 ID를 전달합니다(예: 귀하의 경우).

kill 27448

기본적으로 이는 프로세스를 종료하지만 프로그램이 신호 처리기를 설정하면 계속 실행될 수 있습니다. 프로세스가 계속 실행되면 다음을 사용하십시오.

kill -KILL 27448

(또는 이에 상응하는 kill -9 27448). KILL 신호는 포착할 수 없으며 항상 프로세스를 종료합니다. (어쩌면 즉시는 아닐 수도 있다그러나 긴 입력/출력을 수행하는 경우 프로세스가 종료됩니다. )

답변2

CTRL+는 Z프로세스를 종료하지 않고 실행을 일시 중지합니다(중지라고도 함). 이는 TSTP프로세스에 신호를 보내서 CONT재개할 수 있는 신호를 프로세스에 보냄으로써 수행됩니다.

kill -CONT <pid>

일시 중지되면 프로세스는 신호를 사용하여 프로세스가 재개될 때까지 기본적으로 전송되는 TERM신호 와 같은 다른 양호한 신호에 응답하지 않습니다. 이 시점에서 프로세스는 보류 중인 모든 신호를 즉시 처리합니다. 신호가 프로세스를 정상적으로 종료할 기회를 주지 않고 즉시 프로세스를 종료하는 경우는 예외입니다 .killCONTKILL

kill -KILL <pid>

이것은일반적으로 낙담프로세스가 일반적으로 수행하는 분해/정리 작업을 건너뛰기 때문입니다. 대신 포그라운드 프로세스에 CTRL+Z. CTRL+C이는 INT일반적으로 (항상은 아니지만) 신호와 유사한 동작을 갖는 프로세스에 신호를 보냅니다. TERM프로세스가 정상적으로 종료되어야 합니다.

Linux/bash 프로세스 작업 제어에 대해 자세히 읽을 수 있습니다.여기.

관련 정보