>  기사  >  웹 프론트엔드  >  ps 명령에 대한 자세한 설명

ps 명령에 대한 자세한 설명

高洛峰
高洛峰원래의
2016-12-29 14:33:031830검색

이름: ps
사용 권한: 모든 사용자
사용 방법: ps [options] [--help]
설명: 순간적인 여정의 역학(프로세스)을 표시합니다.
매개변수: ps 많은 매개변수가 있습니다. 여기서는 일반적으로 사용되는 몇 가지 매개변수만 나열하고 그 의미를 간략하게 소개합니다
-A 모든 프로세스 나열
-w 표시 확대를 통해 더 많은 정보를 표시할 수 있습니다
-au 더 자세한 정보 표시
-aux 다른 사용자가 포함된 모든 여행을 표시합니다

######################### ####### #####################

공통 매개변수:

-A 모든 프로세스 표시(-e와 동일) ( 유틸리티)
-a 세션 리더를 제외한 터미널의 모든 프로세스를 표시합니다.
-N 선택을 무시합니다.
-d는 모든 프로세스를 표시하지만 모든 세션 리드(유틸리티)를 생략합니다.
-x는 터미널을 제어하지 않는 프로세스를 표시하고 각 명령의 특정 경로를 표시합니다. dx는 함께 사용할 수 없습니다. (유틸리티)
-p pid 프로세스가 CPU를 사용하는 시간
-u uid 또는 사용자 이름 유효한 사용자 ID 또는 사용자 이름 선택
-g gid 또는 그룹 이름 그룹의 모든 프로세스를 표시합니다.
U 사용자 이름은 이 사용자 아래의 모든 프로세스를 표시하고 각 명령의 자세한 경로를 표시합니다. 예: ps U zhang;(utility)
-f는 모두 나열하며 일반적으로 다른 옵션과 함께 사용됩니다. 예: ps -fa 또는 ps -fx 등.
-l 긴 형식(F, wchan, C 등과 같은 필드 포함)
-j 작업 형식
-o 사용자 정의 체재.
v 가상 메모리 형식으로 표시
s 신호 형식으로 표시
-m 모든 스레드 표시
-H 프로세스 수준 표시(다른 명령과 결합: ps -Ha) (유틸리티 )
e는 명령 뒤에 환경을 표시합니다(예: ps -d e; ps -a e)(유틸리티)
h는 첫 번째 줄을 표시하지 않습니다

########## ## ##########################################

ps 명령의 일반적인 사용법(시스템 프로세스 보기 편리)

1) ps a는 다른 사용자의 프로그램을 포함하여 현재 터미널에 있는 모든 프로그램을 표시합니다.
2) ps -A는 모든 프로세스를 표시합니다.
3) ps c가 프로그램을 나열하는 경우 경로, 매개변수 또는 상주 서비스 식별을 포함하지 않고 각 프로그램의 실제 명령 이름을 표시합니다.
4) ps -e 이 매개변수의 효과는 "A" 매개변수를 지정하는 것과 동일합니다.
5) ps e가 프로그램을 나열할 때 각 프로그램에서 사용하는 환경 변수를 표시합니다.
6) ps f는 ASCII 문자를 사용하여 트리 구조를 표시하고 프로그램 간의 관계를 표현합니다.
7) ps -H는 프로그램 간의 관계를 나타내는 트리 구조를 표시합니다.
8) ps -N은 ps 명령을 실행하는 터미널 하위 프로그램을 제외한 모든 프로그램을 표시합니다.
9) ps s는 프로그램 신호 형식을 사용하여 프로그램 상태를 표시합니다.
10) ps S는 프로그램 나열 시 중단된 서브루틴 정보를 포함합니다.
11) ps -t<터미널 번호> 터미널 번호를 지정하고 터미널에 속한 프로그램의 상태를 나열합니다.
12) ps u 사용자 중심 형식으로 프로그램 상태를 표시합니다.
13) ps x 터미널별로 구분되지 않은 모든 프로그램을 표시합니다.
가장 일반적으로 사용되는 방법은 ps -aux 이며, 파이프 기호를 사용하여 grep에 특정 프로세스를 찾은 다음 특정 프로세스에 대해 작업을 수행합니다.

###################################### # #############

ps aux를 실행하여 다음 정보를 확인하세요.

root:# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT 시작 시간 명령
smmsp 3521 0.0 0.7 6556 1616 ? Ss 20:40 0:00 sendmail: Queuerunner@01:00 :00 f
root 3532 0.0 0.2 2428 452 ? 00 gpm -m /dev/input/mice -t imps2
htt 3563 0.0 0.0 2956 196 ? Ss 20:41 0:00 /usr/sbin/htt -retryonerror 0
h tt 3564 0.0 1.7 29460 3704 ? Sl 20:41 0:00 htt_server -nodaemon
root 3574 0.0 0.4 5236 992 ? Ss 20:41 0:00 crond
xfs 3 617 0.0 1.3 13572 2804 ? Ss 20:41 0:00 xfs -drop 개인 - 데몬
루트 3627 0.0 0.2 3448 552 ? SN 20:41 0:00 anacron -s
루트 3636 0.0 0.1 2304 420 ? Ss 20:41 0:00 /usr/sbin/atd
dbus 3655 0.0 0.5 138 401084? Ssl 20:41 0:00 dbus-daemon-1 --system


헤드 헤더:

USER Username
UID 사용자 ID(User ID)
PID 프로세스 ID
PPID 상위 프로세스 ID
SID 세션 ID
%CPU 프로세스의 CPU 사용량
%MEM 프로세스의 메모리 사용량 Rate
VSZ 프로세스에서 사용하는 가상 메모리의 크기( 가상 크기)
RSS 프로세스에서 사용하는 상주 세트의 크기 또는 실제 메모리의 크기, Kbytes 바이트입니다.
프로세스와 연결된 TTY 터미널(tty)
STAT 프로세스의 상태 : 프로세스의 상태를 문자로 표현(STAT의 상태코드)
R Runnable(on run queue) Running 또는 run queue에 있음 기다리다.
S 자고 자고, 차단하고, 특정 조건이 형성되거나 신호를 받기를 기다리고 있습니다.
I Idle Idle
Z Zombie(존재하는 프로세스) 프로세스가 종료되었지만 프로세스 설명자는 상위 프로세스가 wait4() 시스템 호출을 호출하고 해제될 때까지 존재합니다.
D 무정전 절전(일반적으로 IO)은 신호를 받을 때 깨어나지 않고 실행될 수 없습니다. 프로세스는 인터럽트가 발생할 때까지 기다려야 합니다.
T Terminate Terminate SIGSTOP, SIGSTP, SIGTIN, SIGTOU 신호를 받은 후 프로세스 실행이 중지됩니다.
P 스왑 페이지를 기다리는 중
W 상주 페이지가 없습니다. 할당할 메모리 페이지가 부족합니다.
본문 페이징 할당 및 축소
메모리의 프로세스 리더(그 아래에 하위 프로세스가 있음)
l 다중 프로세스(NPTL pthread와 유사하게 CLONE_THREAD 사용)
+ 프로세스 그룹은 다음 위치에 있습니다. background
START 프로세스 시작 시간 및 날짜
TIME 프로세스에서 사용한 총 CPU 시간
COMMAND 실행 중인 명령줄 명령
NI 우선순위(Nice)
PRI 프로세스 우선순위 번호(Priority)
WCHAN 프로세스가 실행 중입니다. 절전을 위한 커널 함수 이름은 /root/system.map 파일에서 가져옵니다.
FLAGS 프로세스와 관련된 숫자 식별

############################## ######################

예:
현재 시스템 프로세스의 uid, pid, stat, pri를 봅니다. uid 번호로 정렬.
ps -eo pid,stat,pri,uid –sort uid

현재 시스템 프로세스의 사용자, pid, stat, rss, args를 보고 rss로 정렬합니다.
ps -eo user,pid,stat,rss,args –sort rss

########################## # ##########################

ps는 프로세스에 대한 일회성 보기를 제공합니다. 제공된 결과 보기는 동적이거나 연속적이지 않습니다. 프로세스 시간을 모니터링하려면 상단 도구를 사용해야 합니다.


1. ps의 매개변수 설명:

ps는 다양한 옵션 매개변수를 제공하며 일반적으로 사용되는 매개변수는 다음과 같습니다.

l 긴 형식 출력
u는 사용자 이름 및 시작 시간 순서로 프로세스를 표시합니다.
j는 프로세스를 트리 형식으로 표시합니다.

a는 모든 사용자(다른 사용자 포함)에 대한 프로세스를 표시합니다. ;
x는 터미널을 제어하지 않고 프로세스를 표시합니다.
ww는 세부 매개변수가 잘리는 것을 방지합니다.

일반적으로 사용되는 옵션은 aux 또는 lax의 조합입니다. 매개변수의 적용 f.


2. ps aux 또는 lax 출력 설명:

USER 프로세스 소유자
PPID 상위 프로세스; 프로세스가 차지하는 CPU
%MEM 메모리 비율
NI는 프로세스의 NICE 값입니다.
VSZ는 프로세스의 가상 크기입니다.
TTY는 터미널입니다. ID;
STAT는 프로세스 상태입니다(다음과 같은 여러 유형이 있음)
D는 중단할 수 없는 휴면 상태입니다(일반적으로 IO 프로세스).
R이 실행 중이며 대기할 수 있습니다. >S는 휴면 상태입니다.
T는 추적을 중지했습니다.
W는 메모리 스왑에 들어갑니다(커널 2.6부터 유효하지 않음).
X 죽은 프로세스(본 적이 없음);

< 우선순위가 높은 프로세스
N 우선순위가 낮은 프로세스
L 일부 페이지가 메모리에 잠겨 있습니다.
프로세스의 리더(그 아래에 하위 프로세스가 있음); 다중 프로세스(NPTL pthread와 유사)
+ 프로세스 그룹이 백그라운드에 있음
WCHAN 대기 프로세스 리소스
프로세스 시작 시간; time;
COMMAND 명령의 이름과 매개변수


3. 적용 예:

[root@localhost ~]# ps -aux |more
페이징을 위해 | 파이프 등으로 연결하십시오.
[root@localhost ~]# ps -aux > ps001.txt
결과를 ps001.txt 텍스트로 출력하고 저장합니다.
[root@localhost ~]# more ps001.txt
여기서 모든 프로세스가 표시되고 ps001.txt 파일로 출력된 다음 more를 통해 페이징으로 표시됩니다.


4. 프로세스를 종료(종료)합니다. 프로세스를 제어하는 ​​방법은 다음과 같습니다.
[root@localhost ~]#kill - STOP [pid ]
SIGSTOP(17,19,23)을 보내면 프로세스를 종료하지 않고 중지합니다.
[root@localhost ~]#kill -CONT [pid]
중지된 프로세스를 다시 시작하려면 SIGCONT(19,18,25)를 보냅니다.
[root@localhost ~]#kill -KILL [pid]
SIGKILL(9)을 보내 프로세스를 즉시 중지하고 정리 작업을 수행하지 않도록 하세요.
[root@localhost ~]#kill -9 -1
자신이 소유한 모든 프로세스를 종료합니다.
SIGKILL 및 SIGSTOP 신호는 포착, 차단 또는 무시될 수 없지만 다른 신호는 가능합니다. 그래서 이것이 당신의 궁극적인 무기입니다.

###################################### # ##############

ps 명령을 사용하여 실행 중인 프로그램을 관리자에게 보고합니다.

때때로 시스템 관리자는 현재 프로그램에만 관심을 가질 수 있습니다. system 컴퓨터에서 어떤 프로그램이 실행되고 있지만 어떤 프로세스가 실행되고 있는지 알고 싶지 않습니다. 응용 프로그램이 여러 프로세스를 시작해야 할 수도 있기 때문입니다. 동일한 상황에서 프로세스 수는 프로그램 수보다 훨씬 많습니다. 읽기 관점에서 이를 수행하려면 관리자는 시스템에서 실행 중인 특정 프로그램을 알아야 합니다. 이 요구 사항을 충족하려면 ps 명령을 사용하여 도움을 받아야 합니다.

1. ps 명령으로 표시되는 결과의 의미.

시스템에서 실행되는 프로그램을 봐야 할 때 ps 명령이 유일한 명령은 아니지만 확실히 가장 자주 사용되는 명령입니다. 아래 그림과 같이 ps 명령을 실행한 후 표시되는 결과입니다.

현재 시스템에서 실행 중인 모든 애플리케이션을 표시하려면 명령줄에 ps 명령을 입력하세요. 위 그림과 같이 ps 명령을 입력하면 표시되는 결과는 크게 네 부분으로 구성됩니다. 첫 번째는 프로그램의 ID 번호인 PID입니다. 운영 체제는 명령을 사용하여 애플리케이션을 식별하는 대신 이 ID 번호를 사용하여 애플리케이션을 고유하게 식별합니다. 애플리케이션을 강제로 종료해야 하는 경우 이 PID 번호를 사용해야 합니다. TTY 다음에 오는 이 필드는 사용자가 사용하는 터미널 코드를 나타냅니다. Pts는 사용자가 원격으로 로그인했음을 나타냅니다. 세 번째 매개변수 TIME은 이 프로그램이 소비하는 CPU 시간을 나타냅니다. 이 시간은 프로그램 실행이 시작되는 시간이 아닙니다. 마지막 매개변수 CMD는 프로그램 이름을 나타냅니다.

2. 시스템에서 자세한 정보를 보고하도록 합니다.

ps 명령을 사용할 때 옵션을 사용하지 않으면 표시되는 정보가 매우 제한되어 현재 사용자가 실행 중인 프로그램만 표시되는 경우가 많습니다. 시스템 관리자가 애플리케이션의 메모리, CPU 사용량 등 애플리케이션의 더 자세한 실행 정보를 알아야 하는 경우 몇 가지 옵션을 추가해야 합니다. 시스템 관리자가 다른 사용자가 실행한 응용 프로그램을 보려면 이 명령 뒤에 선택적인 -al 옵션을 사용해야 합니다. 이 작업이 완료되면 시스템은 시스템의 모든 사용자가 실행하는 모든 프로그램을 나열합니다. 단순히 CPU 사용 시간을 표시하는 것이 아니라 특정 프로그램의 CPU 및 메모리 사용량을 알고 싶다면 이 명령 뒤에 -l 매개변수를 추가해야 합니다. 즉, ps -l 명령을 사용하면 시스템이 표시할 수 있습니다. 응용프로그램 프로그램의 자세한 실행 정보입니다. 위의 각 필드의 의미가 궁금하신 분은 관련 도움말을 확인하시면 됩니다. 일반적으로 시스템 관리자는 프로그램의 PID 번호, 메모리 및 CPU 사용량, 명령 이름, 사용자가 사용하는 터미널 등에만 관심을 갖습니다. 다른 정보는 시스템 관리자에게 덜 가치가 있습니다.

3.백그라운드에서 실행되는 프로그램을 확인합니다.

기본적으로 ps 명령은 포그라운드에서 실행 중인 프로그램만 표시하고 백그라운드에서 실행 중인 프로그램은 표시하지 않습니다. 그러나 모든 프로그램이 포그라운드에서 실행되는 것은 아닙니다. 정상적인 상황에서는 백그라운드에서 숨겨진 프로그램의 수가 포그라운드에서 실행되는 프로그램의 수보다 훨씬 많습니다. 예를 들어, 운영 체제가 시작될 때 시작되는 시스템 자체 프로그램의 대부분은 백그라운드에서 실행됩니다. 때로는 시스템 문제가 백그라운드 프로그램으로 인해 발생하는 경우가 많습니다. 트로이 목마와 같은 일반적인 프로그램은 백그라운드에서 실행됩니다. 이러한 이유로 시스템 관리자는 백그라운드에서 어떤 프로그램이 실행되고 있는지 아는 데 상대적으로 더 관심이 있습니다.

백그라운드에서 실행되는 프로그램을 확인하려면 조금 더 복잡합니다. Linux 운영 체제의 버전에 따라 백그라운드 프로세스를 표시하는 데 사용되는 옵션이 다르기 때문입니다. 예를 들어 Red Hat Linux 운영 체제에서는 실제로 옵션이 아닌 매개변수 형식입니다. 즉, ps aux 명령을 사용하여 모든 응용 프로그램(전경 및 배경 포함)을 표시할 수 있습니다. 매개변수와 옵션의 주요 차이점은 앞에 - 기호가 없다는 것입니다. 이 기호가 있으면 선택 사항이라는 의미입니다. 그리고 포함되지 않는다면 이는 매개변수라는 뜻입니다. 이 기호는 일반적으로 생략될 수 있습니다. 명령을 작성해야 할 곳에 작성하지 않거나 필요하지 않은 곳에 추가하면 해당 명령을 찾을 수 없다는 오류 메시지가 나타납니다. 다른 Linux 시스템 버전에서는 이 aux 매개변수가 인식되지 않을 수 있습니다. 예를 들어 일부 Linux 운영 체제 버전에서는 이 작업을 완료하려면 -a 옵션을 사용해야 합니다. 시스템 버전 간의 차이로 인해 시스템 관리자에게 많은 어려움을 안겨줍니다. 다행히 각 운영 체제 버전에 대한 온라인 도움말이 있습니다. 시스템 관리자가 새 버전의 운영 체제를 사용하고 있고 모든 프로세스를 표시하는 데 어떤 옵션을 사용해야 할지 모르는 경우 ps --heip과 같은 명령을 사용하여 시스템 도움말을 볼 수 있습니다. 그러나 아쉬운 점은 시스템의 온라인 도움말이 모두 영어로 되어 있다는 점인데, 이는 시스템 관리자의 영어 능력을 시험하는 큰 시험이 됩니다. 그러나 Linux 시스템 관리자가 되려면 여전히 약간의 영어 능력이 필요합니다. 왜냐하면 최신 Linux 기술은 기본적으로 영어 문서가 먼저 있기 때문입니다. 사실 가장 발전된 운영체제 관련 서적을 마스터해야 합니다. 대부분의 컴퓨터 관련 서적은 영어로 되어 있습니다.

4. 프로그램 목록을 정렬합니다.

실행 중인 애플리케이션이 많은 경우 시스템 관리자가 애플리케이션을 정렬해야 합니다. Ps 명령의 정렬 기능은 비교적 강력합니다. 주로 이 명령에는 --sort 매개변수가 있기 때문입니다(이 매개변수 앞에 두 개의 작은 수평 막대 기호가 있으므로 독자는 작성자가 실수했다고 생각해서는 안 됩니다). 이 파라미터 뒤에 시스템 관리자가 원하는 정렬 필드를 추가하면 정렬이 가능합니다. 예를 들어 ps –A --sort cmd 명령은 시스템의 모든 응용 프로그램을 표시하고 프로그램 명령에 따라 정렬한다는 의미입니다. Linux 운영 체제 매개변수에 대한 또 다른 문제는 매개변수의 대소문자가 다르면 의미가 달라지는 경우가 많다는 것입니다. 예를 들어 위 명령에서 대문자 A를 소문자 a로 바꾸면 결과가 완전히 달라집니다. 대문자 A는 모든 애플리케이션을 의미하고, 소문자 a는 "세션 리더를 제외한 모든 애플리케이션"을 의미합니다. 둘 사이에는 본질적인 차이가 있습니다. 이 차이는 다른 터미널 로그인 계정에서 실행되는 응용 프로그램을 필터링하는 데 사용될 수 있습니다.

ps 명령의 많은 매개변수에서 이러한 상황이 발생합니다. ps --help를 실행하여 이 명령의 모든 매개변수를 확인하면 대문자 사용이 서로 다른 의미를 의미하는 유사한 상황이 많이 있음을 알 수 있습니다. 예를 들어 대문자 O와 소문자 o, 대문자 U와 소문자 u 등이 있습니다. 이러한 차이점으로 인해 시스템 관리자가 운영 체제를 유지 관리하는 것이 더 어려워졌습니다. 시스템 관리자가 너무 많은 매개변수와 매개변수의 대소문자 차이를 파악하는 것이 불가능한 경우가 많습니다. 가치를 높이기 위해 보다 일반적으로 사용되는 매개변수를 사용하는 것 외에도 시스템 관리자는 이 시스템 명령에 대한 온라인 도움말도 사용해야 합니다. 이 시스템 도움말은 관리자에게 시스템 명령 사용 방법에 대한 온라인 지침을 제공할 수 있습니다.

5. 특정 프로그램의 실행 상태를 보고합니다.

시스템에서 실행 중인 프로그램이 많은 경우 프로그램 이름을 정렬하면 관리자가 관심 있는 프로그램을 찾는 데 도움이 될 수 있습니다. 그러나 이것은 여전히 ​​가장 쉬운 방법은 아닙니다. 예를 들어, 시스템 관리자는 이제 다른 운영 체제에서 시스템 백그라운드에서 실행 중인 threadx라는 트로이 목마 프로그램이 있음을 발견합니다. 따라서 관리자는 해당 트로이 목마 프로그램이 다른 컴퓨터에서도 실행되고 있는지 확인해야 합니다. 이 문제를 해결하는 방법은 무엇입니까? 정렬 기능을 사용하여 프로그램 이름을 정렬하십시오. (프로그램의 PID를 정렬하는 것은 아닙니다. 프로그램이 동일하더라도 시작 시간이 다르거나 프로그램 수가 다르기 때문입니다. 운영 체제에서 시작된 PID 번호가 다릅니다. 즉, 이 PID 번호가 자동으로 생성됩니다. 이는 관리자가 프로그램 검색 속도를 어느 정도 높이는 데 도움이 될 수 있습니다. 그러나 저자는 시스템 관리자가 파이프 문자, grep 등의 쿼리 명령을 사용할 수 있다면 필요한 애플리케이션 정보를 더 빨리 찾을 수 있을 것이라고 믿습니다.

이제 시스템 관리자가 ps aux | grep "threadx" 명령을 사용하면 어떤 일이 발생합니까? 먼저 시스템은 현재 시스템에서 실행 중인 모든 애플리케이션(포그라운드 및 백그라운드에서 실행 중인 애플리케이션 포함)을 나열합니다. 그런 다음 파이프 기호 |를 통해 출력 결과를 grep 명령에 전달합니다. 그런 다음 grep 명령은 ps 명령의 결과 출력에서 ​​실행 중인 threadx 프로그램에 대한 정보를 검색합니다. 있는 경우 이 프로그램의 정보가 창에 표시되고 다른 응용 프로그램의 실행 정보는 필터링됩니다. 파이프 문자를 다른 쿼리 명령과 결합하여 사용하면 시스템 관리자가 알고 싶은 응용 프로그램에 대한 정보를 최단 시간 내에 찾는 데 도움이 될 수 있음을 알 수 있습니다.

은 좀 더 책임감 있는 기능을 수행하기 위해 일부 특수 기호와 결합될 수도 있습니다. cat 명령어와 함께 사용하면 조건에 맞는 프로그램의 개수를 셀 수 있다. 명령 뒤에 > 기호를 추가하면 출력 결과를 파일에서 찾을 수 있습니다. 와일드카드와 함께 사용하면 특정 조건을 충족하는 프로그램 클래스를 쿼리할 수 있습니다. 예를 들어, 특정 프로그램의 상위 프로그램이나 하위 프로그램 등의 실행 정보를 쿼리할 수도 있습니다.

ps 명령어에 대한 자세한 설명과 관련 글은 PHP 중국어 홈페이지를 주목해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.