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로 파이프됩니다.
목록에 더 많은 항목이 있지만 이전과 동일한 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
이 프로세스에 대한 세부 정보는 다음과 같습니다.
하나의 프로세스 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에 하이픈을 넣지 않았기 때문에 오름차순으로 정렬됩니다.
좀 더 유용하게 만들고 프로세스 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 옵션을 사용하여 잊어버린 중요한 자식 프로세스가 없는지 확인하는 것이 좋습니다.