ps 명령을 사용하여 Linux 프로세스를 모니터링하는 방법

ps 명령을 사용하여 Linux 컴퓨터에서 실행 중인 프로세스의 스냅샷을 가져옵니다. 이름, 사용자 또는 필요한 만큼의 세부 정보를 사용하여 터미널별로 프로세스를 찾습니다. 우리는 방법을 보여줍니다.

Linux의 프로세스 관리

모든 Linux 및 Unix 계열 운영 체제의 핵심은 커널입니다. 많은 책임 중 하나는 RAM 및 CPU 시간과 같은 시스템 리소스 할당입니다. 실행 중인 모든 프로세스가 각 작업의 우선 순위에 따라 공정한 공유를 받을 수 있도록 실시간으로 저글링해야 합니다.

때때로 작업이 잠기거나 팽팽한 루프에 들어가거나 다른 이유로 응답하지 않을 수 있습니다. 또는 계속 실행되지만 CPU 시간이나 RAM을 너무 많이 소비하거나 똑같이 반사회적인 방식으로 행동할 수 있습니다. 때때로 작업은 관련된 모든 사람에게 자비를 베풀어야 합니다. 첫 번째 단계. 물론, 문제의 프로세스를 식별하는 것입니다.

그러나 작업이나 성능 문제가 전혀 없을 수도 있습니다. 아마도 컴퓨터 내부에서 어떤 프로세스가 실행되고 있는지 궁금하고 내부를 들여다보고 싶을 것입니다. ps 명령은 이 두 가지 요구 사항을 모두 충족합니다. 그것은 당신에게 컴퓨터 내부에서 일어나는 일의 스냅샷 “지금 바로.”

ps는 원하는 형식으로 필요한 정보를 정확하게 제공할 수 있을 만큼 충분히 유연합니다. 사실, ps에는 많은 옵션이 있습니다. 여기에 설명된 옵션은 가장 일반적인 요구 사항을 충족합니다. 이 기사에서 다룬 것보다 ps에 대해 더 깊이 들어가야 하는 경우 맨 페이지를 더 쉽게 소화할 수 있도록 소개를 참조하십시오.

상장 절차

ps를 사용하는 가장 쉬운 방법은 매개변수 없이 실행하는 것입니다.

ps

ps는 명령을 실행한 사용자가 시작한 프로세스 목록을 표시합니다.

4개의 열은 다음과 같습니다.

PID: 프로세스의 프로세스 ID 번호입니다.
TTY: 사용자가 로그인한 콘솔의 이름입니다.
TIME: 프로세스가 사용한 CPU 처리 시간의 양.
CMD: 프로세스를 시작한 명령의 이름

모든 사용자를 위한 상장 프로세스

-e(모든 프로세스 선택)를 추가하여 ps 명령을 실행하는 사용자뿐만 아니라 모든 사용자가 시작한 프로세스를 ps에 나열할 수 있습니다. 이것은 긴 목록이 될 것이기 때문에 우리는 그것을 더 적게 파이핑할 것입니다.

ps -e | less

프로세스 목록은 less로 파이프됩니다.

  Linux Mint 19로 업그레이드하는 방법

목록에 더 많은 항목이 있지만 이전과 동일한 4개의 열이 표시됩니다. 물음표가 있는 항목은? 터미널 창에서 TTY 열이 시작되지 않았습니다.

프로세스 계층 표시

때로는 어떤 프로세스가 다른 프로세스를 시작했는지 알 수 있다면 문제를 파악하거나 특정 프로세스를 식별하는 데 도움이 될 수 있습니다. 이를 위해 -H(계층 구조) 옵션을 사용합니다.

ps -eH | less

들여쓰기는 어떤 프로세스가 다른 프로세스의 부모인지를 나타냅니다.

좀 더 명확성을 추가하기 위해 ps에게 몇 가지를 추가하도록 요청할 수 있습니다. 아스키 선을 만들고 계층 구조를 트리로 그립니다. 이를 수행하는 옵션은 –forest 옵션입니다.

ps -eH --forest | less

이렇게 하면 어떤 프로세스가 다른 프로세스의 부모인지 쉽게 추적할 수 있습니다.

이름별 프로세스 나열

ps의 출력을 grep을 통해 파이프하여 항목을 나열할 수 있습니다. 검색어와 일치하는 이름을 가진. 여기에서 “firefox” 검색어와 일치하는 항목을 찾고 있습니다.

ps -e | grep firefox

이 경우 출력은 관심 있는 프로세스에 대한 단일 항목입니다. 물론 Firefox의 여러 인스턴스를 시작했다면 목록에 두 개 이상의 항목이 반환되었을 것입니다.

출력에 더 많은 열 표시

출력에 더 많은 열을 추가하려면 -f(전체 형식) 옵션을 사용합니다.

ps -ef | less

추가 열 집합이 ps의 출력에 포함됩니다.

열은 다음과 같습니다.

UID: 이 프로세스 소유자의 사용자 ID입니다.
PID: 프로세스의 프로세스 ID입니다.
PPID: 프로세스의 상위 프로세스 ID입니다.
C: 프로세스의 자식 수입니다.
STIME: 시작 시간입니다. 프로세스가 시작된 시간입니다.
TTY: 사용자가 로그인한 콘솔의 이름입니다.
TIME: 프로세스가 사용한 CPU 처리 시간의 양.
CMD: 프로세스를 시작한 명령의 이름입니다.

-F(extra full-format) 옵션을 사용하면 더 많은 열을 얻을 수 있습니다.

ps -eF | less

이번에 얻은 열은 모두 표시하려면 화면을 옆으로 스크롤해야 합니다.

“오른쪽 화살표” 키를 누르면 디스플레이가 왼쪽으로 이동합니다.

이제 얻을 수 있는 열은 다음과 같습니다.

UID: 이 프로세스 소유자의 사용자 ID입니다.
PID: 프로세스의 프로세스 ID입니다.
PPID: 프로세스의 상위 프로세스 ID입니다.
C: 프로세스의 자식 수입니다.
SZ: 프로세스 이미지의 RAM 페이지 크기입니다.
RSS: 상주 세트 크기. 이것은 프로세스에서 사용하는 스왑되지 않은 물리적 메모리입니다.
PSR: 프로세스가 할당된 프로세서입니다.
STIME: 시작 시간입니다. 프로세스가 시작된 시간입니다.
TTY: 사용자가 로그인한 콘솔의 이름입니다.
TIME: 프로세스가 사용한 CPU 처리 시간의 양.
CMD: 프로세스를 시작한 명령의 이름입니다.

프로세스 ID별 프로세스 나열

관심 있는 프로세스의 프로세스 ID를 찾으면 ps 명령과 함께 사용하여 해당 프로세스의 세부 정보를 나열할 수 있습니다. -p(프로세스 ID로 선택) 옵션을 사용하여 다음을 수행합니다.

ps -p 3403

이 프로세스에 대한 세부 정보는 다음과 같습니다.

  Linux 설치를 다른 하드 드라이브로 전송하는 방법

하나의 프로세스 ID로 제한되지 않습니다. 공백으로 구분하여 프로세스 ID 목록을 제공할 수 있습니다.

명령별 프로세스 나열

-C(명령) 옵션을 사용하면 명령 이름을 사용하여 프로세스를 검색할 수 있습니다. 즉, 프로세스를 시작한 명령의 이름입니다. 이는 경로 이름과 매개변수 또는 옵션을 포함할 수 있는 명령줄과 미묘하게 다릅니다.

ps -C shutter

셔터 프로세스에 대한 세부 정보가 나열됩니다.

사용자가 소유한 프로세스 나열

특정 사용자가 소유한 프로세스를 보려면 -u(사용자 목록) 옵션을 사용합니다.

ps -u mary

사용자 계정 mary가 소유한 프로세스가 표시됩니다.

터미널별 프로세스 나열

TTY와 관련된 프로세스를 보려면 -t(TTY로 선택) 옵션을 사용합니다. TTY 번호 없이 사용되는 -t 옵션은 현재 터미널 창과 관련된 프로세스에 대해 보고합니다.

tty
ps -t

tty 명령은 이것이 의사 텔레타입 0이라고 보고합니다. ps -t에 의해 나열된 프로세스는 모두 TTY pts/0과 연관됩니다.

명령줄에서 TTY 번호를 전달하면 해당 TTY와 관련된 프로세스에 대한 보고서를 받아야 합니다.

ps -t 1

이번에는 프로세스가 모두 TTY pts/1과 연결됩니다.

표시할 열 선택

-o(형식) 옵션을 사용하면 ps의 출력에 포함할 열을 선택할 수 있습니다. 이름으로 열을 지정합니다. 열 이름의 (긴) 목록은 다음에서 볼 수 있습니다. 매뉴얼 페이지 “표준 형식 지정자” 섹션에서 이 예에서는 CPU 시간(pcpu)과 인수(args)가 포함된 명령줄이 출력에 포함되도록 선택했습니다.

ps -e -o pcpu,args | less

출력에는 요청된 두 열만 포함됩니다.

열을 기준으로 출력 정렬

–sort 옵션을 사용하여 출력을 정렬할 수 있습니다. CPU 열을 기준으로 출력을 정렬해 보겠습니다.

ps -e -o pcpu,args --sort -pcpu| less

pcpu 정렬 매개변수의 하이픈 “-“은 내림차순 정렬 순서를 제공합니다.

CPU를 가장 많이 사용하는 10개의 프로세스를 보려면 헤드를 통해 출력을 파이프하십시오. 명령:

ps -e -o pcpu,args --sort -pcpu | head -10

우리는 정렬되고 잘린 목록을 얻습니다.

디스플레이에 더 많은 열을 추가하면 더 많은 열을 기준으로 정렬할 수 있습니다. pmem 열을 추가해 보겠습니다. 이것은 프로세스에서 사용 중인 컴퓨터 메모리의 백분율입니다. 하이픈이 없거나 더하기 ” +”가 있는 경우 정렬 순서는 오름차순입니다.

ps -e -o pcpu,pmem,args --sort -pcpu,pmem | head -10

추가 열을 가져오고 새 열이 정렬에 포함됩니다. 첫 번째 열은 두 번째 열보다 먼저 정렬되고 두 번째 열은 pmem에 하이픈을 넣지 않았기 때문에 오름차순으로 정렬됩니다.

  Linux 시스템을 백업하는 방법

좀 더 유용하게 만들고 프로세스 ID 열(pid)에 추가하여 목록에서 각 프로세스의 프로세스 번호를 볼 수 있도록 합시다.

ps -e -o pid,pcpu,pmem,args --sort -pcpu,pmem | head -10

이제 프로세스를 식별할 수 있습니다.

프로세스 ID로 프로세스 종료

이름, 명령, 사용자 및 터미널을 포함하여 프로세스를 식별하는 다양한 방법을 다루었습니다. 또한 CPU 사용량 및 메모리와 같은 동적 속성으로 프로세스를 식별하는 방법을 다루었습니다.

따라서 어떤 식으로든 실행 중인 프로세스를 식별할 수 있습니다. 프로세스 ID를 알면 kill 명령을 사용하여 해당 프로세스를 종료할 수 있습니다(필요한 경우). 프로세스 898을 종료하려면 다음 형식을 사용합니다.

sudo kill 898

모든 것이 잘되면 프로세스가 자동으로 종료됩니다.

이름별 프로세스 종료

pkill 명령을 사용하면 다음을 수행할 수 있습니다. 이름으로 프로세스 종료. 올바른 프로세스를 식별했는지 확인하십시오! 이 명령은 최상위 프로세스를 종료합니다.

sudo pkill top

다시 말하지만, 소식이 없는 것은 좋은 소식입니다. 프로세스가 자동으로 종료됩니다.

이름으로 여러 프로세스 종료

실행 중인 프로세스의 복사본이 여러 개 있거나 프로세스가 여러 하위 프로세스(예: Google Chrome에서 수행할 수 있음)를 생성한 경우 어떻게 종료할 수 있습니까? 그 만큼 쉽습니다. killall 명령을 사용합니다.

우리는 최고 실행의 두 가지 사본을 가지고 있습니다:

ps -e | grep top

종료할 수 있습니다. 이 명령으로 둘 다:

sudo killall top

응답이 없다는 것은 문제가 없음을 의미하므로 두 프로세스가 모두 종료되었습니다.

상단으로 Dynamic View 얻기

ps의 출력은 스냅샷 보기입니다. 업데이트되지 않습니다. 프로세스의 업데이트 보기를 얻으려면 top 명령을 사용하십시오. 그것은 제공합니다 컴퓨터에서 실행 중인 프로세스의 동적 보기. 디스플레이는 두 부분으로 나뉩니다. 화면 상단에는 텍스트 행으로 구성된 대시보드 영역이 있고 화면 하단에는 열로 구성된 테이블이 있습니다.

다음 명령으로 맨 위로 시작합니다.

top

열에는 프로세스에 대한 정보가 있습니다.

PID: 프로세스 ID
USER: 프로세스 소유자의 이름
PR: 프로세스 우선순위
NI: 프로세스의 좋은 가치
VIRT: 프로세스에서 사용하는 가상 메모리
RES: 프로세스에서 사용하는 상주 메모리
SHR: 프로세스에서 사용하는 공유 메모리
S: 프로세스 상태입니다. 이 필드가 취할 수 있는 값의 아래 목록을 참조하십시오.
%CPU: 마지막 업데이트 이후 프로세스에서 사용한 CPU 시간 공유
%MEM: 사용된 물리적 메모리의 공유
TIME+: 작업에서 사용한 총 CPU 시간(1/100초)
COMMAND: 명령 이름 또는 명령줄(이름 및 명령줄 매개변수) 명령 열이 표시되지 않으면 “오른쪽 화살표” 키를 누릅니다.

프로세스 상태는 다음 중 하나일 수 있습니다.

D: 중단 없는 수면
R: 실행
S: 자
T: 추적(중지)
Z: 좀비

상단에서 나가려면 “Q” 키를 누르십시오.

프로세스를 종료하기 전에

그것이 당신이 찾고있는 것인지 확인하고 문제를 일으키지 않는지 확인하십시오. 특히 -H(계층 구조) 및 –forest 옵션을 사용하여 잊어버린 중요한 자식 프로세스가 없는지 확인하는 것이 좋습니다.