나는 탈출 할 수없는 단말기에서 프로그램을 실행하고 Ctrl– C내가 죽이고 싶어. PID를 어떻게 찾을 수 있습니까?
답변
다른 터미널을 열고 ps ax | grep foo
여기서 foo는 응답하지 않는 프로그램의 이름입니다. 이것은 다음과 같은 출력 라인을 반환해야합니다.
$ ps ax | grep firefox
2222 ? S 0:00 /bin/sh /usr/lib/firefox-3.6.9/firefox
2231 ? Sl 514:36 /usr/lib/firefox-3.6.9/firefox-bin
30290 pts/2 S+ 0:00 grep --color=auto firefox
각 출력 행의 첫 번째 필드는 일치하는 프로그램의 프로세스 ID를 나타내는 숫자입니다 grep
(마지막 필드는 무시해도 grep
됩니다).
문제가있는 프로세스를 중지하려면 다음을 수행하십시오.
kill pid
여기서 pid는 프로그램의 프로세스 ID입니다. 어떤 경기를해야하는지 판단해야 할 수도 있고 대신 kill
사용할 수도 있습니다 top
. kill
자체적으로 사용하면 SIGTERM이 전송됩니다. SIGTERM은 프로그램 자체가 올바르게 정리되도록하기 위해 먼저 시도해야합니다. SIGTERM이 실패하면, 스톤 거 약인 SIGHUP을 시도하십시오 : kill -HUP pid
. 다른 모든 방법이 실패하면 SIGKILL을 보내십시오. 그러나 SIGKILL로 인해 커널이 정리 가능성없이 즉시 프로세스를 종료하게되므로 최후의 수단으로 만 사용해야합니다. 때때로 데이터가 손상되거나 다른 문제가 발생할 수 있습니다. 다시 한번, SIGKILL을 최후의 수단으로 보내십시오. 그렇게하려면 kill -KILL pid
또는 을 수행하십시오 kill -9 pid
.
물론 그래픽 인터페이스를 실행하는 경우 작업을 수행하기 위해이 미친 명령 줄을 속일 필요가 없습니다. “시스템 모니터”를 열고 프로세스 탭으로 이동 한 후 중지하려는 프로세스 (Hm, 90 % CPU를 사용하는 프로세스 일 수 있음)를 선택하고 마우스 오른쪽 단추를 클릭하십시오. 프로세스가 이미 중지되었으므로 (문제입니까?) 결과 메뉴에서 프로세스 종료 또는 프로세스 종료를 선택하십시오.
koanhead에 신용
답변
pgrep, pkill, pidof 등으로 동일한 명령을 수행 할 수있을 때 긴 명령이 필요하다고 생각하지 않습니다.
- 실행중인 프로그램의 pid를 얻으려면
pgrep :
pgrep [options] pattern
DESCRIPTION :
pgrep은 현재 실행중인 프로세스를 살펴보고 선택 기준과 stdout에 일치하는 프로세스 ID를 나열합니다. 모든 기준이 일치해야합니다. 예를 들어
-
root가 소유 한 sshd라는 프로세스를 찾습니다.
$ pgrep -u root sshd
-
루트 OR 데몬이 소유 한 프로세스를 나열하십시오.
$ pgrep -u root,daemon
pidof :
설명 :
Pidof는 명명 된 프로그램의 프로세스 ID (pid)를 찾습니다. 표준 출력에 해당 ID를 인쇄합니다.
구문 :
pidof program_name
-
pid를 사용하여 프로그램을 종료하려면 pkill 예제를 사용하십시오.
pkill pid pkill -f process_name pkill -o process_name pkill -n process_name pkill -l process_name
-f
플래그 : process_name을 검색합니다 (man pkill 참조).
-o
플래그 : 가장 오래된 일치 프로세스 만 선택하십시오.
-n
플래그 : 최신 일치 프로세스 만 선택하십시오.
-l
플래그 : 프로세스 이름과 프로세스 ID를 나열합니다.
답변
실행중인 프로그램의 pid를 아는 가장 쉬운 방법은 다음을 사용하는 것입니다.
pidof <application name>
예를 들어, vim을 시작하고 pid를 알고 싶다면 다음을 수행하십시오.
pidof vim
시작된 정확한 프로그램 이름을 제공해야합니다.
예를 들어 vi를 실행하고 실행 pidof vim
하면 올바른 결과를 얻지 못합니다.
자세한 내용은 pidof
의 설명서 페이지를 참조하십시오.
답변
더 자세한 출력을 얻으려면 “-i”를 추가하고 “ax”대신 “aux”를 사용하여 대소 문자를 구분하지 않는 검색을 사용하는 것이 좋습니다.
ps aux | grep -i firefox
모든 프로세스를 종료하려면 다음을 사용할 수 있습니다.
ps aux | grep -i firefox | awk {'print $2'} | xargs kill -9
그것은 강력한 살인입니다. 소프트 킬을 원하면 “-9″를 떨어 뜨린다.
답변
pid 만 원한다면 (자동 킬 스크립트 등에 유용합니다.)
pgrep -f desired_program_name
답변
우분투 16.04 LTS를 실행하는 사람들을 위해, 당신은 해야 사용할 ps ax
뿐 아니라ps
, 그렇지 않으면 당신은 당신이에있어 특정 단말기 인스턴스에서 산란 프로세스를 얻을 것이다, 명령 줄에서. (대개 ‘배쉬'[당신이있어 쉘을 ] 및 ‘ps'[방금 실행 한 내용])
답변
다른 터미널을 열거 나 다른 tty로 전환하여 top
기본적으로 시스템 모니터의 텍스트 버전 인을 실행할 수도 있습니다. 첫 번째 열에는 실행중인 각 프로세스의 PID가 나열되어 있습니다.을 누르고 KPID를 입력 한 다음 전송할 숫자 신호를 입력하여 종료 할 수 있습니다.