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

0
1026
Linux 랩톱의 터미널 창
Fatmawati Achmad Zaenuri / 셔터 스톡

Linux 컴퓨터에서 실행중인 프로세스의 스냅 샷을 ps 명령. 이름, 사용자 또는 터미널로 필요한만큼 세부적으로 또는 세부적으로 프로세스를 찾으십시오. 우리는 당신에게 방법을 보여줍니다.

리눅스에서의 프로세스 관리

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

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

그러나 작업이나 성능 문제가 전혀 없을 수 있습니다. 컴퓨터 내부에서 어떤 프로세스가 실행되고 있는지 궁금 할 것입니다. 그만큼 ps 명령은이 두 가지 요구를 모두 충족시킵니다. “지금 바로”컴퓨터 내부에서 발생하는 상황에 대한 스냅 샷을 제공합니다.

ps 필요한 정보를 원하는 형식으로 정확하게 제공 할 수있을만큼 유연합니다. 사실로, ps 많은 옵션이 있습니다. 여기에 설명 된 옵션은 가장 일반적인 요구를 충족시킵니다. 더 깊이 들어가야한다면 ps 이 기사에서 살펴본 것보다, 소개를 통해 매뉴얼 페이지를보다 쉽게 ​​요약 할 수 있습니다.

리스팅 프로세스

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

ps

터미널 창의 ps

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

터미널 창에서 ps에서 출력

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

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

모든 사용자를위한 리스팅 프로세스

추가하여 -e (모든 프로세스를 선택하십시오) ps 실행중인 사용자뿐만 아니라 모든 사용자가 시작한 프로세스를 나열합니다. ps 명령. 긴 목록이 될 것이기 때문에 less.

ps -e | less

ps -e | 덜 작은 터미널 창

프로세스리스트는 less.

ps -e의 출력은 터미널 창에서 줄어 듭니다.

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

프로세스 계층 표시

어떤 프로세스가 다른 프로세스를 시작했는지 확인할 수 있으면 문제를 파악하거나 특정 프로세스를 식별하는 데 도움이 될 수 있습니다. 우리는 -H (계층 구조) 옵션을 사용하십시오.

ps -eH | less

ps -eH | 터미널 창에서 덜

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

터미널 창에서 ps -eH로 출력

좀 더 명확하게하기 위해 ps ASCII 선을 추가하고 계층 구조를 트리로 그립니다. 이를 수행하는 옵션은 --forest 선택권.

ps -eH --forest | less

ps -eH-숲 | 터미널 창에서 덜

이를 통해 어떤 프로세스가 다른 프로세스의 상위 프로세스인지 쉽게 추적 할 수 있습니다.

ps -eH --forest의 출력은 터미널 창에서 적게 파이프됩니다.

이름별로 프로세스 나열

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

ps -e | grep firefox

ps -e | 터미널 창에서 grep firefox

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

ps -e의 출력 | 터미널 창에서 grep firefox

출력에 더 많은 열 표시

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

ps -ef | less

ps -ef | 터미널 창에서 덜

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

ps -ef의 출력 | 터미널 창에서 덜

열은 다음과 같습니다.

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

사용하여 -F (추가 전체 형식) 옵션으로 더 많은 열을 얻을 수 있습니다.

ps -eF | less

ps -eF | 터미널 창에서 덜

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

ps -eF의 출력 | 터미널 창에서 왼쪽, 디스플레이의 왼쪽

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

ps -eF의 출력 | 터미널 창에서 오른쪽, 디스플레이의 오른쪽

이제 우리가 얻는 열은 다음과 같습니다.

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

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

관심있는 프로세스의 프로세스 ID를 찾으면이 프로세스 ID를 ps 해당 프로세스의 세부 사항을 나열하는 명령입니다. 사용 -p (프로세스 ID로 선택) 옵션을 사용하여 다음을 수행하십시오.

ps -p 3403

터미널 창에서 ps -p 3403

이 프로세스의 세부 사항이 나열됩니다.

터미널 창에서 ps -p 3403의 출력

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

명령 별 프로세스 나열

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

ps -C shutter

터미널 창의 ps -C 셔터

셔터 프로세스에 대한 세부 사항이 나열됩니다.

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

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

ps -u mary

터미널 창에서 ps -u mary

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

터미널 창에서 ps -u mary의 출력

터미널 별 프로세스 나열

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

tty
ps -t

터미널 창에서 ps -t

그만큼 tty 명령은 이것이 의사 텔레 타입 0임을보고합니다. ps -t 모두 TTY와 연결되어 있습니다 pts/0.

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

ps -t 1

터미널 창에서 ps -t 1

이번에는 프로세스가 모두 TTY와 연관되어 있습니다. pts/1.

관련 : Linux에서 TTY 란 무엇입니까? (tty 명령 사용법)

표시 할 열 선택

와 더불어 -o (형식) 옵션을 사용하면 출력에 포함 할 열을 선택할 수 있습니다 ps. 이름별로 열을 지정합니다. 열 이름의 긴 목록은 “표준 형식 지정자”섹션의 매뉴얼 페이지에서 볼 수 있습니다. 이 예에서는 CPU 시간 (pcpu) 및 인수 (args)가 출력에 포함됩니다.

ps -e -o pcpu,args | less

ps -e -o pcpu, args | 터미널 창에서 덜

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

ps -e -o pcpu, args의 출력 | 터미널 창에서 덜

열을 기준으로 출력 정렬

다음을 사용하여 출력을 정렬 할 수 있습니다. --sort 선택권. CPU 열을 기준으로 출력을 정렬 해 보겠습니다.

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

ps -e -o pcpu, args-정렬 -pcpu | 터미널 창에서 덜

하이픈 “-에” pcpu sort 매개 변수는 내림차순 정렬을 제공합니다.

터미널 창에서 CPU별로 정렬 된 PS의 출력

CPU를 많이 사용하는 10 가지 프로세스를 확인하려면 head 명령:

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

ps -e -o pcpu, args --sort -pcpu | 터미널 창에서 헤드 10

정렬되고 잘린 목록이 나타납니다.

ps -e -o pcpu, args --sort -pcpu의 출력 | 터미널 창에서 헤드 10

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

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

ps -e -o pcpu, pmem, args-정렬 -pcpu, pmem | 터미널 창에서 헤드 10

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

ps -e -o pcpu, pmem, args의 출력 --sort -pcpu, pmem | 터미널 창에서 헤드 10

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

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

ps -e -o pid, pcpu, pmem, args-정렬 -pcpu, pmem | 터미널 창에서 헤드 10

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

ps -e -o pid, pcpu, pmem, args의 출력 --sort -pcpu, pmem | 머리 10

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

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

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

sudo kill 898

터미널 창에서 sudo kill 898

모두 잘 진행되면 프로세스가 자동으로 종료됩니다.

터미널 창에서 sudo kill 898의 출력

관련 : 리눅스 터미널에서 프로세스를 종료하는 방법

이름으로 죽이는 프로세스

그만큼 pkill 명령을 사용하면 이름별로 프로세스를 종료 할 수 있습니다. 올바른 절차를 확인하십시오! 이 명령은 최상위 프로세스를 종료합니다.

sudo pkill top

터미널 창에서 sudo pkill top

다시 한번 좋은 소식은 없습니다. 프로세스가 자동으로 종료됩니다.

터미널 창에서 sudo pkill top에서 출력

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

프로세스의 사본이 여러 개 있거나 프로세스가 Chrome과 같은 많은 하위 프로세스를 생성 한 경우 어떻게 제거 할 수 있습니까? 간단합니다. 우리는 killall 명령.

최고의 달리기 사본이 두 개 있습니다.

ps -e | grep top

ps -e | 터미널 창의 grep top

이 명령으로 두 가지를 모두 종료 할 수 있습니다.

sudo killall top

터미널 창에서 sudo killall top

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

termonal 창에서 sudo killall top의 출력

상단이있는 동적 뷰 가져 오기

의 출력 ps 스냅 샷보기입니다. 업데이트되지 않습니다. 프로세스의 업데이트보기를 얻으려면 top 명령. 컴퓨터에서 실행중인 프로세스를 동적으로 볼 수 있습니다. 디스플레이는 두 부분으로되어 있습니다. 화면 상단에는 텍스트 줄로 구성된 대시 보드 영역과 화면 하단에는 열로 구성된 표가 있습니다.

스타트 top 이 명령으로 :

top

터미널 창에서 실행되는 top 명령

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

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

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

  • : 무정전 수면
  • 아르 자형: 달리기
  • 에스: 자
  • : 추적 됨 (중지됨)
  • : 좀비

“Q”키를 눌러 top.

관련 : 알아야 할 중요한 Linux 명령

프로세스를 종료하기 전에

그것이 당신이 추구하는 것인지 확인하고 문제를 일으키지 않는지 확인하십시오. 특히, 그것은 확인 가치가 -H (계층 구조) --forest 잊어 버린 중요한 자식 프로세스가 없는지 확인하는 옵션입니다.