프로세스의 ID 찾기 및 종료


16

백그라운드 프로세스를 종료해야 할 때마다 ps -e | grep <process_name>

어떤는 다음과 같이 인쇄 1766 ? 00:00:13 conky에 그럼 난 프로세스 ID를 사용, kill너무 좋아 kill 1766.

이것을 단순화 할 수있는 방법이 있습니까? 더 빨리 만드시겠습니까? 타이핑의 양을 줄입니까?


1
나는 내가 원하는 대답을 얻었지만, 수락하기 전에 잠시 기다렸다가 커뮤니티가 다양한 옵션을 이용할 수 있도록합니다.
Gautam

더 많은 사람들이 답변으로부터 혜택을받을 수 있도록이 질문을 더 일반적으로 만들어주십시오.
Gautam

답변:


19

(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. killallSolaris에서 루트로 입력하지 마십시오 .


와우 당신의 대답은 매우 상세합니다. 가능한 경우 답변과 일치하도록 질문을 편집하십시오.
Gautam

@ GatamK 나는 질문이 확장되어야한다고 생각하지 않습니다. 그렇다면 직접 편집하십시오.
Gilles 'SO- 악의를 멈춰라'

투표 수가 가장 많은 답변 중 귀하의 답변이 더 자세한 내용을 제공하므로
동의

8
  • killall ProcessName (프로그램의 프로세스 이름을 항상 알 수 없다는 점에서이 명령의 단점이 있습니다).
  • pidof ProccessNamekill the result form pidof
  • ps xu | grep <process name> | grep -v grep | awk '{ print $2 }' | xargs kill -9 이 한 줄을 시도하여 bash의 히스토리에서 재사용하거나 별명을 작성하십시오.

두 번째 pidof는 조금 더 쉬운 것처럼 보이지만 여전히 2 단계로 진행됩니다.
Gautam

한 단계에서 거친 프로세스 이름으로 수행하는 한 줄 명령을 검색하거나 만들 수 있지만 긴 줄을 입력해야합니다 (위의 두 단계보다 어렵습니다) 또는 한 번 입력 할 수 있습니다 역사를 형성하여 재사용하십시오.
Hanan N.

@ GatamK 단일 명령 옵션으로 답변을 업데이트했습니다.
Hanan N.

6

Hanan은 몇 가지 좋은 제안을 제공하지만 pgrep/를 추가하겠습니다 pkill. 그들은 당신이 찾는 프로세스에 대해 훨씬 세밀하게 제어 할 수 있고, 당신이 죽여야 할 정확한 프로세스를 모른다면 정규 표현식을 허용합니다.

PS Hanan 은 백틱 pidof으로 kill직접 공급할 수 있습니다 .

kill `pidof processname`

pkill나는, 나는 대부분의 시간의 프로세스 이름을 알고에 대한 대부분의보고 정확히 무엇을했다 conky거나 firefox또는 chrome그런이나 뭐. 감사
Gautam

1

이건 어때 -

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.