Linux,Unix,BSD

[bash] 특정 프로세스 일괄중지(kill) 스크립트

채윤아빠 2021. 5. 2. 23:56
728x90
반응형

ps, grep, awk와 kill 조합

ps 명령과 grep 명령의 조합으로 원하는 프로세스 ID를 찾을 수 있습니다.

pi@raspberrypi: $ ps -efgrep main
pi        1510  1486  0 17:53 ?        00:00:00 python3 src/m_main.py
pi        1511  1510 99 17:53 ?        00:29:48 python3 src/m_main.py
pi        1512  1510 44 17:53 ?        00:10:00 python3 src/m_main.py
pi        1513  1510 99 17:53 ?        00:23:52 python3 src/m_main.py
pi        1915  1197  0 18:15 pts/0    00:00:00 grep --color=auto main

마지막의 grep가 나타나지 않도록 하고, awk 명령을 이용하여 프로세스 ID만 출력하면 다음과 같습니다.

pi@raspberrypi: $ ps -efgrep maingrep -v grepawk '{print $2}'
1510
1511
1512
1513

위 프로세스 ID 결과를 다음과 같이 kill 명령으로 전달하면 해당 프로세스들이 일괄 중지됩니다.

pi@raspberrypi: $ kill `ps -efgrep maingrep -v grepawk '{print $2}'`

pgrep과 kill 조합

pgrep 명령(ps + grep)을 이용하면 위 ps 명령 조합 보다 단순하게 다음과 같이 쉽게 프로세스 ID를 찾을 수 있습니다.

pi@raspberrypi: $ pgrep -f my_program
940
941
942
943

다음과 같이 pgrep 명령 결과를 kill 명령과 조합하여 특정 프로세스를 모두 일괄 중지합니다.

pi@raspberrypi: $ kill -9 `pgrep -f my_program`

스크립트 작성

다음과 같이 스크립트 작성하여, 활용하였습니다. ; ~/bin/kill-my_process.sh


#!/bin/bash

PRODUCT_CODE=program_name
INSTALL_PATH=~/my_product/${PRODUCT_CODE}

kill -9 `pgrep -f ${PRODUCT_CODE}`

참고자료