나는 탈출 할 수없는 단말기에서 프로그램을 실행하고 Ctrl- C내가 죽이고 싶어. PID를 어떻게 찾을 수 있습니까?
나는 탈출 할 수없는 단말기에서 프로그램을 실행하고 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에 신용
kill -9
나쁜 조언입니다. 답을 수정하여 수정했습니다.
ping
명령과 루프가 포함 된 함수가 있습니다 sleep
. unix.stackexchange.com/a/275826/72988 에 따르면 , 우분투에서는이 기능을 사용할 수 없습니다 multiplexer
.
pgrep, pkill, pidof 등으로 동일한 명령을 수행 할 수있을 때 긴 명령이 필요하다고 생각하지 않습니다.
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
의 설명서 페이지를 참조하십시오.
pidof mysqld
PID를 반환합니다. 그러나 입력하면 pidof Mariadb
아무것도 반환되지 않습니다. MariaDB와 MySQL 모두 동일한 PID입니까?
더 자세한 출력을 얻으려면 "-i"를 추가하고 "ax"대신 "aux"를 사용하여 대소 문자를 구분하지 않는 검색을 사용하는 것이 좋습니다.
ps aux | grep -i firefox
모든 프로세스를 종료하려면 다음을 사용할 수 있습니다.
ps aux | grep -i firefox | awk {'print $2'} | xargs kill -9
그것은 강력한 살인입니다. 소프트 킬을 원하면 "-9"를 떨어 뜨린다.
ps aux | grep -i firefox...
텍스트가 포함되어 있기 때문에 프로세스 도 종료됩니다 firefox
!
grep -i firefo[x]
파이어 폭스와 일치 하는 데 사용할 수 있습니다
당신은 할 수 있습니다 :
ps ax | grep firefox | cut -f2 -d" " - | xargs kill -9
처음 두 파이프는 프로세스 정보를 얻습니다. 다음으로 구식 컷을 사용하여 PID 열을 가져온 다음 결과 PID를 죽입니다.
kill -9
프로세스를 죽여야하는 가장 큰 총입니다. 프로세스에 리소스를 정리할 수있는 기회를 제공하기 위해 SIGKILL에 의지하기 전에 먼저 더 부드러운 신호를 시도해야합니다.