본문 바로가기
IT/linux

리눅스 특정 프로세스 전부 종료시키기 / ps, grep, awk, xargs, kill

by 어느해겨울 2022. 1. 19.

리눅스 특정 프로세스 전부 종료시키기

리눅스의 명령어들 ps, grep, awk, xargs, kill을 조합하여 특정 프로세스를 전부 종료시키는 예제를 해보겠다.


이번 명령어 실험 대상은 chrome으로 해보겠다.

ps -ef | grep chrome 명령으로 여러 개의 프로세스가 떠있는 걸 확인할 수 있다.

실제로 사용할 때는 chrome 이 아니라 원하는 프로세스명을 넣으면 된다.

muabow@muabow:~$ ps -ef | grep chrome
muabow   13759     1  2 13:32 ?        00:02:43 /opt/google/chrome/chrome
muabow   13770 13759  0 13:32 ?        00:00:00 /opt/google/chrome/chrome --type=zygote
muabow   13771 13770  0 13:32 ?        00:00:00 /opt/google/chrome/nacl_helper
muabow   13774 13770  0 13:32 ?        00:00:00 /opt/google/chrome/chrome --type=zygote
muabow   14016 13774  0 13:33 ?        00:00:01 /opt/google/chrome/chrome --type=renderer --lang=ko --force-fieldtrials=AffiliationBasedMatching/EnabledThroughFieldTrial/AppBannerTriggering/Aggressive/CaptivePortalInterstitial/Enabled/ChildAccountDetection/Disabled/*DataReductionProxyConfigService/Enabled/EnableSessionCrashedBubbleUI/Enabled/EnforceCTForProblematicRoots/disabled/LinuxObsoleteSystemIsEndOfTheLine/EndOfLine/PasswordBranding/SmartLockBrandingSavePromptOnly/*PasswordGeneration/Disabled/ReportCertificateErrors/ShowAndPossiblySend/SHA1IdentityUIWarning/Enabled/SHA1ToolbarUIJanuary2016/Warning/SHA1ToolbarUIJanuary2017/Error/SSLCommonNameMismatchHandling/Enabled/SafeBrowsingUnverifiedDownloads/DisableByParameterMostSbTypes2/Spellcheck/Default/*UMA-Population-Restrict/normal/ --instant-process --enable-offline-auto-reload --enable-offline-auto-reload-visible-only --blink-settings=fetchDeferLateScripts=true,fetchIncreaseFontPriority=true,fetchIncreasePriorities=true --num-raster-threads=1 --content-image-text
muabow   31845 14226  0 15:17 pts/9    00:00:00 grep --color=auto chrome

 

 

그럼 여기서 파이프를 하나 더 넣어 awk를 조합해보겠다.

awk {'print $2'}는 이전에 출력된 결과의 2번째 항목을 출력하겠단 의미이다.

항목은 공백(space)으로 구분(split)하고 1번째는 계정 정보인 muabow, 2번째는 pid, 3번째는 ppid 순으로 이뤄진다.

여기서 각 프로세스의 pid를 얻어야 kill을 할 수 있으니 awk {'print $2'}를 넣어서 pid 목록만 출력한 것이다.

muabow@muabow:~$ ps -ef | grep chrome | awk {'print $2'}
13759
13770
13771
13774
14016
31960

 

 

pid 목록까지 확보했으니 프로세스를 죽이는 kill 명령을 조합해보자.

xargs는 이전 출력을 인자로 사용한다는 의미이고 -9는 force를 의미한다. graceful 하게 종료까지 기다려주지 않고 그냥 메모리에서 내려버린다.

어쨌든 xargs kill -9 <pid>처럼 동작하는 것이다.

muabow@muabow:~$ ps -ef | grep chrome | awk {'print $2'} | xargs kill -9
muabow@muabow:~$

 

결과를 확인하기 위해 다시 한번 ps -ef | grep chrome을 실행해보자.

muabow@muabow:~$ ps -ef | grep chrome
muabow   32039 14226  0 15:18 pts/9    00:00:00 grep --color=auto chrome
muabow@muabow:~$

 

실행 중인 모든 프로세스가 종료된 것을 확인할 수 있다.

이렇게 ps, grep, awk, xargs를 조합하면 여러 작업에 응용할 수 있다.

 

끝.

 

 

댓글