이름이 좋은 데몬을 죽이는 방법?


16

나는 보통로 프로세스를 죽인다 killall.

killall markdoc

그러나이 명령이 프로세스를 정상적으로 종료하는지 확실하지 않습니다. 이 명령이 정상적으로 종료됩니까? 그렇지 않다면 어떻게 이름을 가진 프로세스를 정상적으로 죽일 수 있습니까?


배포판에 start-stop-daemon이 있습니까?
manatwork

내가 사용하고 우분투 10.04 LTS 서버 64을 . 그 데몬은 무엇입니까?
Eonil

데몬을 시작 / 중지하고 pid 파일과 같은 관련 정보를 관리하기위한 일반적인 도구입니다. 우분투에 있으며, man 페이지를 참조하십시오 .
manatwork

답변:


19

당신의 질문은 명확하지 않습니다, 당신은 제목에서 데몬에 대해 이야기하지만 본문에서는 일반적인 프로세스에 대해서만 이야기합니다.

데몬의 경우 데비안과 같이 데몬을 중지시키는 특별한 방법이 있습니다.

    service daemon-name stop

또는

    /etc/init.d/daemon-name stop

다른 배포판 / OS에서 사용되는 다른 initscript 표준에 대해서도 비슷한 구문이 있습니다.

비 데몬 프로세스를 종료하려면 제어 할 수없는 방식으로 가정 killall하거나 pkill, 기본적으로 SIGTERM(15) 신호 를 사용한다고 가정 할 때 또는를 안전하게 사용할 수 있으며 , 적절하게 작성된 모든 응용 프로그램은이 신호를 수신하면 정상적으로 종료해야합니다. . 동일한 이름을 가진 프로세스가 많은 경우 이러한 유틸리티가 하나 이상의 프로세스를 종료 할 수 있다는 점을 고려하십시오.

그래도 문제가 해결되지 않으면 SIGINT(2), SIGHUP(1) 및 마지막 수단으로 시도하십시오 SIGKILL(9). 이 마지막 신호는 응용 프로그램에서 포착 할 수 없으므로 정리를 수행 할 수 없습니다. 이러한 이유로 가능할 때마다 피해야합니다.

모두 pkillkillall같이 형식의 신호 매개 변수를 승인합니다 -NAME.

pkill -INT process-name

감사합니다. 사실 내 원래의 질문에 대한이었다 markdoc serve &svnserve -d. 나는 일종의 데몬이라고 생각하지만, 나에게는 확실하지 않았다 :)
Eonil

killall살인자입니다!
xdevs23

3

BSD와 같은 배포판 및 기타 배포판에서 /etc/rc.d/에는 대개 시스템의 데몬 시작, 재시작 및 중지를 관리하는 스크립트가 있습니다. 데몬을 멈추려면 다음과 같이 절대 경로를 사용하여 스크립트를 호출하십시오.

# /etc/rc.d/acpid stop

또는 다음 명령을 사용하십시오.

# rc.d stop acpid

시스템 시작 및 중지 데몬을 보여주기 위해이 스크립트를 사용하는 것이 좋습니다.

#!/bin/bash

chk_status(){
  target=$1
  if [[ $target != "functions" && $target !=  "functions.d" ]]
  then
    if [[ -f "/var/run/daemons/$target" ]]
     then
       stat="\e[1;32m[RUNNING]"
     else
       stat="\e[1;31m[STOPPED]"
     fi

    printf "$stat \t\e[1;34m$target\e[0;0m\n"
  fi
}

daemons=($(for daemon in /etc/rc.d/*; do echo "${daemon#\/etc\/rc.d\/}"; done))

if [[ $1 != "" ]]
then
 chk_status $1
else
 for d in "${daemons[@]}"; do
   chk_status $d
 done | sort
fi

0

스크립트에서 killproc사용 가능한 기능을 확인 /etc/init.d/functions하고 파일을 소싱 한 후 해당 기능을 사용하십시오. 또는 사용 pgreppkill유틸리티가 intendedly 작동 여부를 확인하고 사용할 수 있습니다. 예 : pkill -SIGTERM mysqldmysqld가 안전한 종료를 수행하고 데이터베이스를 디스크로 플러시하기 전에 TERM 강제 종료 신호를 전송하여 강제 종료합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.