프로세스

shinyeongwoon·2022년 11월 1일
0

서버

목록 보기
9/18

프로세스 정의

  • 하드디스크에 저장된 실행 코드(프로그램)가 메모리에 로딩되어 활성화된 것
  • 예를 들어 웹 브라우저 프로그램인 파이어폭스는 하드디스크의 어딘가에 저정되어 있는데 이렇게 하드디스크에 저장된 파일을 '프로그램'이라 부름
  • 파이어폭스를 실행하여 화면에 나타난 상태(메모리에 로딩되어 화면에 나타난 상태가 더 정확한 표현)를 프로세스라 부름

포그라운드 프로세스

포그라운드 프로세스는 파이어폭스와 마찬가지로 실행하면 화면에 나타나서 사용자와 상호 작용을 하는 프로세스

백그라운드 프로세스

백그라운드 프로세스는 화면에 나타나지 않은 채 뒤에서 실행되는 프로세스

프로세스 번호

각 프로세스에 할당된 고유 번호
메모리에 로딩되어 활성화된 프로세스를 구분하려면 고유 번호가 필요함

작업 번호

현재 실행 중인 백그라운드 프로세스의 순차 번호

부모 프로세스와 자식 프로세스

모든 프로세스는 독립적으로 실행되는 것이 아니라 부모 프로세스에 종속되어 실행
예를 들어 파이어폭스는 x윈도우 프로세스가 구동된 상태에서 실행 되어야 함
-> x윈도우 : 파이어폭스의 부모 프로세스 , 파아이폭스 : x 윈도우의 자식 프로세스
만약 파이어폭스는 그대로 나두고 x 윈도우만 강제종료하면 파이어폭스도 종료됨
부모 프로세스를 종료하면 부모 프로세스에 종속된 자식프로세스도 종료 되는것

ps

현재 프로세스의 상태를 확인하는 명령어
많은 옵션과 함께 사용할 수 있다.
프로세스 번화와 상태를 확인할때는 ps -ef | grep 프로세스명 명령을 주로 사용

kill

프로세스를 강제로 종료하는 명령어
'-9' 옵션과 함께 사용하면 프로세스가 무조건 종료됨
응답하지 않고 무한 루프를 도는 프로세스는 kill -9 프로세스 번호 명령으로 강제 종료

pstree

부모 프로세스와 자식 프로세스의 관계를 트리 형태로 보여주는 명령어

실습

터미널에 무한 루프 프로세스 생성하기

yes > /dev/null

새로운 터미널 열고 현재 실행 중인 프로세스 확인 하기

ps -ef | grep yes

프로세스 번호 확인 후 kill 명령어로 프로세스 종료 해보기
ex) root 5526 4301 98 22:00 pts/1 00:04:47

kill -9 5529

kill 명령어로 프로세스를 종료하면 다른 터미널에서 실행 중인 것도 자동으로 종료됨
작동 중인 포그라운드 프로세스만 종료: 프로세스가 실행되고 있는 터미널에서 ctrl + c

  • 프로세스 상황 바꾸기

포그라운드 프로세스 -> 백그라운드 프로세스 -> 포그라운드 프로세스로 바꾸기

터미널에 yes > /dev/null 입력 후
ctrl+z를 눌러 프로세스를 일시 중지 시키고, bg 명령어 입력
잠시 중지된 프로세스를 백그라운드 프로세스로 계속 실행

jobs 명령어를 입력하면 현재 실행 중인 프로세스 확인 가능 맨앞에 나오는 것이 작업 번호

fg 작업 번호 명령을 입력하면 포그라운드 프로세스로 만들 수 있음

명령 실행 시 처음부터 백그라운드로 실행되도록 설정 하기

gedit 명령 입력 , gedit 실행
이때 gedit 명령을 입력한 터미널을 더 이상 사용할 수 없음

gedit를 종료하고 gedit & 명령을 실행하면 터미널을 지속적으로 사용가능
명령어 뒤에 붙이는 &는 백그라운드로 프로세스를 실행하겠다는 의미

데몬 (deamon) = 서비스

눈에 보이진 않지만 현재 시스템에서 동작 중인 프로세스
백그라운드 프로세스의 일종
서버 유형과도 밀접한 관련이 있음, '서비스 = 데몬 =서버 프로세스'라고 이해해도 무방

서비스와 소켓의 차이

서비스 : 평상시에도 늘 작동하는 서버 프로세스
소켓 : 필요할 때만 작동하는 서버 프로세스

서비스의 특징

시스템과 별도로 구동되는 프로세스
웹 서버, DB 서버, FTP 서버 등이 있음
주로 systemctl start/stop/restart 서비스명 명령으로 실행 및 종료
디렉터리에 있는 파일은 대부분 systemctl start/stop/restart 서비스명 명령으로 실행,중지,재시작 가능

소켓의 특징

서비스는 항상 구동 중이지만 소켓은 외부에서 특정 서비스를 요청하는 경우에면 systemd가 구동, 요청이 끝나면 소켓은 종료됨
소켓으로 설정된 서비스를 요청하는 경우 처음 연결되는데 걸리는 시간이 서비스보다 더 길 수도 있음
소켓과 관련된 스크립트 파일은 /lib/systemd/system/ 디렉터리에 있는 '소켓명.socket'

0개의 댓글