주어진 부분 이름으로 모든 프로세스를 종료하는 방법은 무엇입니까?
내가 얻는 모든 프로세스를 죽이고 싶습니다.
ps aux | grep my_pattern
어떻게합니까?
작동하지 않습니다.
pkill my_pattern
pkill -f
명령 줄의 모든 부분에 대한 패턴과 일치하는을 사용하십시오 .
pkill -f my_pattern
"myProcessName"문자열과 일치하는 모든 프로세스를 종료하십시오.
ps -ef | grep 'myProcessName' | grep -v grep | awk '{print $2}' | xargs -r kill -9
이 코드는 무엇을하고 있습니까?
는 ps -ef
이 사용자에게 표시 컴퓨터에서 처리 ID의 목록을 생성합니다. 파이프 그렙은 해당 문자열이 포함 된 행을 필터링합니다. 는 grep -v grep
grepping을 수행하는 과정 자체에 일치하지 않는 말했다. 파이프 awk 인쇄는 기본 구분 기호 공백의 행을 분할하고 프로세스 ID 인 두 번째 열로 필터링한다고 말합니다. 파이프 xargs는 모든 pid를 보내기 위해 새로운 프로세스를 시작하여 kill -9
끝납니다.
위의 코드는 몇 가지 이유로 나쁘고 위험하며 추악하고 해킹 적입니다.
강제 종료되는 코드가 확률이 낮은 경쟁 조건으로 데이터베이스 운영 또는 보안 트랜잭션을 수행하는 경우 시간의 일부, 시간의 일부, 해당 트랜잭션의 원 자성이 손상되어 정의되지 않은 동작이 생성됩니다. kill -9는 죄수를 취하지 않습니다. 코드가이 코드에 민감한 경우
xargs kill
부품을 정상적인 종료를 요청하는 전송 된 플래그로 교체하고 해당 요청이 거부 된 경우에만kill -9
실수로 운영 체제를 종료하거나 관련이없는 프로세스에서 정의되지 않은 동작
ps -ef
을 유발할 가능성은 0이 아닙니다. 존재할 수있는 모든 가능한 프로세스를 나열 하기 때문에 전체 시스템이 불안정해질 수 있으며 이상한 타사 라이브러리가 프로세스 이름 또는 read와 execute kill -9 사이의 시간에 processid가 다른 것으로 변경되었으며, 실수로 의도하지 않은 임의의 임의의 프로세스를 종료했습니다.
그러나 매우 고유 한 이름으로 위험과 통제를 이해하고 몇 번의 트랜잭션 삭제 또는 가끔 데이터 손상이 발생하면 99.9 %가 괜찮을 것입니다. 문제가있는 경우 컴퓨터를 재부팅하고 프로세스 충돌이 없는지 확인하십시오. 기술 지원 스크립트 "컴퓨터를 다시 시작해 보셨습니까?"라는 수준의 코드가 5와 같은 수준이기 때문입니다.
공정 선택시 유연성이 더 필요한 경우
for KILLPID in `ps ax | grep 'my_pattern' | awk ' { print $1;}'`; do
kill -9 $KILLPID;
done
grep -e 등을 사용할 수 있습니다.
다음 명령을 사용하여 프로세스를 나열 할 수 있습니다
ps aux | grep -c myProcessName
해당 프로세스 수를 확인 해야하는 경우 다음을 실행하십시오.
ps aux | grep -c myProcessName |grep -v grep
그 후 다음을 사용하여 프로세스를 종료 할 수 있습니다
kill -9 $(ps aux | grep -e myProcessName | awk '{ print $2 }')
또한 사용할 수 있습니다 killall -r my_pattern
. -r
프로세스 이름 패턴을 확장 정규식으로 해석하십시오.
killall -r my_pattern
pkill -f PATTERN
약간 위험한 것으로 판단되면 , ezkill bash 스크립트를 작성하여 죽이려는 패턴과 일치하는 프로세스 중에서 선택하는 프로세스를 선택하십시오.
다음 명령을 사용하여
kill -9 $(ps aux | grep 'process' | grep -v 'grep' | awk '{print $2}')
프로세스 ID를 찾는 데 어려움을 겪지 않으려면 regexp를 사용하여 이름으로 프로세스를 종료하십시오. 예를 들어 코드를 따라 크롬을 죽이는 것은 트릭입니다.
killall -r --regexp chrome
다음 명령을 사용하여 다음을 수행 할 수 있습니다.
ps -ef | grep -i myprocess | awk {'print $2'} | xargs kill -9
또는
ps -aux | grep -i myprocess | awk {'print $2'} | xargs kill -9
그것은 나를 위해 작동합니다.
나쁜 소리?
pkill `pidof myprocess`
예:
# kill all java processes
pkill `pidof java`
그것은 사용하는 것이 가장 안전한이다 pgrep -f
와 함께 kill
, 또는 단지 pkill -f
, grep
보내고 ps
'의 출력은 잘못 될 수 있습니다.
패턴 트릭 ps | grep
을 추가 | grep -v
하거나 사용하여 grep 라인을 필터링 해야하는 사용 과 달리 pgrep
디자인에 따라 선택되지 않습니다.
또한, 사용자의 패턴에 표시됩니다 ps
의 ' UID
/ USER
, SDATE
/ START
또는 기타 열, 당신은 출력에서 원하지 않는 프로세스를 얻을 그들을 죽일 것 pgrep
+ pkill
이 결함으로 고생하지 않습니다.
또한 그 발견 killall -r
/ -regexp
내 정규 표현식으로 작동하지 않았다.
pkill -f "^python3 path/to/my_script$"
' pkill '을 지원하지 않는 서버에 가장 적합한 방법을 찾았습니다.
" kill -9 $ (ps ax | grep My_pattern | fgrep -v grep | awk '{print $ 1}') "
반복 할 필요는 없습니다.
참고 URL : https://stackoverflow.com/questions/8987037/how-to-kill-all-processes-with-a-given-partial-name
'Programing' 카테고리의 다른 글
Python : 어떤 OS를 실행하고 있습니까? (0) | 2020.02.10 |
---|---|
JavaScript에서 연관 배열 / 해싱을 수행하는 방법 (0) | 2020.02.10 |
UITextField 텍스트 변경 이벤트 (0) | 2020.02.10 |
nullptr은 정확히 무엇입니까? (0) | 2020.02.10 |
Babel 6 재생기 런타임이 정의되지 않았습니다 (0) | 2020.02.09 |