데몬으로 실행 중인 프로그램을 중지하는 방법

데몬으로 실행 중인 프로그램을 중지하는 방법

iperf데몬 모드로 시작했는데 이제 iperf -s -D서비스를 중지하고 싶습니다. 사용해 보았지만 sudo kill pid작동하지도 않고 불평하지도 않습니다. 확인해 보니 데몬은 여전히 ​​실행 중이었습니다 ps -ef | grep iperf.

리눅스에서 시작하는 것이 아니기 때문에 service다른 데몬처럼 찾을 수가 없습니다.

어떻게 막을 수 있나요?

답변1

사용하지 마세요 kill -9! 이 명령은 특정 극단적인 상황에서만 적용됩니다.

매뉴얼 페이지에 따르면(내 Solaris 시스템의 경우):

DESCRIPTION
 The kill utility sends a signal to the process or  processes
 specified by each pid operand.

 For each pid operand, the kill utility will perform  actions
 equivalent to the kill(2) function called with the following
 arguments:

 1.  The value of the pid operand will be  used  as  the  pid
     argument.

 2.  The sig argument  is  the  value  specified  by  the  -s
     option,  the  -signal_name option, or the -signal_number
     option, or, if none of these options  is  specified,  by
     SIGTERM.

 The signaled process must belong to the current user  unless
 the user is the super-user.

신호를 지정하지 않으면 kill은 kill -15SIGTERM()을 프로세스에 보냅니다. SIGKILL() 보다 더 폭력적인 신호를 보낼 수 있습니다 kill -9.

왜 kill -9를 피해야 합니까?

SIGKILL은 매우 폭력적인 신호입니다. 프로세스가 이를 포착할 수 없습니다. 즉, 이를 수신하는 프로세스는 즉시 모든 것을 버리고 종료해야 함을 의미합니다. 잠긴 리소스(예: 네트워크 소켓 또는 파일)를 해제하는 데 시간을 소비할 필요가 없으며 다른 프로세스에 종료를 알릴 필요도 없습니다. 종종 컴퓨터가 불안정한 상태에 놓이게 됩니다. 비유하자면 SIGKILL을 사용하여 프로세스를 종료하는 것은 (명령 대신) 전원 버튼을 사용하여 컴퓨터를 종료하는 것만큼 나쁘다고 말할 수 있습니다 shutdown.

실제로 SIGKILL은 다음과 같아야 합니다.최대한 피하세요. 대신, 기사에서 언급한 대로 kill -2그래도 작동하지 않으면 시도해 보는 것이 좋습니다 kill -1.

나는 사람들이 항상 SIGKILL을 보내고 싶어하는 것을 보았습니다(일일 정리 스크립트에서도!). 나는 매일 그 문제로 팀원들과 논쟁을 벌인다. kill -9맹목적으로 사용 하지 마십시오 .

답변2

iperf이 프로세스가 "종료" 신호( kill <pid>명령에서 보낸 기본 신호) 에 응답하지 않는 것 같기 때문입니다 . 이는 일반적으로 어떤 이유로 프로세스가 충돌했거나 입력/출력 액세스가 중단되었음을 의미합니다.

좀 더 폭력적으로 "KILL" 신호를 보내면 됩니다.

kill -9 <pid>

또는

kill -KILL <pid>

이렇게 하면 프로세스가 제대로 완료될 때까지 기다리지 않고 프로세스가 종료됩니다.

답변3

일반적으로 권장되지는 않지만 언제든지 kill -9 <pid>실제로 프로세스를 종료할 수 있습니다. 그러나 프로세스를 강제 종료한다는 점을 이해하는 것이 중요합니다.아니요우아하게 종료합니다.

답변4

제안된 신호 번호 1과 같은 신호를 보내 iperf3데몬 모드에서 시작을 중지할 수 있는 옵션이 있습니다.-DSIGHUP라무의 답변):

pkill -HUP iperf3

또는

pkill -1 iperf3

관련 정보