IT STUDY LOG
[리눅스 운영체제] 07. 서비스 관리 본문
# 학습 목표
- 서비스 관리
- 시스템 관리자가 하는 일을 이해할 수 있다.
- 사용자 및 루트 권한에 대해 이해하고, 사용자 및 그룹 관리를 할 수있다.
- 파일의 권한을 변경하고 관리할 수 있다.
- 프로그램과 프로세스의 차이를 이해하고, 프로세스를 확인/종료할 수 있다.
- 백그라운드 프로세스와 서비스를 이해하고, 관리할 수 있다.
- cron 및 bash 스크립트를 이용해서 자동화를 할 수 있다.
# 학습 내용
1. 데몬과 서비스
- 데몬과 서비스
데몬 서비스 - 리눅스 환경에서 시스템 초기화 후 init이라는 특별한 프로그램에 의해 자발적으로 백그라운드에서 실행하는 프로그램
- 백그라운드에서 작동하는 프로세스라는 의미로 통용
(ex) syslogd, httpd 처럼 프로그램 이름 끝에 d가 붙는 프로세스
- 수행하는 일
> 하드웨어 장치 관리
> 보조 기억장치와 디렉토리 연결(마운트)
> 네트워크를 통한 프로세스간 통신(소켓)
> 애플리케이션 수준의 서비스 제공
- 운영체제의 관점- 데몬의 역할 중 애플리케이션 수준의 서비스를 간략하게 지칭하는 것
- 사용자의 관점
- 대표적인 데몬의 예: 웹 서버 (httpd)
- (실습) 간단한 HTML 파일을 만들어 웹서버에 띄워 crul이라는 유틸리티를 통해 해당 주소로 접속
# index.html 파일 생성
roheerumi@devops:~/devops$ echo "<html><body><h1>roheerumi test</h1></body></html>" > index.html
# 웹 서버 실행 후 8888 포트 오픈
roheerumi@devops:~/devops$ busybox httpd -h . -p 8888 # 각종 유틸리티를 담은 리눅스용 애플리케이션
# 웹 서버 접속
roheerumi@devops:~/devops$ curl http://localhost:8888
<html><body><h1>roheerumi test</h1></body></html>
# 프로세스 확인 명령으로 httpd 데몬 작동 여부 확인
roheerumi@devops:~/devops$ ps aux | grep httpd
roheeru+ 3659 0.0 0.0 2428 72 ? Ss 11:21 0:00 busybox httpd -h . -p 8888
roheeru+ 3665 0.0 0.0 18992 712 pts/1 R+ 11:21 0:00 grep --color=auto httpd
# PID로 해당 데몬 kill
roheerumi@devops:~/devops$ kill -9 3659
# 해당 웹서버 접속 실패
roheerumi@devops:~/devops$ curl http://localhost:8888
curl: (7) Failed to connect to localhost port 8888: 연결이 거부됨
2. 대표적인 데몬: cron
- 대표적인 데몬의 예: cron 데몬
- 스케쥴에 따라 백그라운드에서 작업을 실행하는 도구
- 크론탭 사용 문법:
사용법 의미 분 / 시 / 일 / 월 / 요일 / 작업 - 분 : 0 ~ 59분로 표현
- 시 : 0 ~ 23시로 표현
- 일 : 1 ~ 31일로 표현
- 월 : 1 ~ 12월로 표현
- 요일 : 0(일요일) ~ 6(토요일)로 표현
> * : 시간을 표현하는 각 필드들은 각각 *로 표현 가능하며 그럴 경우 모든 시간을 의미
> /간격 : 매 간격을 표시
- 작업: 지정된 시간에 수행할 작업을 절대 경로로 기술, 필요한 옵션 및 인수를 함께 나열 - 예시
사용 예시 의미 0 1 * * * batch.sh 매일 01시에 batch.sh 실행 0 8-10 * * * batch.sh 매일 08시 - 10시에 batch.sh 실행 0 1,2,5 * * * batch.sh 매일 01, 02, 05시에 batch.sh 실행 */5 * * * * batch.sh 매 5분 간격으로 batch.sh 실 - (실습) 매 분마다 날짜와 시스템 가동 시간을 파일에 기록
# 크론탭에 스케쥴 등록
roheerumi@devops:~/devops$ crontab -e # edit 크론탭 파일 수정
no crontab for roheerumi - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed
Choose 1-4 [1]: 1 # nano 에디터로 등록
# 등록 내용 * * * * * echo $(/bin/date) - $(/usr/bin/uptime) >> ~/uptime.log
# 정상적으로 크론탭 등록
crontab: installing new crontab
# 로그 기록 중 확인
roheerumi@devops:~/devops$ cd ..
roheerumi@devops:~$ ls
devops uptime.log 공개 다운로드 문서 바탕화면 비디오 사진 음악 템플릿
roheerumi@devops:~$ tail -f uptime.log
2023. 03. 13. (월) 11:25:01 KST - 11:25:01 up 26 min, 1 user, load average: 0.06, 0.16, 0.18
2023. 03. 13. (월) 11:26:01 KST - 11:26:01 up 27 min, 1 user, load average: 0.02, 0.12, 0.17
# 등록한 크론탭 삭제
roheerumi@devops:~$ crontab -r # remove, 크론탭 삭제
roheerumi@devops:~$ crontab -l # list, 크론탭 확인
no crontab for roheerumi
3. 서비스 관리 (systemctl)
- systemctl
- 모든 데몬의 목록을 확인할 수 있는 명령어
사용 방법 의미 systemctl --type=[타입명] --type=[타입명] : 해당 타입에 해당하는 서비스만 출력
(ex) systemctl --type=service : 서비스 목록만 출력systemctl list-unit-files 설치된 유닛(데몬) 출력 systemctl enable 유닛명 부팅 시 유닛 활성화 systemctl disable 유닛명 유닛이 부팅 시 비활성화 systemctl start 유닛명 유닛을 즉시 활성화 systemctl stop 유닛명 유닛을 즉시 비활성화 systemctl restart 유닛명 유닛을 즉시 재시작 systemctl status 유닛명 유닛의 상태, 최근 로그 조회
- 모든 데몬의 목록을 확인할 수 있는 명령어
! Action Items !
Q. 로그에 따르면, 최근에 cron 데몬은 어떤 명령을 실행시켰나요? CMD (echo $(/bin/date) - $(/usr/bin/uptime) >> ~/uptime.log) 명령 실행
Q. 또한 서비스를 다시 실행하려면 어떤 명령을 사용해야 하나요?
# Q1. 크론 로그 확인
roheerumi@devops:~$ systemctl status -l cron # cron 데몬의 로그 확인
● cron.service - Regular background program processing daemon
Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-03-13 10:58:50 KST; 42min ago
Docs: man:cron(8)
Main PID: 602 (cron)
Tasks: 1 (limit: 4615)
Memory: 500.0K
CGroup: /system.slice/cron.service
└─602 /usr/sbin/cron -f
3월 13 11:25:01 devops CRON[3700]: (roheerumi) CMD (echo $(/bin/date) - $(/usr/bin/uptime) >> ~/uptime.log)
3월 13 11:25:01 devops CRON[3699]: pam_unix(cron:session): session closed for user roheerumi
3월 13 11:26:01 devops CRON[3736]: pam_unix(cron:session): session opened for user roheerumi by (uid=0)
3월 13 11:26:01 devops CRON[3737]: (roheerumi) CMD (echo $(/bin/date) - $(/usr/bin/uptime) >> ~/uptime.log)
3월 13 11:26:01 devops CRON[3736]: pam_unix(cron:session): session closed for user roheerumi
3월 13 11:27:01 devops CRON[3766]: pam_unix(cron:session): session opened for user roheerumi by (uid=0)
3월 13 11:27:01 devops CRON[3767]: (roheerumi) CMD (echo $(/bin/date) - $(/usr/bin/uptime) >> ~/uptime.log)
3월 13 11:27:01 devops CRON[3766]: pam_unix(cron:session): session closed for user roheerumi
3월 13 11:30:01 devops CRON[3811]: pam_unix(cron:session): session opened for user root by (uid=0)
3월 13 11:30:01 devops CRON[3811]: pam_unix(cron:session): session closed for user root
# 크론 재시작
roheerumi@devops:~$ systemctl restart cron
roheerumi@devops:~$ ps -ef | grep cron
root 4011 1 0 11:43 ? 00:00:00 /usr/sbin/cron -f
roheeru+ 4014 1853 0 11:43 pts/1 00:00:00 grep --color=auto cron
# 크론 종료
roheerumi@devops:~$ systemctl stop cron
roheerumi@devops:~$ ps -ef | grep cron
roheeru+ 4049 1853 0 11:45 pts/1 00:00:00 grep --color=auto cron
'devops bootcamp 4 > 서비스 운영 기초' 카테고리의 다른 글
[리눅스 운영체제] 09. 시스템 모니터링 (1) | 2023.03.14 |
---|---|
[리눅스 운영체제] 08. 자동화 (0) | 2023.03.13 |
[리눅스 운영체제] 06. 프로세스 관리 (0) | 2023.03.13 |
[리눅스 운영체제] 05. 관리자로서의 리눅스 (1) | 2023.03.11 |
[리눅스 운영체제] 04. 출력 관련 명령 (1) | 2023.03.11 |
Comments