>  기사  >  운영 및 유지보수  >  리눅스에서 프로세스를 죽이는 방법

리눅스에서 프로세스를 죽이는 방법

WBOY
WBOY앞으로
2023-05-21 19:28:101306검색

기존 기사: , 먼저 PS를 사용하여 프로세스를 확인합니다. 방법은 다음과 같습니다.


다음과 같이 코드 코드를 복사합니다.

$ ps -ef

$ ps -ef

...

SMX 1822 1 0 11:38? 00:00:49 gnome-terminal
smx 1823 1822 0 11:38 ? 00:00:00 gnome-pty-helper
smx 1824 1822 0 11:38 pts/0 00:00:02 b ash
smx 1827 1 4 11:38 ? 00:26:28 /usr/lib/firefox-3.6.18/firefox-bin
smx 1857 1822 0 11:38 pts/1 00:00:00 bash
smx 1880 1619 0 11:38 ? 00:00 ;

smx 1822 0.1 0.8 58484 18152 ? sl 11:38 0:49 그놈 터미널
smx 1823 0.0 0.0 1988 712 0 그놈-pty-helper
smx 1824 0.0 0.1 6820 3776 pts/0 ss 11:38 0:02 bash

smx 1827 4.3 5.8 398196 119568 ? sl 11:38 26:13 /usr/lib/firefox-3.6.18/firefox-bin

sm x 1857 0.0 0.1 6688 3644 pts/1 ss 11:38 0:00 bash
smx 1880 0.0 0.6 41536 12620 ? s 11:38 0:00 업데이트 알림

smx 11953 0.0 0.0 2716 10 64 pts /0r+ 21:42 0: 00 ps -aux

지금 Firefox 프로세스를 종료하려면 터미널에 다음을 입력하세요.

코드 복사 코드는 다음과 같습니다.

$ kill -s 9 1827


where -s 9는 프로세스에 전달된 신호가 9, 즉 강제로 가능한 한 빨리 프로세스를 종료하도록 지정합니다. 각 종료 신호와 해당 기능은 부록을 참조하세요.

1827은 위 ps에서 찾은 Firefox의 pid입니다.

간단하지만 문제가 있습니다. 프로세스가 적으면 문제가 되지 않습니다. 프로세스가 너무 많으면 ps -ef이든 ps -aux이든 매번 고통스럽습니다. 방대한 프로세스 정보 목록에서 종료할 프로세스를 찾으려면 진행 상황이 어지러울 정도입니다.


고급:

개선 1:

파이프라인을 통해 ps 쿼리 결과를 grep하여 특정 문자열이 포함된 프로세스를 찾습니다. 파이프 문자 "|"는 두 명령을 구분하는 데 사용됩니다. 파이프 문자 왼쪽에 있는 명령의 출력은 파이프 문자 오른쪽에 있는 명령의 입력으로 사용됩니다.

코드 복사 코드는 다음과 같습니다.

$ ps -ef | grep firefox

smx 1827 1 4 11:38 00:27:33 /usr/lib/firefox-3.6.18/firefox-bin

smx 12029 1824 0 21:54 pts/0 00:00:00 grep --color=auto firefox

이번엔 상쾌하네요. 그런 다음

코드를 복사하세요. 코드는 다음과 같습니다.

$kill -s 9 1827

Improvement 2 - pgrep 사용:


pgrep을 보면 가장 먼저 무엇이 떠오르시나요? 그렇죠, 그렙! pgrep의 p는 이 명령이 특히 프로세스 쿼리를 위한 grep임을 나타냅니다.

코드 복사 코드는 다음과 같습니다.


$ pgrep firefox

1827

무엇이 보이나요? 맞습니다. Firefox의 pid입니다. 다시 입력해야 합니다:

$kill -s 9 1827

Improvement 3 - pidof 사용:

pidof를 보면 어떤 생각이 드시나요? 맞습니다. xx의 pid는 문자 그대로 번역하면 xx의 pid입니다.

코드 복사 코드는 다음과 같습니다.

$ pidof firefox-bin

1827

pgrep과 비교했을 때 약간의 단점은 pidof가 프로세스의 전체 이름을 제공해야 한다는 것입니다. 다음은 진부한 표현입니다:

코드 복사 코드는 다음과 같습니다:


$kill -s 9 1827

ps를 사용한 다음 천천히 프로세스 pid를 찾거나, grep을 사용하여 해당 문자열을 입력하거나 pgrep을 사용하여 해당 문자열의 프로세스 pid를 입력한 후 수동으로 입력해서 kill to kill을 하는 것은 조금 번거롭습니다. 더 편리한 방법이 있나요? 가지다!


개선 4:

코드 복사:

$ps -ef | grep -v grep | cut -c 9-15 | xargs kill -s 9

"grep firefox"의 출력은 "firefox" 키워드를 포함하는 모든 프로세스입니다.

"grep -v grep"은 나열된 프로세스에서 "grep" 키워드가 포함된 프로세스를 제거하는 것입니다.

"cut -c 9-15"는 입력 줄의 9~15번째 문자를 가로채는데, 이는 프로세스 번호 pid입니다.

"xargs kill -s 9"의 xargs 명령은 이전 명령의 출력 결과(pid)를 "kill -s 9" 명령의 매개변수로 사용하여 명령을 실행하는 데 사용됩니다. "kill -s 9"는 지정된 프로세스를 강제로 종료합니다.

뭔가 불평하고 싶지 않으신가요? 예, 너무 깁니다

개선 5:

pgrep 및 pidof 명령을 알고 있는데 왜 이렇게 긴 문자열을 입력해야 합니까!

코드 복사 코드는 다음과 같습니다.

$ pgrep firefox |

awk '{print $2}'의 기능은 두 번째 열의 내용을 인쇄하는 것입니다. 일반 기사에 따르면 ps가 출력한 두 번째 열이 정확히 pid임을 알 수 있습니다. xargs를 통해 kill할 프로세스의 해당 pid를 파라미터로 전달하고, 해당 프로세스를 kill한다.


개선 사항 7:

종료를 위해 pid를 전달하려면 매번 xargs를 호출해야 합니까? 대답은 '아니오'입니다.


코드 복사 코드는 다음과 같습니다.

$kill -s 9 `ps -aux | grep firefox | awk '{print $2}'

개선 사항 8:

예, 명령은 여전히 ​​약간 길며 pgrep으로 대체되었습니다.


코드 복사 코드는 다음과 같습니다.

$kill -s 9 `pgrep firefox`


Improvement 9 - pkill:

pkill을 보고 어떤 생각이 드셨나요? 맞습니다 pgrep 및 kill! pkill=pgrep+kill.


코드 복사 코드는 다음과 같습니다:

$pkill -9 firefox


설명: "-9"는 전송된 신호가 9라는 의미입니다. 이 점에서 pkill과 kill의 차이점은 다음과 같습니다. pkill은 필요하지 않습니다. "s"는 신호 레벨을 종료합니다. "-" 바로 뒤에 옵니다. 예전에는 항상 "-s 9"라고 생각했는데 실행할 때마다 프로세스가 종료되지 않더군요.

개선 사항 10 - killall:

killall은 pkill과 유사하지만 지정된 프로세스 이름이 불완전한 경우 killall이 오류를 보고합니다. pkill 또는 pgrep은 단순히 프로세스 이름의 일부를 제공하여 프로세스를 종료할 수 있습니다.

코드 복사 코드는 다음과 같습니다.

$killall -9 firefox

위 내용은 리눅스에서 프로세스를 죽이는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제