daemon, cron

LeeKyoungChang·2022년 3월 4일
0
post-thumbnail

생활코딩 - Linux 을 듣고 정리한 내용입니다.

 

📚 1. daemon, intro

가전제품을 껐다가 켰다가 (open, close) ➡️ ls, rm, mkdir 만들었다가 삭제했다가
다만 daemon, server에서는

ex) 주소창에 www.naver.com 입력하고 enter 클릭할 시, 웹 페이지가 화면에 출력된다.
➡️ 인터넷 넘어서 서버가 있다.

스크린샷 2022-03-04 오전 11 02 32
  • 웹 브라우저는 언제든지 끄거나 켜서 웹에 접근할 수 있다.
  • 다만, 서버는 언제 웹 브라우저가 웹에 접근하는 지 알 수가 없다.
    • 서버에서는 웹 브라우저 카운터로 항상 켜져있어야 한다.

➡️ 그러므로, 서버에서는 daemon, service 형태의 소프트웨어가 존재해야 한다.

 

📚 2. service & auto start

  • apache : web server 중에 대표적인 것
  • mac에서는 기본적으로 apache가 설치되어 있다.
  • apachectl -v : apache 버전 확인

 

✔️ etc 디렉터리 안에 apache2가 존재

스크린샷 2022-03-04 오전 11 13 08
  • 현재 여기에는 daemon 관련 설정 파일들이 모여있다.

 

sudo apachectl start : apache 실행
sudo apachectl stop : apache 종료

 

etc/rc3.d/에 자동으로 실행시키고 싶은 프로그램의 링크를 걸면 된다.

etc/rc5.d/ : OS가 GUI 방식으로 구동된다면 여기다가 링크를 걸면된다.

  • S로 시작하면 시작
  • K로 시작하면 현재 시작하지 않는다.

 

  • service on, off 는 중요하다!

 

📚 3. job schedule cron : usage

cron : 정기적으로 종료, 전송, 조정할 때 이러한 작업들을 처리해야할 때 cron을 사용시 해결할 수 있다.

crontab -e : 정기적으로 하고자 하는 일들을 정의할 시 cron이라는 프로그램이 동작하여 정의한 내용들을 실행시켜준다.

m h dom mon dow command
m : 분해주기, 분당 몇번 실행시키는지 (10 : 10분, */1 : 1분에 한번)
h : 시간 (* : 시간 관계 없이, 10 1 : 1시 10분에 실행)
dom : day of month, 달의 날 (24 : 매달 24일)
mon : month
dow : 요일
command : 명령어 (위시간에 매번 실행되는 명령어)

 

✔️ date
date : 현재 시간
date > date.log : date기록을 date.log 파일에 저장
date >> date.log : date 실행 결과가 date.log 끝에 추가된다.

 

tail -f 파일이름 : 자동으로 파일을 감시하고 있다가 뒤쪽의 텍스트가 추가되면 자동으로 화면으로 refresh해준다.(띄워준다.)

 

✔️ 리눅스 vi 명령어

참고 자료

명령 모드

  • 파일의 끝으로 이동할때는 - G
  • 한줄 잘라내기 - dd
  • 세줄 잘라내기 - 3dd
  • 붙여넣기 - p
  • 한글자 삭제 - x
  • 단어 삭제 - dw
  • 실행취소! - u
  • 줄의 맨 앞(입력모드로) - o
  • 줄의 맨 뒤 - $
  • 현재 커서 바로 다음 위치에 삽입(입력모드로) - a

 

마지막행 모드

  • 저장만 : w
  • 종료만 : q
  • 저장 후 종료 : wq
  • 라인 번호좀 보자 : set nu
  • 커서 위치 뒤로 문자열좀 찾자 : ?문자열
  • 커서 위치 앞으로 문자열좀 찾자 : /문자열

 

✔️ 위에서 공부한 내용 테스트
crontab -ecron에 진입

스크린샷 2022-03-04 오후 12 21 39
  • vi 편집기 실행됨
  • */1 * * * * date >> date.log를 입력 : 1분마다 date 결과를 date.log에 기록하겠다.(추가됨)

 

crontab -lcron에 입력한 내용들을 확인해본다.

스크린샷 2022-03-04 오후 12 20 56

 

최종 입력 결과 확인
cd ~ : 홈 디렉터리로 이동한다.
tail -f date.log : 자동으로 date.log 파일을 감시하고 있다가 뒤쪽의 텍스트가 추가되면 자동으로 화면으로 refresh해준다.(띄워준다.)

스크린샷 2022-03-04 오후 12 27 46

 

✔️ 명령어 추가
*/1 * * * * date >> date.log + 2>&1
2> : 표준 error를 어디로 이동시킨다.(redirection)
1> : 표준 1를 어디로 이동시킨다.(redirection)

 

🔔 crontab 정리

스크린샷 2022-03-04 오후 12 36 34
  • crontab -e : vi 편집기에 진입하여 명령어를 시간에 맞게 지정할 수 있다.
  • crontab -l : 현재 등록한 cron list들을 출력해준다.
  • crontab -r : cron에 입력한 명령어들을 삭제한다.

 

📚 4. job schedule cron : example

✔️ email을 보낼 때

  • 이메일을 전송할 때, 오랫동안 전송하는데 기다려야 한다.
  • 이를 위한 해결책으로, 클라이언트가 이메일 전송했을 시 서버에서는 saved를 어딘가에(db?)에 기록해놓고 작업을 끝냈다고 알림을 보낸다. (사용자는 서버가 보낸 알림을 통해 '이메일이 전달됬구나' 라고 확인할 수 있다.)
스크린샷 2022-03-04 오후 12 46 31
  • 이때, CronSaved가 기록한 정보들을 확인한다.
  • Saved에 데이터들이 추가되었다면, 정보들을(데이터들을) 백그라운드로 수많은 이메일들을 보내는 작업을 진행한다. (background : client화면에 보이지 않게)
  • background 특징처럼, Cron이 실행될 때 client는 다른작업을 할 수 있다.

 

cron은 많은 곳에서 사용된다!

 

📚 5. 쉘을 시작할 때 실행

Shell start up 설정(script) : Shell이 실행되었을 때 특정 명령어가 자동으로 실행

alias : 명령어의 별명을 붙여줄 때 사용한다.

ex)
alias c='clear' : clearc
alias ..='cd ..' : cd ....

 

profile
"야, (오류 만났어?) 너두 (해결) 할 수 있어"

0개의 댓글