서버에서 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
신호 와 같은 다른 양호한 신호에 응답하지 않습니다. 이 시점에서 프로세스는 보류 중인 모든 신호를 즉시 처리합니다. 신호가 프로세스를 정상적으로 종료할 기회를 주지 않고 즉시 프로세스를 종료하는 경우는 예외입니다 .kill
CONT
KILL
kill -KILL <pid>
이것은일반적으로 낙담프로세스가 일반적으로 수행하는 분해/정리 작업을 건너뛰기 때문입니다. 대신 포그라운드 프로세스에 CTRL+Z
. CTRL+C
이는 INT
일반적으로 (항상은 아니지만) 신호와 유사한 동작을 갖는 프로세스에 신호를 보냅니다. TERM
프로세스가 정상적으로 종료되어야 합니다.
Linux/bash 프로세스 작업 제어에 대해 자세히 읽을 수 있습니다.여기.