리눅스에서 프로세스 목록 확인하는 방법: 종합 가이드
소개
리눅스 운영체제에서 프로세스는 실행의 기본 단위입니다. 프로세스는 시스템 작업, 사용자 애플리케이션, 백그라운드 서비스 등 실행 중인 프로그램의 인스턴스를 나타냅니다. 프로세스를 효율적으로 관리하고 나열하는 것은 시스템 관리자와 사용자 모두에게 중요하며, 시스템 성능 모니터링, 문제 진단, 자원 최적화에 도움을 줍니다.
프로세스를 나열하고 관리하는 방법을 이해하면 자원을 많이 사용하는 애플리케이션 식별, 소프트웨어 디버깅, 시스템 안정성과 보안 유지 등 다양한 상황에서 유용합니다. 이 글에서는 ps
, top
같은 기본 명령어부터 pstree
, lsof
같은 고급 도구까지 리눅스에서 프로세스를 나열하는 다양한 명령어와 도구를 종합적으로 안내합니다. 이 가이드를 마치면 리눅스 환경에서 프로세스를 효과적으로 관리할 수 있는 지식을 갖추게 될 것입니다.
프로세스 목록 확인 기본 명령어
ps
명령어
ps
명령어는 리눅스에서 프로세스를 나열할 때 가장 많이 사용되는 명령어 중 하나입니다. 현재 실행 중인 프로세스의 스냅샷을 제공합니다. 기본 사용법과 옵션은 다음과 같습니다:
ps
: 현재 셸에서 실행 중인 프로세스 표시.ps -e
또는ps -A
: 시스템에서 실행 중인 모든 프로세스 나열.ps aux
: 사용자 소유가 아닌 프로세스 포함 모든 프로세스의 상세 정보 표시.
사용 예:
ps
ps -e
ps aux
top
명령어
top
명령어는 실시간 시스템 모니터링을 위한 강력한 도구입니다. 시스템 프로세스의 동적 뷰를 제공하며 주기적으로 갱신되어 최신 정보를 보여줍니다.
top
을 실행하면 CPU 사용량, 메모리 사용량 등 시스템 통계와 프로세스 목록이 표시됩니다.q
키를 눌러top
인터페이스를 종료할 수 있습니다.
주요 옵션:
top -n 1
: 프로세스 목록을 한 번만 표시하고 종료.top -u [username]
: 특정 사용자의 프로세스만 표시.
사용 예:
top
top -n 1
top -u user
htop
명령어
htop
은 top
보다 더 사용자 친화적이고 시각적으로 보기 좋은 인터페이스를 제공하는 대화형 프로세스 뷰어입니다. 프로세스 목록을 가로 및 세로로 스크롤할 수 있고, 색상으로 정보를 구분해 보여줍니다.
htop
사용법:
- 패키지 관리자를 통해 설치합니다 (설치되어 있지 않은 경우):
sudo apt-get install htop # Debian 계열 sudo yum install htop # Red Hat 계열
- 단순히
htop
을 입력해 실행합니다:htop
pgrep
명령어
pgrep
명령어는 프로세스 이름이나 기타 속성을 기준으로 프로세스를 검색할 때 사용됩니다. 스크립트 작성 및 자동화에 특히 유용합니다.
기본 사용법:
pgrep [패턴]
: 주어진 패턴과 일치하는 프로세스 ID(PID)를 나열.pgrep -u [username] [패턴]
: 특정 사용자로 필터링.
사용 예:
pgrep bash
pgrep -u root sshd
고급 프로세스 목록 확인 기법
pstree
명령어
pstree
명령어는 프로세스를 트리 형식으로 표시하여 프로세스 간의 계층적 관계를 보여줍니다. 부모-자식 관계를 이해하는 데 매우 유용합니다.
pstree
: 모든 프로세스의 트리 표시.pstree -p
: 프로세스 ID(PID)를 포함하여 출력.pstree [username]
: 특정 사용자의 프로세스 트리 표시.
사용 예:
pstree
pstree -p
pstree root
lsof
명령어
lsof
(list open files) 명령어는 프로세스가 열고 있는 파일에 대한 정보를 나열합니다. 특정 파일이나 포트를 사용 중인 프로세스를 식별할 때 유용합니다.
기본 사용법:
lsof
: 모든 열린 파일 나열.lsof -u [username]
: 특정 사용자가 연 파일 표시.lsof [파일]
: 특정 파일을 열고 있는 프로세스 나열.lsof -i :[포트]
: 특정 네트워크 포트를 사용 중인 프로세스 나열.
사용 예:
lsof
lsof -u root
lsof /var/log/syslog
lsof -i :80
pidstat
명령어
pidstat
명령어는 CPU 사용량, 메모리 사용량, I/O 통계 등 리눅스 작업(프로세스)에 대한 통계를 제공합니다.
기본 사용법:
pidstat
: 작업별 CPU 사용량 표시.pidstat -r
: 메모리 사용량 표시.pidstat -d
: I/O 통계 표시.
사용 예:
pidstat
pidstat -r
pidstat -d
watch
명령어
watch
명령어는 프로그램을 주기적으로 실행하여 터미널에 출력을 보여줍니다. 명령어 출력 변화를 시간에 따라 관찰할 때 유용합니다.
기본 사용법:
watch [명령어]
: 지정한 명령어를 기본 2초 간격으로 반복 실행.watch -n [간격] [명령어]
: 다른 간격 지정.
사용 예:
watch ps -e
watch -n 5 netstat -tuln
실용 예제
시스템 성능 모니터링
시스템 성능 모니터링은 건강하고 반응성 좋은 시스템 유지에 필수적입니다. top
과 htop
명령어가 특히 유용합니다.
top
을 이용한 성능 모니터링
top
은 시스템 프로세스와 자원 사용 현황을 실시간으로 보여줍니다. 과도한 CPU 또는 메모리를 사용하는 프로세스를 식별하는 데 도움을 줍니다.
사용 예:
top
top
인터페이스에서:
PID
열은 프로세스 ID를 표시합니다.%CPU
열은 CPU 사용률을 표시합니다.%MEM
열은 메모리 사용률을 표시합니다.
htop
을 이용한 성능 모니터링
htop
은 top
보다 향상된 대화형 인터페이스를 제공합니다. 프로세스 정렬, 특정 프로세스 검색, 프로세스 종료를 인터페이스 내에서 직접 할 수 있습니다.
사용 예:
htop
htop
인터페이스에서:
- 화살표 키로 프로세스 목록을 탐색합니다.
F3
키로 특정 프로세스를 검색합니다.F9
키로 선택한 프로세스를 종료합니다.
특정 프로세스 관리
특정 프로세스를 관리하려면 ps
와 pgrep
같은 명령어로 프로세스를 찾고, 적절한 조치를 취합니다.
ps
와 pgrep
으로 프로세스 찾기
이름이나 기타 속성으로 프로세스를 찾을 때 ps
와 pgrep
이 효과적입니다.
ps
사용 예:
ps aux | grep apache2
pgrep
사용 예:
pgrep apache2
프로세스에 신호 보내기
프로세스 ID(PID)를 확인한 후에는 신호를 보내 프로세스를 관리할 수 있습니다. kill
명령어는 프로세스에 신호를 보내고, killall
은 이름이 일치하는 모든 프로세스에 신호를 보냅니다.
kill [PID]
: 기본 신호(SIGTERM)를 보내 프로세스 종료 시도.kill -9 [PID]
: SIGKILL 신호를 보내 강제 종료.killall [프로세스명]
: 지정한 이름의 모든 프로세스에 기본 신호 전송.
사용 예:
kill 1234
kill -9 1234
killall apache2
열린 파일 및 네트워크 연결 확인
lsof
명령어를 사용하면 특정 프로세스가 사용 중인 파일과 네트워크 연결을 확인할 수 있습니다. 파일 잠금이나 네트워크 포트 충돌 문제 진단에 유용합니다.
사용 예:
lsof /var/log/syslog
lsof -i :80
프로세스 트리 보기
pstree
명령어는 프로세스 간 부모-자식 관계를 시각화합니다. 프로세스 계층과 의존성을 이해하는 데 도움이 됩니다.
사용 예:
pstree
FAQ
리눅스에서 프로세스란 무엇인가요?
리눅스에서 프로세스는 실행 중인 프로그램의 인스턴스입니다. 프로그램 코드, 현재 활동, 메모리, 파일 디스크립터, 보안 속성 등 관련 자원을 포함합니다. 프로세스는 리눅스 운영체제의 기본 단위이며, 여러 프로그램을 동시에 실행할 수 있게 하는 멀티태스킹을 가능하게 합니다.
리눅스에서 실행 중인 모든 프로세스를 어떻게 나열하나요?
모든 실행 중인 프로세스를 나열하려면 ps
명령어를 적절한 옵션과 함께 사용합니다:
ps -e
또는
ps aux
실시간 뷰가 필요하면 top
이나 htop
명령어를 사용할 수도 있습니다.
top
과 htop
의 차이점은 무엇인가요?
top
은 시스템 프로세스와 자원 사용 현황을 실시간으로 보여주는 명령줄 도구입니다. htop
은 top
의 향상된 버전으로, 더 사용자 친화적이고 대화형 인터페이스를 제공합니다. htop
은 프로세스 목록 스크롤, 특정 프로세스 검색, 인터페이스 내에서 프로세스 종료 기능을 지원합니다.
특정 프로세스를 이름으로 어떻게 찾나요?
pgrep
명령어를 사용해 이름으로 프로세스를 검색할 수 있습니다:
pgrep process_name
예를 들어 "apache2"라는 이름이 포함된 모든 프로세스를 찾으려면:
pgrep apache2
리눅스에서 프로세스를 어떻게 종료하나요?
프로세스를 종료하려면 먼저 ps
, top
, pgrep
같은 명령어로 프로세스 ID(PID)를 확인합니다. 그런 다음 kill
명령어와 PID를 사용합니다:
kill PID
기본 신호로 종료되지 않으면 -9
옵션을 사용해 강제 종료할 수 있습니다:
kill -9 PID
프로세스의 계층 트리를 어떻게 표시하나요?
pstree
명령어를 사용하면 프로세스의 계층 트리를 표시할 수 있습니다:
pstree
프로세스 ID도 포함하려면:
pstree -p
열린 파일과 그것을 연 프로세스를 어떻게 나열하나요?
lsof
명령어는 프로세스가 연 파일 정보를 나열합니다. 모든 열린 파일을 보려면:
lsof
특정 파일을 사용 중인 프로세스를 보려면:
lsof /path/to/file
시스템 성능을 시간에 따라 어떻게 모니터링하나요?
watch
명령어를 사용하면 지정한 명령어를 주기적으로 실행하고 출력을 표시할 수 있습니다. 예를 들어 2초마다 실행 중인 모든 프로세스를 모니터링하려면:
watch ps -e
프로세스별 CPU, 메모리, I/O 사용 통계를 어떻게 자세히 확인하나요?
pidstat
명령어는 프로세스별 CPU, 메모리, I/O 사용 통계를 제공합니다. CPU 사용량을 보려면:
pidstat
메모리 사용량을 보려면:
pidstat -r
I/O 통계를 보려면:
pidstat -d
프로세스가 응답하지 않을 때 어떻게 해야 하나요?
프로세스가 응답하지 않으면 PID를 확인한 후 kill
명령어로 종료를 시도합니다. 종료되지 않으면 kill -9
명령어로 강제 종료할 수 있습니다:
kill -9 PID
프로세스를 종료하면 시스템이나 중요한 작업에 악영향이 없는지 반드시 확인하세요.