2011-06-14 5 views
2

나는 이름이 같지만 PID가 다른 2 개의 프로세스가있다. 나는 이들 중 가장 낮은 PID를 가진 프로세스를 찾아서 죽일 필요가있다. 어떻게해야합니까?유닉스에서 가장 낮은 PID로 프로세스를 죽이는 것

+0

자동화 된 솔루션을 원하십니까? 또는 단지 ps의 출력에 안구를 붙여서 pid를 얻고 싶습니까? –

답변

6

조금 인위적인, 그러나 이것은 (예제로 사용 bash는) 트릭을 수행합니다

pidof bash | grep -o "[0-9]*" | sort -n | sed '1q' 

또는

pidof bash | tr -s " " "\n" | sort -n | sed '1q' 

는 "가장 낮은 PID는"정말 의미하지 않는다는 것을 명심 시작부터 순서와 관련하여 아무 것도하지 않는 한 최대 사용량에서 낮은 사용되지 않은 숫자로 다시 돌아갈 수있는 프로세스가 없습니다. 더 나은 (그리고 아마도 더 복잡한) 방법은 오래된 프로세스 또는 새로운 프로세스 중 하나를 죽이는 것이고, 어느 프로세스가 나쁜지에 따라 다릅니다. 당신은/proc 디렉토리 디렉토리 일부 여기에 영감을 How do you kill all Linux processes that are older than a certain age?

0

유닉스, 또는 * nix에서 스크립트를 찾을 수 있습니다

?

/proc 지원이있는 경우/proc/[0-9] +/cmdline을 구문 분석하여 원하는 명령과 일치하는 프로세스를 찾습니다. 디렉토리 이름 (/ proc 뒤에)은 id입니다.

opendir() 및 readdir()은 디렉토리를 통해 구문 분석하는 도구입니다.

/proc을 지원하지 않으면 popen ("ps -options here", "r"); ps (어떤 옵션이 시스템에 적절한 지)의 출력을 읽어 프로세스 목록을 분석합니다.

관련 문제