2023. 3. 13. 11:41ㆍ부트캠프/DevOps (TIL)
프로세스 실행방식
프로세스 실행방식에는 두 가지 방식이 있습니다. 포그라운드와 백그라운드 입니다.
백그라운드 기능은 프로세스가 실행되는 동안 다른 프로세스가 실행 가능합니다. 하나의 쉘에서 여러 개의 프로세스를 동시에 실행할 수 있는 방식입니다. 백그라운드 방식으로 명령어를 실행하면 곧바로 다음 명령어를 실행 가능합니다. 필요한 여러 작업 동시에 진행하면서 포그라운드 작업을 계속 진행할 수 있습니다. 백그라운드 작업은 해당 명령어 처리가 오래 걸릴걸 대비해 백그라운드를 이용하면 여러 작업을 동시에 수행할 수 있다. 실행 방법은 & 기호를 추가하면 됩니다. 아래 명령어를 입력하면 곧 바로 다음 명령어를 실행 가능합니다.
하지만 백그라운드 방식으로 실행해도 사용자의 터미널 세션이 종료되면 실행중인 프로세스도 종료됩니다. 작업시간이 오래 걸리는 작업인 경우 nohup 명령어를 이용하여 백그라운드로 실행하면 사용자의 터미널 세션이 종료되어도 작업이 종료될 때까지 프로세스를 실행합니다.
프로세스 목록 확인
위와 같이 컴퓨터에서 실행되고 있는 프로세스의 목록을 확인하고, 관리 할 수 있어야 합니다. 따라서 목록을 확인하기 위한 명령의 사용법과 이때 알고 있어야 하는 기본적인 용어를 함께 살펴보겠습니다.
ps
ps 명령을 사용하여 시스템에서 활성 프로세스의 상태를 확인하고, 프로세스에 대한 기술적 정보를 표시할 수 있습니다. 이 데이터는 프로세스 우선 순위 설정 방법 결정과 같은 관리 작업에 유용합니다.
사용하는 옵션에 따라 ps 명령은 다음 정보를 보고합니다.
옵션을 섞어서 사용하면 더 디테일한 내용을 볼 수 있고, 사용할 수 있는 옵션의 종류는 다음과 같습니다.
이러한 옵션은 방식 별로 섞어서 사용할 수 있으며, 보통 프로세스의 관계를 보기 위해서 UNIX 방식인 ps -ef를, 프로세스의 상태를 보는 용도로는 BSD 방식인 ps aux를 가장 많이 사용합니다. 위의 명령에 따른 결과로 다양한 항목이 출력됩니다.
필드 | 설명 |
UID
|
프로세스 소유자의 유효 사용자 ID입니다.
|
PID
|
프로세스 ID입니다.
|
PPID
|
상위 프로세스 ID입니다.
|
C
|
스케줄링을 위한 프로세서 사용률입니다. 이 필드는 -c 옵션이 사용되면 표시되지 않습니다.
|
CLS
|
실시간, 시스템 또는 시간 공유와 같이 프로세스가 속하는 스케줄링 클래스입니다. 이 필드는 -c 옵션을 사용할 때만 포함됩니다.
|
PRI
|
커널 스레드의 스케줄링 우선 순위입니다. 숫자가 높을수록 높은 우선 순위를 나타냅니다.
|
NI
|
스케줄링 우선 순위에 영향을 주는 프로세스의 nice 번호입니다. 프로세스가 더 “nice”해지면 우선 순위가 낮음을 의미합니다.
|
ADDR
|
proc 구조의 속성입니다.
|
SZ
|
프로세스의 가상 주소 크기입니다.
|
WCHAN
|
프로세스가 유휴 상태인 이벤트 또는 잠금의 주소입니다.
|
STIME
|
프로세스의 시작 시간(시, 분, 초)입니다.
|
TTY
|
프로세스 또는 상위 프로세스가 시작된 터미널입니다. 물음표는 제어 터미널이 없음을 나타냅니다.
|
TIME
|
시작된 이후 프로세스에서 사용한 총 CPU 시간입니다.
|
CMD
|
프로세스를 생성한 명령입니다.
|
pstree
컴퓨터의 전체 프로세스를 구조화하여 확인하고 싶을 때는 pstree 명령을 사용합니다. 이 명령을 사용하면 다음과 같이 트리구조로 도식화하여 프로세스를 확인할 수 있고 부모 관계를 한 눈에 파악할 수 있습니다. 이 명령에 사용되는 옵션에 대해서는 man pstree 명령을 통해 학습하시기 바랍니다.
출처
https://docs.oracle.com/cd/E24846_01/html/E23088/spprocess-1.html
05_Study(데몬과 서비스) (0) | 2023.03.13 |
---|---|
05_Study(kill, jobs) (0) | 2023.03.13 |
05_Study(프로그램, 프로세스, 스레드, 멀티 스레드) (0) | 2023.03.13 |
04_Study(출력 관련 명령) (0) | 2023.03.13 |
04_Study(리눅스에서의 접근의 기본) (0) | 2023.03.10 |