2009-12-13 3 views
3

임의의 프로세스를 이름 (예 : 임의의 펄 프로세스)으로 종료 할 수있는 방법이 필요합니다.임의의 프로세스를 이름으로 살살

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 다음, 임의의 줄 번호를 찾아 두 번째 열 (프로세스 ID?)를받을 수 있도록 죽일 파일로

ps aux | grep PROCESS-NAME 

:

나는 이런 식으로 뭔가를 사용 thinkign이었다.

내 용도로는 프로세스 중 하나를 죽이면 실제로 임의의 하나 일 필요는 없습니다. 무작위로 만들면 더 나아질 것입니다.

+1

에서 영감을 당신은에 Serverfault에이 질문에 대한 좋은 답변을 얻을 수 있습니다. 이 질문은 http : // serverfault에 거의 중복되어 있습니다.com/questions/71360/find-and-kill-old-processes –

+0

아아아, 나는 결코 거기를 보려고 생각하지 않았다. 지난 주에 ServerFault를 사용하기 시작했습니다. 나는 Google을 검사하고 그것을 찾을 수 없었다. – Hintswen

답변

4

배쉬

kill `ps auxww | grep zsh | awk '{print $2}' | while read line; do echo "$RANDOM $line"; done | sort | cut -d ' ' -f 2 | head -n 1` 
+0

이제 멋진 것. 하나의 라이너가 좋아요! 메모장에 저장하여 스크립트로 저장하지 않고 필요할 때 붙여 넣을 수 있습니다. – Hintswen

+0

당신은 copypasting보다는 별칭을 만들 수 있습니다, 그렇죠? –

+1

-1 너무 많은 중복 도구를 사용하고 불필요한 배관을 사용합니다. – ghostdog74

7

killall 명령의 -r 옵션을보십시오!

+0

그것과 일치하는 모든 프로세스를 죽이지 않습니까? – Hintswen

+0

@Hintswen : 의도 한 기능이 아니기 때문에 이름으로 프로세스가 삭제 되었습니까? 다른 말로하면 : 나는 당신이 무엇을 요구하고 있는지 이해하지 못한다고 생각합니다! – lexu

+0

동일한 이름을 가진 여러 프로세스가있는 특정 이름의 단일 프로세스를 종료하려고합니다. 죽은 사람은 무작위로 선택해야합니다. 나는 그들 모두가 죽는 것을 원하지 않는다. – Hintswen

0

이미 옳은 길을 걷고있는 것처럼 들렸습니다.

가 가

하면, 다음과 같은 펄 스크립트를 사용하여 그것으로 파이프 뭐죠에서 임의의 행을 반환하는, randomline.pl로 저장할 수 있습니다

#!/usr/bin/perl 
srand (time^$$^unpack "%L*", `ps axww | gzip`); 
while (<>) { push(@_,$_); } print @_[rand()*@_]; 

다음 kill 명령

보내 다음 명령을 실행
kill `ps aux | grep PROCESS-NAME | perl randomline.pl | awk '{print $2}'` 

프로세스 이름과 일치하는 루트 수준 프로세스를 죽이지 않으려면 root 용 반전 된 grep을 사용하여 일부 검사를 추가 할 수도 있습니다.

+0

점검에 좋은 아이디어입니다. – Hintswen

2

도 죽일하는 데 사용할 수있는 '이것들을 pidof'명령, 거기 P는 한 줄은 :

kill `pidof processname` 

여러가 단지 하나 개의 프로세스를 얻으려면 같은 이름으로 "single shot"에 -s를 사용하십시오.

+0

실 거예요, 같은 이름의 여러 프로세스 ... 그래서 그들은 모두 동시에 죽을 것입니다. – Hintswen

+0

좋은 지적. 내 의견을 편집하여 awk에 파이프하여 단일 프로세스를 단일화하는 방법을 보여줄 것입니다. –

+0

실제로 스위치가 있습니다. 해당 옵션을 추가하려면 내 의견을 편집 –

0

그냥 죽이고 awk.

kill $(ps -eo cmd,pid|awk '/zsh/&&!/awk/{pid[$NF]}END{for(i in pid){print i;exit}}') 

는 끝 블록에서 루프 당신에게 최근 bash 쉘과

0

을 죽일 수있는 임의의 PID를 줄 것이다

#!/bin/bash 
declare -a pid 
pid=($(pidof myprocess)) 
length=${#pid} 
rnumber=$((RANDOM%length+1)) 
rand=$((rnumber-1)) 
kill ${pid[$rand]} 
+0

왜 1을 더하고 1을 뺀 것입니까? –

+0

1을 생성하여 생성 된 rand 번호가 상한을 포함하도록합니다. pid 배열 인덱스가 0부터 시작하기 때문에 -1이됩니다. – ghostdog74

0

어떻게 pgrep을하고 pkill에 사용에 대한. 이 옵션을 사용하면 많은 옵션을 통해 프로세스를 선택할 수 있습니다. 이름 "my_proc_name"와

0

죽 과정 :

kill -9 `ps xf | grep my_proc_name | grep -v grep | cut -d " " -f 1` 
0
어쩌면 주제 오프

,하지만 난 Cygwin에서에서이를 사용합니다. Lev Victorovich Priyma’s answer

ps -W | awk '/calc.exe/,NF=1' | xargs kill -f 

또는

ps -W | awk '$0~z,NF=1' z=calc.exe | xargs kill -f 
관련 문제