프로세스
- 실행중인 프로그램
: 사용자 프로세스와 시스템 프로세스로 나뉨 (실행 주체에 따름)
- 자식 프로세스
: 프로세스에 의해 생성된 프로세스
- 부모 프로세스
: 자식 프로세스를 생성한 프로세스
- 리눅스의 시스템 프로세스
: systemd (모든 시스템 프로세스의 부모 프로세스)
: kthread (모든 스레드의 부모 스레드)
PID (Process ID)
- 프로세스의 생성순간 커널에서 부여하는 고유번호
: OS에서 PID를 통해 프로세스 식별
: PID는 부팅때마다 항상 달라짐
- systemd : 1번
- kthread : 2번
PCB (Process Status Block)
- 프로세스 수행에 관련된 모든 정보를 저장하는 프로세스 상태 블록
: 상태정보, 우선순위, 할당 받은 자원 등 저장
- 프로세스의 상태
: 준비 (CPU가 실행할 수 있는 상태)
: 실행 (CPU가 실행하고 있는 상태)
: 대기 (CPU의 수행이 중지된 상태)
- 문맥교환
: CPU가 프로세스를 번갈아가면서 실행하면서 PCB에 정보를 저장하는 과정
프로세스의 종류
- 데몬 프로세스
: 백그라운드에서 대기하다 서비스 요청이 있을 때 응답하는 프로세스
: 주로 네트워크 서비스 수행을 위해 쓰임
- 고아 프로세스
: 부모 프로세스가 소멸된 프로세스
- 좀비 프로세스
: 종료되지 않은 프로세스
프로세스 실행 방식
포그라운드 (foreground)
- 대화식으로 명령어를 수행하는 방식
: 보이는 곳에서 명령어를 수행
: 명령어의 이름만 입력하여 실행
백그라운드 (background)
- 보이지 않는 곳에서 수행되는 방식
: 하나 이상의 명령어를 동시해 수행 가능
- 백그라운드 실행 방법
: 명령어 &
jobs [옵션]
- 백그라운드에서 수행 중인 프로세스 목록 출력 (옵션 미사용시)
- 옵션
: %PID = 해당 프로세스 정보 출력
: %+ / %- = 작업 순서가 +, -인 프로세스 출력 (+ : 가장 최근에 접근한 작업 / - : +작업 직전에 접근한 작업 / 그 외)
bg
- 포그라운드에서 백그라운드 프로세스로 전환
: Ctrl+Z로 수행을 일시정지 후 실행
fg %PID
- 백그라운드에서 포그라운드 프로세스로 전환
프로세스 실행 종료
- 포그라운드 : Ctrl+C
- 백그라운드 : fg -> Ctrl+C
: kill PID
프로세스 관리 명령어
ps [옵션]
- 현재 수행중인 프로세스 정보 확인
- 옵션 (UNIX관련 옵션)
: -e = 모든 정보
: -f = UID와 PPID(부모프로세스의 PID) 포함 모든 정보
: -u UID / -p PID = ID에 해당하는 프로세스 정보 출력
- 옵션 (BSD 관련 옵션)
: a = 현재 터미널에서 수행중인 프로세스의 정보 출력
: u = 현재 터미널에서 수행중인 프로세스의 사용자계정, 메모리 및 CPU 정도 등 추가하여 출력
: x = 시스템 전체 프로세스의 정보출력
top [옵션]
- 프로세스의 실행 상태 실시간 확인
- 옵션
: d 초 = 갱신 시간 지정
: p PID = 해당 프로세스 정보 출력
: i = 좀비나 idle 상태 프로세스 제외
: n 횟수 = 횟수만큼 실행 현황 갱신후 출력
: u 사용자 = 해당 계정이 수행하는 프로세스 정보 출력
- 내부명령어
: 엔터, 스페이스, h, ?, k, u, M, P, q
nice [옵션] 프로세스
- 프로세스 생성시의 우선순위 설정 (우선순위가 높은 프로세스를 먼저 수행)
: 우선순위 값 = 기본값 20
: 우선순위 값은 -20부터 19까지 설정 가능 (값이 작을수록 높은 우선순위)
- 옵션
: n = 우선순위 값 +n (우선순위 하락)
: -n = 우선순위값 -n (우선순위 상승)
=> ex) nice --5 comeve (기존 우선순위 -5)
nice -5 comeve (기존 우선순위 +5)
renice 옵션 PID
- 실행중인 프로세스의 우선순위 변경
- 옵션
: n = 지정한 숫자대로 우선순위 설정 (-20 ~ 19)
=> ex) renice -15 1523 (우선순위 -15로 설정)
kill [시그널] PID
- 실행중인 프로세스 종료
: 해당 프로세스에게 시그널 전송하여 종료
- 옵션
: l = 시그널 리스트 확인
- 대표적인 시그널
: 15 (-SIGTERM) = 프로세스 종료
: 9 (-SIGKILL) = 프로세스 소멸
프로세스의 종류
init 프로세스
- 시스템 부팅시 시스템 운영에 필요한 각종 프로세스 실행
- PID 1번
- 우분투 RunLevel
: 시스템을 7단계로구분한 것
: 0 = 시스템 종료
: 1 = 단일 사용자 모드
: 2 ~ 4 = 다중 사용자 모드
: 5 = GUI 다중 사용자 모드
: 6 = 재부팅
=> 현재는 systemd 프로세스로 대체
systemd 프로세스
- init을 대체하여 프로세스를 생성하고 시스템을 관리하는 프로세스 데몬
: 프로세스를 병렬 실행시켜 성능 향상
- unit
: 시스템관리를 위한 구성요소
: service, socket, device, taget 등...
: service = 서비스의 시작과 중지 / 재시작 역할
systemctl 옵션 내부명령 유닛
- systemd의 service 유닛을 관리
: 옵션없이 사용할 경우 active 상태인 유닛만 출력
- 옵션
: a = 유닛 전체 출력
: t 유닛종류 = 지정한 종류의 유닛만 출력
- 내부명령
: start / stop / restart
: status = 상태 출력
: reload = 설정 파일 다시 읽기
: enable / disable = 부팅시 실행 / 미실행
: is-active = 시작되었는지 확인
데몬
- 항상 실행되면서 클라이언트의 요청이 있을때 서비스를 수행하는 시스템 프로세스
: 네트워크 서비스에서 활용
- 데몬의 동작 방식
: standalone = 메모리에서 항상 실행되다 즉각 처리
= httpd
: xinetd = 휴지(sleep) 상태에서 요청이 올때 wakeup하여 처리
- xinetd 데몬 (슈퍼데몬)
: 휴지상태인 데몬을 깨우는 데몬
: 요구발생시 요구한 서비스 분석후 해당 데몬 wakeup
작업예약
at [옵션] 시간 날짜/+증가시간
- 특정 명령어들을 지정된 시간에 한번만 실행
- 옵션
: q 큐이름 = 예약된 작업이 저장되는 큐의 이름을 지정
: f 파일명 = 예약작업을 파일에서 읽어들임
: l = 예약된 작업 목록 출력
: d =예약된 작업 삭제
- 시간
: hh:mm
: am/pm
: midnight
: moon
: now
- 날짜
: YYYY-MM-DD
: month num = 월과 일 (May 21)
: today
- 증가시간
: 지정된 시간과 날짜를 기준으로 몇 시간 후 인지 표현
atq [옵션]
- 예약 큐에 존재하는 예약된 작업 목록 출력
- 옵션
: q 큐이름 = 지정된 큐에 존재하는 예약 작업 목록 확인
atrm 작업번호 리스트
- 예약 작업 취소 (at -d)
crontab 옵션
- 일정 시간마다 반복되는 작업 예약
- 옵션
: l = 지정된 내용 확인
: r = 지정된 내용 취소
: e = 작업 지정
- crontab 파일 구조
: 분 (0~59)
: 시 (0~23)
: 일 (1~31)
: 월 (1~12)
: 요일 (0~6) = 일요일이 시작
: 작업내용
=> * 기호로 표시시 무관함을 표현
'Certification > 리눅스마스터' 카테고리의 다른 글
리눅스 기초 - 원격접속 (telnet / SSH) (0) | 2020.12.16 |
---|---|
리눅스 기초 - 네트워크 관리 (0) | 2020.12.16 |
리눅스 기초 - 파일 시스템과 디스크 관리 (0) | 2020.12.15 |
리눅스 기초 - 패키지와 파일 압축 (0) | 2020.12.15 |
리눅스 기초 - 디렉터리와 파일관리(2) (0) | 2020.12.15 |