여러 번 소생하는 ​​과정을 영원히 죽이십시오.

솔직히 더 좋은 방법이 절대적으로 있다고 생각합니다.
그러나 비망록으로 남겨 둡니다.

시간을 낭비하고 싶지 않은 사람들을 위한 요약


  • 수행 한 작업 : PID를 얻고 무한 루프로 영원히 kill

  • 하고 싶은 일



    kill해도 kill해도 소생하는 ​​특정의 프로세스를 kill 해 계속하고 싶다.
    프로세스는 백그라운드에서 주기적으로 시작될 수 있습니다.
    환경: macOS Catalina

    우선은 프로세스명을 조사한다



    Applications > Utilities에서 활동 모니터를 열고 프로세스 이름을 확인하십시오.


    해보자



    내용 정리



    프로세스 이름을 알면, 원하는 작업을 정리합니다.
    하고 싶은 건
  • kill하더라도 즉시 되살아나는 특정 프로세스를 kill 계속

  • 라는 것입니다.
    그러므로 처리로서는
  • ps aux | grep ProcessName에서 프로세스가 실행 중인지 확인하고 실행중인 경우 kill합니다.

    라는 것으로 괜찮을 것 같습니다. 그럼 스크립트를 작성할 것입니다.

    구현


    #!/bin/bash
    
    while true;
    do
        # ProcessNameには殺したいプロセスの名前を入れてください
        TARGETPID=`ps aux | grep ProcessName | grep -v grep | awk '{print $2}'`
    
        if [ -n "$TARGETPID" ]; then
            `kill -9 ${TARGETPID}`
        fi
    
        sleep 5
    done
    

    보시다시피 그냥 무한 루프입니다. (어쩐지 5초 간격으로 해 보았다)
  • ps aux | grep ProcessName에서 프로세스 확인
  • grep -v grep에서 자신의 결과는 제외
  • awk '{print $2}'에서 PID만 추출
  • ↑ 결과를 일단 변수에 저장하고 비어 있지 않으면 kill한다

  • 라는 것을 하고 있습니다.
    5 초 간격으로하고 있습니다 만, 1 초마다 간격을 두지 않더라도이 정도의 처리라면 별로 좋다고 생각합니다.

    Operation Not Permitted



    kill하려고 하면 이 메시지가 표시될 수 있습니다.
    그런 경우에는 일단 sudo에서 kill을 시도하면 좋을지도 모릅니다. (sudo kill or sudo kill -9)
    #PIDには殺したいプロセスのIDを入れてください
    
    sudo kill PID
    #もしくは
    sudo kill -9 PID
    

    그래도 무리라면 mac의 root 유저로 로그인하고, 그 유저로 실행하면 kill 할 수 있을지도......(확인하지 않기 때문에 뭐라고 말할 수 없다)

    좋은 웹페이지 즐겨찾기