백그라운드 프로세스를 종료해야 할 때마다 ps -e | grep <process_name>
어떤는 다음과 같이 인쇄 1766 ? 00:00:13 conky
에 그럼 난 프로세스 ID를 사용, kill
너무 좋아 kill 1766
.
이것을 단순화 할 수있는 방법이 있습니까? 더 빨리 만드시겠습니까? 타이핑의 양을 줄입니까?
백그라운드 프로세스를 종료해야 할 때마다 ps -e | grep <process_name>
어떤는 다음과 같이 인쇄 1766 ? 00:00:13 conky
에 그럼 난 프로세스 ID를 사용, kill
너무 좋아 kill 1766
.
이것을 단순화 할 수있는 방법이 있습니까? 더 빨리 만드시겠습니까? 타이핑의 양을 줄입니까?
답변:
(TL, DR : pgrep
, pkill
)
많은 유닉스가 함께 변형 pgrep
과 그 동반자 pkill
: 솔라리스 , 리눅스 (의 일부 표준 프로세스 유틸리티 임베디드 리눅스 시스템에서 존재하지 않을 수있다), FreeBSD의 , 오픈 BSD , NetBSD에 , ...하지만 단지 OS X에서 MacPorts를에서 , 하지 AIX 및 단지 최근 HP-UX에서 . 이 pgrep
유틸리티는 이름, 사용자 및 기타 몇 가지 기준으로 일치하는 프로세스의 프로세스 ID를 보여줍니다. 인수 pgrep
는 프로세스 실행 파일 이름의 일부와 일치해야하는 정규 표현식으로 해석됩니다 (이 옵션을 변경하는 옵션을 전달하지 않는 한). pkill
대신에 전화하면pgrep
유틸리티는 프로세스 ID를 표시하는 대신 신호를 보냅니다.
또 다른 유사한 유틸리티는 pidof 입니다. 에 리눅스 , 그것은에 의해 제공되는 것 SysVinit에서 또는 비지 박스 (자주가없는 임베디드 리눅스 시스템을 찾을 수 있도록 pgrep
); 다른 유닉스 변종에도 포트가 있습니다. 이 pidof
유틸리티에는 더 적은 옵션이 있으며 전체 실행 파일 이름과 만 일치합니다. 컴패니언 유틸리티 killall
는 일치하는 프로그램에 신호를 보냅니다 ¹.
¹ Solaris 및 다른 유닉스 변형에서 다른 의미
를 갖는 것을 주의하십시오 killall
. killall
Solaris에서 루트로 입력하지 마십시오 .
killall ProcessName
(프로그램의 프로세스 이름을 항상 알 수 없다는 점에서이 명령의 단점이 있습니다).pidof ProccessName
과 kill the result form pidof
ps xu | grep <process name> | grep -v grep | awk '{ print $2 }' | xargs kill -9
이 한 줄을 시도하여 bash의 히스토리에서 재사용하거나 별명을 작성하십시오.pidof
는 조금 더 쉬운 것처럼 보이지만 여전히 2 단계로 진행됩니다.
이건 어때 -
ps -e | awk '$4~/<process name>/{print $1}' | xargs kill
예:
[jaypal:~/Temp] sleep 100&
[1] 74863
[jaypal:~/Temp] ps -e | awk '$4~/sleep/{print $1}' | xargs kill
[1]+ Terminated: 15 sleep 100
최신 정보:
그 일을하는 좋은 방법이를 추가하는 것입니다, 그래서 죄송합니다,이 분명히 덜 입력의 요구 사항을 충족하지 않는 function
당신에게 .bashrc
, .profile
또는 무엇이든 시작 스크립트. 기능은 다음과 같습니다.
killp() {
awk -v pname="$1" '($4==pname){print $1}' <(ps -e) | xargs kill
}
추가 한 후에는 프로세스 이름을 간단히 전달할 수 있습니다.
[jaypal:~] sleep 100&
[1] 77212
[jaypal:~] killp sleep
[1]+ Terminated: 15 sleep 100