본문 바로가기
개발/리눅스

프로세스 관리

by 컴쏘 2023. 6. 2.
728x90

프로세스 vs 바이너리

  • 코드 이미지 또는 바이너리 : 실행파일
  • 실행 중인 프로그램 : 프로세스
    • 가상 메모리 및 물리 메모리 정보
    • 시스템 리소스 관련 정보
    • 스케줄링 단위

리눅스는 다양한 프로세스 실행 환경

  • 리눅스는 기본적으로 다양한 프로세스가 실행됨
    • 유닉스 철학 : 여러 프로그램이 서로 유기적으로 각자의 일을 수행하면서 전체 시스템이 동작하도록 하는 모델

foreground process / background process

foreground process : 쉘(shell)에서 해당 프로세스 실행을 명령한 후, 해당 프로세스 수행 종료까지 사용자가 다른 입력을 하지 못하는 프로세스

    예를 들어 ls -al을 입력하면 ls -al의 출력결과가 전부 나온 후에 그 다음 명령을 입력할 수 있음

background process : 사용자 입력과 상관없이 실행되는 프로세스

쉘 (shell) 에서 해당 프로세스 실행 시, 맨 뒤에 &를 붙여줌 (&를 붙이면 한 명령어가 실행되는 중에 다른 명령어를 입력할 수 있음)

# find / -name '*.py' > list.txt &
[1] 57

[1]은 작업 번호 (job number), 57은 pid(process ID)를 나타냄

foreground process 제어하기

    [crtl] + c : 프로세스 작업 취소(해당 프로세스는 완전 종료)

process 상태 확인 - ps 명령어

    사용법 : ps [option(s)]

    option(s)

-a : 시스템을 사용하는 모든 사용자의 프로세스 출력
		 (보통 aux와 같이 u, x 옵션과 함께 사용)
-u : 프로세스 소유자에 대한 상세 정보 출력 
-l : 프로세스 관련 상세 정보 출력 
-x : 터미널에 로그인한 후 실행한 프로세스가 아닌 프로세스들도 출력함 
		 주로 데몬 프로세스 (daemon process)까지 확인하기 위해 사용
		 본래 ps 명령은 현재 쉘(shell)에서 실행한 프로세스들만 보여주기 때문에
		 이 옵션을 사용하는 경우가 많음
-e : 해당 프로세스와 관련된 환경 변수 정보도 함께 출력 
-f : 프로세스 간 관계 정보도 출력 

데몬 프로세스(daemon process) : daemon은 악마를 의미함. 사용자 모르게 시스템 관리를 위해 실행되는 프로세스로 보통 시스템이 부팅될 때 자동 실행 (ex. ftpd, inetd 등)

 

    주요 ps 출력 정보 항목

USER : 프로세스를 실행시킨 사용자 ID 
PID : 프로세스 ID 
%CPU : 마지막 1분 동안 프로세스가 사용한 CPU시간의 백분율 
%MEM : 마지막 1분 동안 프로세스가 사용한 메모리 백분율 
VSZ : 프로세스가 사용하는 가상 메모리 크기
RSS : 프로세스에서 사용하는 실제 메모리 크기 
STAT : 프로세스 상태 
START : 프로세스가 시작된 시간 
TIME : 현재까지 사용된 CPU 시간 (분:초)
COMMAND : 명령어 

프로세스 중지시키기

kill 명령어

    사용법

        kill % 작업 번호(job number)

        kill 프로세스 ID(pid) → 이렇게만 사용했을 때 중지가 안되는 경우가 있음

        작업 강제 종료 옵션 -9 → 따라서 -9 옵션을 같이 많이 사용함

# find / -name '*.py' > list.txt &
[1] 57
# kill -9 57 

주로 사용하는 프로세스 명령 (적어도 이 명령은 편하게 사용해야 함)

  • px aux | grep [process 명] : 프로세스가 실행중인지를 확인하고, 관련 프로세스에 대한 정보 출력
  • kill -9 [process ID(pid)] : 해당 프로세스를 강제로 죽임
  • [명령] & : 터미널에서 다른 작업을 해야하거나, 프로세스 실행에 오랜 시간이 걸릴 경우 background로 실행
  • [ctrl] + c : 프로세스 종료 (실행 취소)

본 글은 인프런 강의 "풀스택을 위한 도커와 최신 서버 기술"에 대해 공부하여 정리한 글입니다.
[강의 링크] : https://www.inflearn.com/course/%EC%84%9C%EB%B2%84%EA%B8%B0%EC%88%A0-%ED%92%80%EC%8A%A4%ED%83%9D-3/dashboard
728x90

'개발 > 리눅스' 카테고리의 다른 글

초간단 VM 사용법  (0) 2023.06.02
우분투 패키지 관리  (0) 2023.06.02
하드링크와 소프트링크  (0) 2023.06.02
리다이렉션과 파이프  (0) 2023.06.02
리눅스 파일시스템 및 사용자 관리  (0) 2023.06.01