프로그래밍/개발메모

리눅스 명령어로 검색해서 프로세스 종료 / ps + grep + awk + xargs + kill 조합

SIDNFT 2022. 3. 30. 22:43
반응형

 

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

 

보통 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

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

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

 

반응형