- 프로세스
- 실행 중인 프로그램은 프로세서라고 한다
- 실행시 번호(PID)가 할당되어 관리된다
- 입력없이 실행 되는 Background 프로세스
- 명령 입력 후 수행 종료까지 기다려야하는 Foreground 프로세스가 있다
- 프로세스 생성
- fork
- 메모리 할당 후 복사본 형태의 프로세스 실행
- 기존 프로세스는 그대로 실행된다
- exec
- 원래 프로세스를 새로운 프로세스로 대체하는 형태
- 호출한 프로세스 메모리에 새로운 프로세스의 코드를 덮어쓴다
- 리눅스 부팅시 커널이 init 프로세스를 발생시키고 PID 1번을 할당한다
- fork
- 프로세스 종류
- Foreground
- 종료까지 기다리는 프로세스
- Background
- 뒤에서 실행
- 포어그라운드 실행 명령어 뒤에 & 를 추가하여 실행한다
- 다중 작업에 유용하다
- Foreground
- 작업 전환
- 포어→ 백
- ctrl + Z로 대기 상태 후 bg 입력
- 백→ 포어
- fg %작업번호 입력
- 작업번호는 jobs 명령어로 확인
- 포어→ 백
- 시그널
- 프로세스끼리 서로 통신할 때 사용한다
- 특정 프로세스가 다른 프로세스에게 메시지를 보낼 때 시그널을 이용한다
- 종류
- 1번 SIGHUP: 재시작
- 2번 SIGINT: 시그널 실행 중지 (CTRL + C 다시 실행)
- 3번 SIGQUIT: 시그널 실행 중지 (CTRL + | 다시 실행)
- 9번 SIGKILL: 강제 종료
- 15번 SIGTERM: 정상종료
- 18번 SIGCONT: SIGSTOP 정지된 것 다시 실행
- 19번 SIGSTOP: 정지 시그널
- 20번 SIGTSTP: 실행중지 (CTRL + Z 다시 실행)
- 데몬
- 계속 실행되는 프로세스 (백그라운드 실행)
- 서버 역할 프로그램들이 이에 해당
- 이름 뒤에 d를 붙인다
- 데몬 실행 방법
- standalone 방식
- 부팅시 실행
- 메모리에 계속 상주하여 클라이언트 요청 처리 (웹, 메일 등)
- inet 방식
- 클라이언트 요청시 프로세스 실행
- 종료 후 자동 종료
- 커널 2.4부터 inetd→ xinetd가 수행
- standalone 방식
프로세스 명령어
- ps (process status)
- 동작 중인 프로세스 상태 출력
- 작업 중인 셸 확인
- ps aux: 소유자 정보도 함께 출력
- 옵션
- USER: BSD 계열 프로세스 사용자 이름
- VSZ: 가상 메모리 사용량 (K, 페이지 단위)
- RSS: 실제 메모리 사용량
- TTY: 프로세스와 연결된 터미널
- STAT: 현재 프로세스 상태
- TIME: CPU 사용 시간
- PPID: 부모 프로세스의 PID
- PID: 프로세스 식별번호
- PRI: 우선 순위
- STAT의 주요값
- R: 실행 중 혹은 실행될 수 있는 상태
- S: SLEEP, 기다리는 상태
- D: 디스크에 의해 대기 상태
- T: 정지된 상태
- Z: 종료되었는데 미회수되어 메모리 차지하는 좀비상태
- pstree
- 프로세스의 상태를 트리구조로 출력
- 옵션
- -a: 명령행 인자까지 출력
- -h: 현재와 조상 프로세서를 하이라이트로 강조하여 출력
- top
- 동작 중인 프로세스 상태를 실시간으로 화면에 출력 (CPU, 메모리, 부하상태)
- kill
- 프로세스에 시그널을 보내며 옵션없이 실행시 종료 신호 (15, SIGTERM) 를 보낸다
- 중지시킬 수 없는 프로세스 종료시 사용
- kill 명령어에 PID 작성하여 종료
- 예시
- kill -l: 시그널 종류 출력
- kill -9 PID: 해당 PID 프로세스 강제 종료
- kill -KILL PID, kill -SIGKILL PID 도 가능
- kill -HUP PID: 해당 PID 프로세스 재시작
- kill %2: 작업번호가 2인 프로세스 종료
- kill -s SIGTERM PID: 해당 PID 프로세스 기본 종료
- killall
- 같은 데몬의 여러 프로세스를 한번에 종료
- 이건 PID 미사용! 프로세스명을 사용한다
- 예시
- killall httpd: httpd 모두 종료
- killall -HUP httpd: 다시 실행
- killall -v -9 httpd: 모두 종료
- service httpd stop: 모두 종료
- nice
- 프로세스 우선 순위 변경
- NI(우선순위)의 기본 값은 0
- 범위는 -20~19
- 일반 사용자는 NI값 증가만 가능
- root만 NI 감소 (순위가 높아진다는 것)
- 예시
- nice -10 bash
- 순위 낮춤, -는 대쉬지 마이너스가 아님
- 순위 높이려면 —10
- nice -10 bash
- renice
- 실행 중인 프로세스 우선순위 변경
- PID, 사용자이름, 그룹ID 이용
- nice는 기존꺼 증감이라면, renice는 바로 설정 (즉시 부여)
- root만 NI 값 낮춰서 순위 높일 수 있다
- NI 범위는 -20~19
- renice가 -10
- nohup
- 로그아웃하거나 작업 중인 터미널이 닫혀도 실행 중인 프로세스를 백그라운드로 작업되게 해주는 명령
- 명령행 뒤에 & 명시
- 스케줄링
- 특정 시간에 특정 작업을 수행하는 것
- at과 cron을 사용하며 at은 한번만 실행, cron은 주기적인 프로세스
- cron
- 시스템 운영에 필요한 작업은 root 권한으로 /etc/crontab에 등록해서 사용자는 crontab 명령 수행
- crontab 관련 명령
- crontab -l: 설정된 crontab 내용 출력
- crontab -e: crontab 내용 작성 및 수정
- crontab -r: 내용 삭제
- crontab -u: root가 특정 사용자의 crontab 파일을 다룰 때 사용
- ex) crontab -e -u 사용자명: 해당 사용자의 crontab 수정
- crontab 설정
- 일요일은 0 혹은 7
- 월~금은 1~6
- *(분) *(시간) *(날짜) *(달) *(요일)
- 예시
- 1-12/2 는 1~12개월까지 2개월 마다 라는 뜻
- 1, 3, 5는 월, 수, 금
728x90
'Computer Science > OS' 카테고리의 다른 글
[OS] 리눅스 / 소프트웨어 설치 (rpm, yum 등) (0) | 2024.09.04 |
---|---|
[OS] 리눅스 / 에디터 (0) | 2024.09.04 |
[OS] 리눅스 / 셸 (0) | 2024.09.04 |
[OS] 리눅스 / 파일 시스템, 쿼터 (0) | 2024.09.03 |
[OS] 리눅스 / 허가권, 소유권, 특수 권한 (0) | 2024.09.03 |