나는 탈출 할 수없는 단말기에서 프로그램을 실행하고 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 mysqldPID를 반환합니다. 그러나 입력하면 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에 의지하기 전에 먼저 더 부드러운 신호를 시도해야합니다.