[linux] PID 대신 이름으로 프로세스를 종료하려면 어떻게해야합니까?

때때로 Firefox를 시작하려고하면 “Firefox 프로세스가 이미 실행 중입니다”라고 표시됩니다. 그래서 나는 이것을해야합니다 :

jeremy@jeremy-desktop:~$ ps aux | grep firefox
jeremy    7451 25.0 27.4 170536 65680 ?        Sl   22:39   1:18 /usr/lib/firefox-3.0.1/firefox
jeremy    7578  0.0  0.3   3004   768 pts/0    S+   22:44   0:00 grep firefox
jeremy@jeremy-desktop:~$ kill 7451

내가 원하는 것은 나를 위해 모든 것을 할 명령입니다. 입력 문자열과 grep프로세스 목록에서 (또는 무엇이든) 가져 와서 출력의 모든 프로세스를 종료합니다.

jeremy@jeremy-desktop:~$ killbyname firefox

PHP에서 시도했지만 PHP 스크립트 자체에서 exec('ps aux')실행 된 프로세스 만 표시하는 것 같습니다 exec()(따라서 표시되는 유일한 프로세스는 자체입니다).



답변

pkill firefox

자세한 정보 : http://linux.about.com/library/cmd/blcmdl1_pkill.htm


답변

사용 가능 :

pkill -f "Process name"

나를 위해, 그것은 완벽하게 일했습니다. 내가 찾던 것입니다. pkill은 플래그 없이는 이름으로 작동하지 않습니다.

되면 -f설정된 전체 명령 라인 패턴 매칭에 사용된다.


답변

당신은 이름 으로 프로세스를 죽일 수 있습니다killall <name>

killall 은 지정된 명령을 실행하는 모든 프로세스에 신호를 보냅니다. 신호 이름을 지정하지 않으면 SIGTERM이 전송됩니다.

신호는 이름 (예 : -HUP 또는 -SIGHUP ) 또는 번호 (예 :
-1 ) 또는 옵션 -s 로 지정할 수 있습니다 .

명령 이름이 정규식이 아니고 (옵션 -r ) 슬래시 (/)를 포함하는 경우 해당 파일을 실행하는 프로세스는 이름과 상관없이 종료를 위해 선택됩니다.

그러나 프로세스가 표시되지 않으면 프로세스 ps aux를 죽일 권리가 없을 것입니다 …


답변

조금 더 긴 대안 :

kill `pidof firefox`


답변

가장 쉬운 방법은 먼저 올바른 프로세스 ID를 얻는 지 확인하는 것입니다.

pgrep -f [part_of_a_command]

결과가 예상 한 경우 함께 가다 :

pkill -f [part_of_a_command]


답변

이상하지만 다음과 같은 해결책을 보지 못했습니다.

kill -9 `pidof firefox`

또한 다음과 같은 여러 프로세스 (여러 pid)를 죽일 수 있습니다.

kill -9 `pgrep firefox`

pidof단일 라인 출력이 있기 때문에 선호 합니다.

> pgrep firefox
6316
6565
> pidof firefox
6565 6316


답변

snippet시작 경로에있는 모든 프로세스를 종료하십시오 . / directory /를 스 니펫으로 지정하여 일부 디렉토리에서 시작한 모든 앱을 종료 할 수 있습니다. 이것은 동일한 응용 프로그램 디렉토리에서 동일한 응용 프로그램에 대한 여러 구성 요소를 시작할 때 매우 유용합니다.

ps ax | grep <snippet> | grep -v grep | awk '{print $1}' | xargs kill

* 가능한 경우 pgrep를 선호합니다