-
[5일차] 프로세스 관리교육/코드스테이츠 2022. 12. 2. 19:21
https://www.servermon.kr/m/board.html?code=servermon_board2&page=10&type=v&board_cate=&num1=999794&num2=00000&s_id=&stext=&ssubject=&shname=&scontent=&sbrand=&sgid=&datekey=&branduid=&number=&lock=N 프로그램과 프로세스
- 프로그램
- 프로그래밍 언어를 사용하여 사용자가 원하는 일을 처리 할 수 있도록 수행절차를 표현해 놓은 명령어들의 집합이다.
- 컴퓨터에서 작업을 실행하기 위한 코드로 ,정적인 상태의 파일이라고 볼 수 있다.
- 프로세스
- 컴퓨터에서 실행되고 있는 프로그램
- 프로그램을 실행하면, 운영체제로부터 실행에 필요한 메모리를 할당 받아 프로그램의 코드를 실행한다.
프로그램과 프로세스의 차이점
프로그램은 실행 가능한 파일로써 디스크에 저장되어 있고, 프로세스는 운영 체제에서 실행 중인 프로그램의 인스턴스이다.
- 스레드(Thread)
- 한 가지 작업을 실행하기 위해 순차적으로 실행한 코드를 실처럼 이어 놓았다고 해서 유래된 이름이다.
- 한 프로세스 내에 스레드가 두 개라면 코드가 실행되는 흐름이 두 개 생긴다는 의미다.
- 멀티 스레드(Multi-Thread)
- 하나의 프로세스 내에서 여러 개의 스레드가 동시에 실행되는 것을 말한다.
- 대용량 데이터의 처리시간을 줄이기 위해 데이터를 분할하여 병렬로 처리하는 데에 사용한다.
- 여러 클라이언트의 요청을 처리하는 서버를 개발할 때 사용한다.
프로세스 실행 방식
리눅스의 프로세스는 포그라운드(foreground)와 백그라운드(background)방식으로 동작한다.
- 포그라운드(foreground)
- 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 기다려야 하는 방식을 포그라운드 방식이라고 하며, 이러한 방식으로 처리되는 프로세스를 포그라운드 프로세스라고 한다.
- 포그라운드 방식은 한 번에 하나의 명령을 실행하므로 동시에 여러 프로세스를 실행하기 어렵다.
- - 백그라운드(background)
- 프로세스가 실행되는 동안 뒤에서 다른 프로세스가 실행될 수 있어 한 터미널에서 여러 개의 프로세스를 동시에 실행 가능하다.
- 명령의 실행 시간이 많이 걸릴 것으로 예상되거나, 명령을 실행한 후 다른 작업을 해야할 경우 사용한다.
- 백그라운드 방식은 명령어 뒤에 &를 붙여서 실행하고, 다른 명령어를 추가적으로 입력할 수 있다.
- 하지만 백그라운드 방식으로 실행해도 사용자의 터미널 세션이 종료되면 실행중인 프로세스도 종료된다.
- 업시간이 오래 걸리는 작업인 경우 nohup 명령어를 이용하여 백그라운드로 실행하면 사용자의 터미널 세션이 종료되어도 작업이 종료될 때까지 프로세스를 실행한다.
프로세스 목록 확인
- ps: 현재 실행 중인 프로세스의 목록을 확인할 수 있다.
- ps명령어로 출력되는 값들
- PID : 프로세스 번호
- TTY : 프로세스가 실행된 터미널의 종류와 번호
- TIME : 프로세스 실행 시간
- UNIX 방식
- ps -e : 시스템에서 실행 중인 모든 프로세스의 정보를 출력
- ps -f : 프로세스의 자세한 정보를 출력
- ps -u uid : uid로 특정한 사용자에 대한 모든 프로세스의 정보를 출력
- ps -p pid : pid로 지정한 특정 프로세스의 정보를 출력
- BSD 방식
- ps a : 터미널에서 실행한 프로세스의 정보를 출력한다.
- ps u : 프로세스 소유자의 이름, CPU 사용량, 메모리 사용량 등 상세 정보를 출력한다.
- ps x : 시스템에서 실행 중인 모든 프로세스의 정보를 출력한다.
- 이러한 옵션은 방식 별로 섞어서 사용할 수 있다.
- 보통 프로세스의 관계를 보기 위해서 UNIX 방식인 ps -ef를, 프로세스의 상태를 보는 용도로는 BSD 방식인 ps aux를 가장 많이 사용한다.
- ps - f의 출력 정보
- UID : 프로세스를 실행한 사용자 ID
- PPID : 부모 프로세스 번호
- C : CPU 사용량(%)
- STIME : 프로세스의 시작 날짜나 시간
- TTY : 프로세스가 실행된 터미널의 종류와 번호
- STAT : 프로세스 상태
- ps a, u, x의 출력 정보
- USER : 사용자 계정 이름
- %CPU : CPU 사용량(%)
- %MEM : 물리적 메모리 사용량(%)
- RSS : 사용하고 있는 물리적 메모리의 크기(kb)
- VSZ : 사용하고 있는 가상 메모리의 크기(kb)
- START : 프로세스 시작 시간
- pstree
- 컴퓨터의 전체 프로세스를 구조화하여 확인할 때 사용한다.
- 트리구조로 도식화하여 프로세스를 확인할 수 있고 부모 관계를 한 눈에 파악할 수 있다.
- 프로세스 관리 – kill
- 특정 프로세스에 작업 중지, 실행 종료, 대기, 재시작, 강제 종료 등의 시그널을 전달하기 위해서 kill 명령을 사용한다.
- kill -l 명령을 사용하면, 사용할 수 있는 시그널의 종류를 확인 할 수 있다.
- 주로 사용하는 시그널이다.
- SIGHUP : 재시작할 때 사용
- SIGINT : 실행 중지 시그널, Ctrl + c
- SIGKILL : 프로세스 강제 종료
- SIGTERM : 프로세스 정상종료 (기본 명령)
- SIGCONT : 정지된 프로세스 실행
- SIGSTOP : 터미널에서 입력되는 정지 시그널
- SIGTSTP : 실행 정지 후 재실행 대기, Ctrl+ z
- 시그널을 이용해 kill 명령을 사용하기
- kill -시그널번호(시그널명) %작업번호
- kill –시그널번호(시그널명) PID(프로세스 번호)
● 백그라운드에서 수행 중인 프로세스는 jobs 명령으로 확인할 수 있다.
데몬
- 데몬
- 리눅스 환경에서 시스템이 초기화가 끝난 후, init 이라는 특별한 프로그램에 의해 자발적으로 백그라운드에서 실행하는 프로그램을 의미하나, 일반적으로 “백그라운드에서 작동하는 프로세스”의 의미로 통용됨
- 보통 syslogd, httpd 처럼 프로그램 이름 끝에 d 가 붙는다.
대표적인 데몬의 예
- 웹 서버(httpd)
- 사용자가 어떤 웹 페이지에 접근하고 원하는 결과를 얻으려면, 웹 페이지를 제공하는 프로세스가 상시 실행중이어야 하며 이러한 프로그램을 “웹 서버” 라고 한다
- 일반적으로 백그라운드에서 작동되어 데몬이라고 부를 수 있다,.
- cron - 대표적인 데몬의 예
- 데몬은 스케쥴에 따라 명령을 실행하는 도구이다.
- ex)예를 들어, “매일 오후 10시에 백업 명령을 수행해줘”와 같은 작업을 가능하게 한다.
- 해당 작업을 백그라운드에서 실행하며 사람의 개입 없이 자동적으로 주기에 따라 명령을 실행할 수 있다.
데몬 확인하기
- systemctl
- 모든 데몬의 목록은 systemctl으로 확인할 수 있다.
- 서비스 목록만 확인 시 systemctl --type=service를 사용한다.
- systemctl 하위 명령
- 쉘(Shell)
- 운영체제의 기능이나 서비스를 구현할 수 있는 명령어를 사용자에게 받아서 실행할 수 있는 인터페이스를 제공한다.
- 사용자의 명령어를 실행해주는 프로그램으로서 사용자와 운영체제의 다리 역할을 한다.
===========================================
참고 자료
https://www.shellscript.sh/first.html
Shell Scripting Tutorial
A First Script - From the Shell Scripting Tutorial at https://www.shellscript.sh/
www.shellscript.sh
'교육 > 코드스테이츠' 카테고리의 다른 글
[7일차] 클라이언트-서버 아키텍처 (0) 2022.12.06 [6일차] 리눅스 실습 (0) 2022.12.05 [4일차] 관리자로서의 리눅스 (0) 2022.12.01 [3일차] 왜 리눅스인가? (0) 2022.11.30 [2일차] 규모에 따른 운영 (0) 2022.11.29 - 프로그램