본문 바로가기
  • 실행력이 모든걸 결정한다
Linux

[Linux] Daemon / Apache / cron(명령어 주기 설정)

by 김코더 김주역 2021. 3. 23.
반응형

1. Daemon

백그라운드에서 항시 대기하고 있는 프로그램으로, 이 프로그램이 필요한 작업이 생기면 자동으로 작동하여 작업을 처리해준다.

그래서 클라이언트에게서 언제 요청받을지 모르는 웹서버에서는 Daemon 프로그램이 설치되어 있어야 하는 것이다.

대표적인 웹서버 소프트웨어로 Apache가 있다.

 

 

2. Apache

1) apache 소개

World Wide Web서버용 소프트웨어이다.

apache를 실행하면 외부에서 자신의 컴퓨터로 접속할 수 있다. 즉, 자신의 컴퓨터가 서버가 되는 것이다.

성능도 매우 좋고, 패치 파일도 꾸준히 제공하고 있고, 거의 모든 운영체제에서 사용 가능하고, 무료이기 때문에 인기가 매우 좋다.

 

2) apache2 설치

리눅스에서 apache2 서버를 설치해보자. 명령어는 다음과 같다.

sudo apt-get install apache2

 

apache2는 기본적으로 daemon 프로그램들이 있는 /etc/init.d 디렉토리에 설치된다.

 

3) apache2 실행

sudo service apache2 start

※ 프로세스 목록을 보면 여러개의 apache가 실행되고 있는 모습을 볼 수 있는데, 여러 접속을 받을 수 있게 하기 위함이다.

 

4) apache2 중지

sudo service apache2 stop

 

5) apache2 재시작

sudo service apache2 restart

 

6) ip주소 확인

ifconfig

 

7) apache2내에 html파일 저장

외부에서 자신의 apache2 서버에 접근하여 html문서를 조회할 수 있게 해보자.

(1) DocumentRoot 찾기

웹 서버 내에서 웹 페이지를 찾는 최상위 디렉토리를 DocumentRoot라고 하는데, DocumentRoot는 다음과 같이

/etc/apache2/sites-enabled/ 디렉토리의 000-default.conf에서 확인할 수 있다.

DocumentRoot는 /var/www/html 임을 알 수 있다.

 

(2) 파일 저장

이제 /var/www/html 에서 hellolinux.html라는 파일을 만들어보자.

 

(3) 접속

위 2-6)에서 ifconfig명령어로 내 서버의 ip주소가 172.17.0.12임을 확인했다.

물론 자신의 컴퓨터에서 자신의 아파치 서버에 접속하는 것이라면, localhost나 127.0.0.1라는 주소를 써도 된다.

elinks 명령어로 접속을 시도할 것이며, elinks에 대한 소개 및 설치법은 아래 링크를 참고한다.

kimcoder.tistory.com/275

잘 실행되었다

 

8) apache2 접속 로그 확인

접속 로그는 /var/log/apache2/ 디렉토리 내에 access.log, 오류 로그는 error.log에서 확인할 수 있다.

access.log의 끝줄을 확인해보니 방금 hellolinux.html에 접속했던 기록을 확인할 수 있었다.

"tail -f [파일명]" 명령어로 실시간으로 로그를 확인할 수도 있다.

※ tail의 -f옵션 : 실시간으로 파일의 마지막줄을 출력해주는 옵션

 

3. cron

cron은 특정 시간에 특정 작업을 수행하게 해주는 스케쥴링 역할을 한다.

정확히는, 특정 명령어를 원하는 때에 자동으로 수행시켜주는 것이다.

 

cron을 설정하기 위해 다음 명령어를 입력하자. e옵션은 edit을 뜻한다.

crontab -e

 

명령어를 입력하고 editor을 선택하라는 문구가 출력되면 원하는 에디터 번호를 입력하면 된다.

 

nano 에디터로 이동하면 crontab 파일을 볼 수 있고, 설명은 모두 주석처리되어있다.

아래키로 끝까지 내려서 마지막줄에 보이는 것이 cron 작성 양식이다.

 

작성 양식은 다음과 같다.

m h dom mon dow command
  • m : 분(0~59)
  • h : 시(0~23)
  • dom : 일(1~31)
  • mon : 월(1~12)
  • dow : 요일(0~7, 0=Sunday, 1=Monday, ... 6=Saturday, 7=Sunday)
  • command : 명령어

 

자리별로 다음과 같은 기호를 쓸 수도 있다.

  • * : 모든 범위
  • - : 이상, 이하 모든 값(dom이 '1-10' 이면 1일~10일)
  • , : 지정한 모든 값(h이 '6,18' 이면 6시, 18시)
  • / : 주기(m이 '*/10' 이면 10분마다, mon이 '1-12/2' 이면 1~12월사이로 2개월마다 실행) 

 

예시 문제

0 18 1 * * command

답 : 매월 1일 18시 정각에 수행

 

 

저장 후 crontab 파일 내용을 확인하고 싶다면 다음 명령어를 입력하면 된다.

crontab -l

 

마지막으로 반드시 cron을 실행해주는 명령어를 입력해야 한다.

service cron start

중지할 때는 service cron stop,

변경사항이 있을 경우 재시작할 때는 service cron restart을 입력한다.

 

※ CentOS 에서는 cron 대신 crond 입력

 

 

입력

매 분마다 날짜 정보를 /date.log에 추가, 오류가 있더라도 오류 메세지까지 추가

 

결과

약 12분 후 확인(UTC는 협정 세계시)

반응형

댓글