ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리눅스 명령어로 검색해서 프로세스 종료 / ps + grep + awk + xargs + kill 조합
    프로그래밍/개발메모 2022. 3. 30. 22:43
    728x90
    반응형

     

    가끔 까먹기 때문에 저장해둡니다.

     

    보통 ps 로 프로세스 찾아 종료 할때 사용합니다.

     

    명령어

    ps -ef | grep "실행조건" | grep -v grep | awk '{ print $2 }' | xargs kill

     

    설명

    ps -ef 

    전체 실행 중인 프로세스 표시

    grep "실행 조건"

    실행중인 서버가 node express.js 로 실행중이라면 

    grep "node express.js" 로 찾으라는 의미

    참고로 node express.js 는 너무 흔한 이름이라 잘못 찾을 수 있으니 소스코드의 전체 경로로 복잡하게 실행하는걸 추천한다.

    node /home/user1/express.js 실행할때 이런식으로 길게 실행해야 엉뚱한 프로세스를 kill 하는걸 방지할 수 있을 것이다.

     

    grep -v grep

    grep 으로 검색하다보면 색깔 넣으려고 자동으로 몇가지 옵션이 들어간다.

    -v 는 그걸 빼라는 건데 그중에 ps -ef 중에 grep 들어간걸 빼라는 뜻이다

    여러 사용자들이 grep 을 사용하고 있을테니 아무거나 막 kill 해버리지 않기 위해 제외하는게 좋다.

    예를 들어 다른 사용자가 tail 과 grep 조합으로 로그를 검색하고 있는중에
    내가 grep 명령어를 죽여버린다면 다른 사람들의 명령어를 죽여버리는 사태가 발생한다.

    적고나니 좋다 정도가 아니라 필수다.

     

    awk '{ print $2 }

    예를들어 ps -ef 뽑아낸 줄이

    user1         1234        5678 ~~~ 이라면

    $1 은 user1
    $2 은 1234
    를 뽑는다.

    kill 은 두번째 값을 필요로 하니 $2 로 그것만 뽑겟다는 뜻이다.

     

    xargs kill

    마지막으로 kill 이다.

    kill 숫자 가와하는데 

    xargs 가 이 문제를 해결해준다.

    awk 에서 숫자를 뽑아온걸 kill 명령어랑 조합한다.

    예를들어 
    명령어: echo world | xargs echo hello
    결과: hello world

    이런식으로 앞에서 나온 결과를 명령어 뒤에다 붙여준다.

    오래된 로그 지우기 같은 명령에 이런 좋합을 쓰니 중요해서 메모해둔다.

     

    반응형
Designed by Tistory.