학습 목표
관리자로서의 리눅스 ~ 자동화
- 시스템 관리자가 하는 일을 이해할 수 있다.
- 사용자 및 루트 권한에 대해 이해하고, 사용자 및 그룹 관리를 할 수있다.
- 파일의 권한을 변경하고 관리할 수 있다.
- 프로그램과 프로세스의 차이를 이해하고, 프로세스를 확인/종료할 수 있다.
- 백그라운드 프로세스와 서비스를 이해하고, 관리할 수 있다.
- cron 및 bash 스크립트를 이용해서 자동화를 할 수 있다.
프로세스, 스레드, 멀티스레드
- 프로세스: 컴퓨터에서 실행되고 있는 프로그램
- 사용자가 프로그램을 실행하면, 운영체제로부터 실행에 필요한 메모리를 할당 ㅇ받아 프로그램의 코드를 실행함
- 하나의 프로그램은 다중 프로세스를 만들기도 함
- 스레드: 한 가지 작업을 실행하기 위해 순차적으로 코드가 실행되는 하나의 흐름
- 멀티 스레드: 멀티 태스킹을 위하여 프로세스마다 CPU 및 메모리 자원을 적절히 할당하고 병렬로 실행
- 대용량 데이터의 처리시간을 줄이기 위해 데이터를 분할하여 병렬로 처리하거나, UI를 가지고 있는 애플리케이션에서 네트워크 통신을 하기 위해 사용하거나, 여러 클라이언트의 요청을 처리하는 서버를 개발할 때 등 사용됨
프로세스 관리 - ps, pstree
- 프로세스 실행 방식
- 포그라운드(foreground)
- 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 기다려야 하는 방식
- 한 번에 하나의 명령을 실행하므로 동시에 여러 프로세스를 실행하기 어려움
- 백그라운드(background)
- 프로세스가 실행되는 동안 뒤에서 다른 프로세스가 실행될 수 있으므로 한 터미널에서 여러 개의 프로세스를 동시에 실행할 수 있음
- 명령의 실행 시간이 많이 걸릴 것으로 예상되거나, 명령을 실행한 후 다른 작업을 해야할 경우 사용
- 명령어 뒤에 &를 붙여서 실행하고, 다른 명령어를 추가적으로 입력할 수 있음
- 백그라운드 방식으로 실행해도 사용자의 터미널 세션이 종료되면 실행중인 프로세스도 종료됨
- nohup 명령어를 이용하여 백그라운드로 실행하면 사용자의 터미널 세션이 종료되어도 작업이 종료될 때까지 프로세스를 실행함
- 포그라운드(foreground)
- 프로세스 목록 확인
- ps
- 현재 실행 중인 프로세스의 목록 확인 가능
- PID: 프로세스 번호
- TTY: 프로세스가 실행된 터미널의 종류와 번호
- TIME: 프로세스 실행 시간
- CMD: 실행되고 있는 프로그램의 이름(명령)
- 옵션 - UNIX 방식, 보통 프로세스의 관계를 보기 위해 사용
- ps -e: 시스템에서 실행 중인 모든 프로세스의 정보 출력
- ps -f: 프로세스의 자세한 정보 출력
- UID: 프로세스를 실행한 사용자 ID
- PPID: 부모 프로세스 번호
- C: CPU 사용량(%)
- STIME: 프로세스의 시작 날짜나 시간
- TTY: 프로세스가 실행된 터미널의 종류와 번호
- STAT: 프로세스 상태
- ps -u uid: uid로 특정한 사용자에 대한 모든 프로세스의 정보 출력
- ps -p pid: pid로 지정한 특정 프로세스의 정보 출력
- 옵션 - BSD 방식, 프로세스의 상태를보는 용도로 사용
- ps a: 터미널에서 실행한 프로세스의 정보 출력
- ps u: 프로세스 소유자의 이름, CPU 사용량, 메모리 사용량 등 상세 정보 출력
- ps x: 시스템에서 실행 중인 모든 프로세스의 정보 출력
- USER: 사용자 계정 이름
- %CPU: CPU 사용량(%)
- %MEM: 물리적 메모리 사용량(%)
- RSS: 사용하고 있는 물리적 메모리의 크기(kb)
- VSZ: 사용하고 있는 가상 메모리의 크기(kb)
- START: 프로세스 시작 시간
- ps
- pstree
- 컴퓨터의 전체 프로세스를 구조화하여 확인하고 싶을 때 사용
- 트리구조로 도식화하여 프로세스 확인 가능
- 부모 관계 한 눈에 파악 가능
- macOS의 경우, brew install pstree 명령어 이용하여 설치
프로세스 관리 - kill
- 특정 프로세스에 작업 중지, 실행 종료, 대기, 재시작, 강제 종료 등의 시그널을 전달하기 위해 사용
- kill -시그널번호(시그널명) %작업번호(PID)
- HUP: 재시작
- INT: 실행 중지 시그널, ctrl + c
- KILL: 프로세스 강제 종료
- TERM: 프로세스 정상 종료(기본 명령)
- CONT: 정지된 프로세스 실행
- STOP: 터미널에서 입력되는 정지 시그널
- TSTP: 실행 정지 후 재실행 대기, ctrl + z
프로세스 관리 - jobs
- 백그라운드에서 수행 중인 프로세스 확인
- +: 현재 처리 중
- -: 다음에 작업할 프로세스
- 프로세스의 상태
- Running: 실행 중
- Stopped: 일시 중단(ctrl + z 입력)
- Terminated: 강제 종료(kill 명령 종료)
- Done: 정상 종료
- fg %작업번호 명령을 사용하여 포그라운드로 전환 가능
'Code States > TIL' 카테고리의 다른 글
[0313] 리눅스 운영체제 - 자동화 (0) | 2023.03.14 |
---|---|
[0313] 리눅스 운영체제 - 서비스 관리 (1) | 2023.03.14 |
[0310] 리눅스 운영체제 - 관리자로서의 리눅스 (0) | 2023.03.10 |
[0310] 리눅스 운영체제 - 출력 관련 명령어 (1) | 2023.03.10 |
[0309] 리눅스 운영체제 - 패키지와 패키지 매니저 (0) | 2023.03.09 |