2026년 8월 13일·리눅스

리눅스 프로세스 관리 - (1) 프로세스 관련 명령어

프로세스 관리

프로세스 관리의 시작

멀티 프로세싱 단위에서 프로세스 관리는 상당히 중요하다. 같은 이름을 가진 프로세스를 한번에 종료하거나, 강제 종료나 정상 종료를 지정하여 프로세스 종료를 수행하는 등 작업 처리 측면에서 상당한 이점이 있기 때문이다. 그러므로 우리는 리눅스에서 프로세스를 관리하는데에 있어서 어떤 명령어들이 있는지 지금부터 알아볼 것이다.

프로세스 정보 확인

ps 명령어

우선 ps 명령부터 알아볼 것이다. ps 명령은 프로세스의 정보를 출력해주는 명령이다. 정확히 말하자면, 옵션 유무에 따라 명령 범위 안에 있는 활성 프로세스의 정보를 출력해주는 명령이다. ps 명령은 /proc 안에 있는 가상 파일 시스템을 통해 프로세스 리스트를 출력한다.

ps 명령은 UNIX 기반 옵션, BSD 기반 옵션, GNU 기반 옵션으로 옵션이 나뉘어 있다. 이들은 대쉬 개수에 따라 구분된다. UNIX 기반은 대쉬가 하나만 있고, BSD 기반은 대쉬가 없으며 , GNU 기반은 대쉬 두 개가 있다.

형식옵션설명
UNIXa전체 사용자를 대상으로 프로세스 목록을 출력
UNIXx터미널과 연관되지 않은 프로세스 목록을 출력
UNIXp해당 PID의 정보만 출력
UNIXu프로세스의 소유자를 출력
UNIXl긴 형식으로 출력
UNIXe환경 변수를 출력
BSD-A, -e모든 프로세스를 출력
BSD-a세션 리더와 비터미널 계열 프로세스를 제외하고 출력
BSD-C실행 파일 이름만 출력
BSD-u지정한 사용자의 프로세스 목록을 출력
BSD-l긴 형식으로 출력
BSD-o사용자 지정 형식으로 출력
BSD-f전체 형식으로 출력
GNU--pidp와 동일한 기능을 수행
GNU--user-u와 동일한 기능을 수행

ps 명령의 주요 항목

ps 명령에는 표시할 수 있는 여러 항목이 있으며 자세한 내용은 다음과 같다.

F프로세스 플래그
S프로세스 상태 코드
UID프로세스 소유자 이름
PID프로세스 고유 식별자
PPID부모 프로세스 PID
C프로세서 사용률
PRI프로세스 우선순위
NInice 값 (-20 ~ 19)
SZ프로세스가 차지하는 물리 페이지의 크기
WCHAN대기 중 대기 대상의 커널 함수 이름
STIME프로세스 시작 시간
TTY터미널의 종류
TIME총 CPU 사용 시간
CMD프로세스가 된 명령

pstree 명령어

pstree 명령은 프로세스를 트리 형태로 출력해주는 명령이다. 리눅스에서는 프로세스 간 부모와 자식 관계가 성립하기 때문에 이를 그래프의 일종인 트리 형태로 나타낼 수 있다. 해당 기능을 수행하는 것이 바로 이 명령이다. pstree의 옵션은 다음과 같다.

-a명령에 뒤따르는 매개변수 출력
-h현재 프로세스와 그의 부모 프로세스를 강조 표시
-n이름 대신 PID를 정렬해서 출력
-pPID를 이름과 함께 출력
-s지정한 프로세스의 부모 프로세스를 출력

top 명령어

현재 실행되고 있는 프로세스들의 정보나 시스템 정보를 실시간으로 출력하는 명령어이다. top 명령 실행 중에는 특정 키로 기능을 사용할 수 있다. top 명령어의 옵션은 다음과 같다.

-n지정한 숫자만큼만 화면 갱신 후 자동 종료
-u지정한 사용자의 프로세스를 실시간 모니터링
-b출력 결과를 타 파일이나 프로세스로 전달
-d화면 갱신 주기를 초 단위로 설정
-p지정한 PID, 즉 특정 식별자의 프로세스 모니터링

top 명령의 주요 항목

top 명령에는 표시할 수 있는 여러 항목이 있으며 자세한 내용은 다음과 같다.

PID프로세스의 고유 식별자인 PID
PR프로세스의 우선순위
SHR프로세스가 점유 중인 KB 기준의 양
VIRT프로세스의 가상 메모리
USER프로세스의 소유자 이름
%CPUCPU 사용량
TIME+%CPU와 표시 내용은 동일하나 단위 시간이 짧음
NInice 값
%MEM프로세스의 메모리 사용량

top 실행 중 단축 명령어

상기 내용에서 top 명령 실행 중에는 특정 키로 기능을 사용할 수 있다고 헀다. 아래 표가 사용할 수 있는 단축키이며, top 명령 실행 중에 사용할 수 있다.

l, t, m각각 요약 정보 토글, 작업 및 CPU 통계 토글, 메모리 정보 토글
f, o각각 필드 추가/삭제, 필드 표시 순서 변경
F/O정렬할 필드 선택
<, >F/O와 동일, <는 다음 필드 >는 이전 필드임
R, H각각 오름차순/내림차순 토글, 쓰레드 표시 토글
c, i각각 명령어 이름 및 라인 토글, 유효 태스크 표시 토글
x, y각각 정렬 기준 필드를 강조, 실행 중인 작업을 강조
u특정 사용자 표시 토글
k, r각각 특정 프로세스 종료, 우선순위 재지정
W현재 설정을 파일로 저장
q명령 종료
Space/Enter화면 갱신
h/?도움말 표시

프로세스 종료

kill 명령어

kill 명령은 기본값으로 SIGTERM을 보내는 시그널 전송 명령이다. 예를 들어 kill 5555를 입력한 경우 5555 프로세스가 존재한다는 가정 하에 해당 프로세스에 SIGTERM이 전송된다. 옵션은 다음과 같다.

-(signal), -s (signal)지정한 시그널을 보냄
-l사용 가능한 시그널 목록 출력

사용 가능한 시그널 목록은 다음과 같으며, 시그널의 총 개수는 64개이다.

00SIGHUP10SIGCHLD20Reserved30SIGRTMIN+15
01SIGINT11SIGCONT21SIGRTMIN31SIGRTMAX-14
02SIGQUIT12SIGSTOP22SIGRTMIN+132SIGRTMAX-13
03SIGILL13SIGTSTP23SIGRTMIN+233SIGRTMAX-12
04SIGTRAP14SIGTTIN24SIGRTMIN+334SIGRTMAX-11
05SIGABRT15SIGTTOU25SIGRTMIN+435SIGRTMAX-10
06SIGBUS16SIGURG26SIGRTMIN+536SIGRTMAX-9
07SIGFPE17SIGXCPU27SIGRTMIN+637SIGRTMAX-8
08SIGKILL18SIGXFSZ28SIGRTMIN+738SIGRTMAX-7
09SIGUSR119SIGVTALRM29SIGRTMIN+839SIGRTMAX-6
0ASIGSEGV1ASIGPROF2ASIGRTMIN+93ASIGRTMAX-5
0BSIGUSR21BSIGWINCH2BSIGRTMIN+103BSIGRTMAX-4
0CSIGPIPE1CSIGIO2CSIGRTMIN+113CSIGRTMAX-3
0DSIGALRM1DSIGPWR2DSIGRTMIN+123DSIGRTMAX-2
0ESIGTERM1ESIGSYS2ESIGRTMIN+133ESIGRTMAX-1
0FSIGSTKFLT1FReserved2FSIGRTMIN+143FSIGRTMAX

killall 명령어

PID가 아닌 이름으로 kill 시그널을 보낸다. 이름에 부합하기만 하면 해당되는 모든 프로세스가 시그널을 받게 된다. 옵션은 다음과 같다.

-I, —ignore-case대소문자 구분을 무시
-g, —process-group프로세스가 속한 그룹에도 시그널을 보냄
-l, —list시그널의 목록을 표시
-s, —signal시그널 수동 지정
-u, —user지정한 사용자의 프로세스에 시그널을 보냄
-v, —verbose시그널이 성공적으로 보내졌는지 표시
-w, —wait모든 프로세스가 종료할 때까지 기다림
-i프로세스 종료 전 사용자에게 물어봄

pkill 명령어

문자열 패턴과 이름이 부합하는 프로세스에게 시그널을 보내는 명령어이다. 자세한 옵션은 다음과 같다.

-(signal), —signal (signal)시그널 지정
-g, —pgroup pgrp,…이펙티브 그룹 ID 지정
-G, —group gid,…리얼 그룹 ID 지정
-t , —terminal term,…특정 터미널 지정
-u, —euid euid,…이펙티브 사용자 ID 지정
-U, —uid uid,…리얼 사용자 ID 지정

프로세스 전환

jobs, fg, bg 명령어

현재 실행 중인 작업 목록을 출력한다. jobs -l 의 경우 PID 정보를 추가로 표시하고 jobs -p 의 경우 PID만 표시한다. fg와 bg 명령어는 각각 작업을 포어그라운드와 백그라운드로 지정하는 명령이다. 작업 지정 방식은 다음과 같다; 작업 번호가 1이라면 %1로 기재한다. 현재 작업 번호는 %, %+, %% 중 하나를 사용하며, 이전 작업은 %-, %중 하나를 사용한다.

프로세스 우선순위

nice, renice 그리고 nohup 명령어

-20부터 19까지의 우선순위를 지정하는 명령어이며, 이 명령어는 프로세스 스케줄러에 영향을 준다. 숫자가 낮으면 그만큼 우선순위가 높다는 것이다. nice 명령의 경우 실행할 명령어를 미리 지정해야 하는 반면 renice 명령어는 이미 실행 중인 프로세스에 대해 우선순위 지정이 가능하다. nohup 명령어는 로그아웃 시의 SIGHUP를 가로채는 명령어이다.

nice 명령과 renice 명령의 옵션은 다음과 같다.

nice-n, —adjustment기존의 값에 지정한 값을 더함
renice-n, —priority기존의 값을 지정한 값으로 덮어씀
renice-g, —pgrp그룹 지정
renice-u, —user사용자 지정
renice-p, —pidPID 지정

프로세스 검색

pgrep 명령어

프로세스를 프로세스 이름 문자열 매칭 등 특정 기준으로 검색하는 명령어이다. 옵션은 다음과 같다.

-x패턴과 정확히 일치함
-g, —pgroup이펙티브 그룹 ID 지정
-G, —group리얼 그룹 ID 지정
-u, —euid이펙티브 사용자 ID 지정
-U, —uid리얼 사용자 ID 지정
-t, —terminal특정 터미널 지정