리눅스 - 정기적 실행

김민재·2021년 7월 20일
0

Gotcha Linux!

목록 보기
11/22

크론(cron)

  • 정기적으로 명령을 실행시켜주는 소프트웨어이다.
  • 시스템을 운영하다 보면 정기적으로 해야 될 일들이 있는데 데이터를 정기적으로 백업한다든지 또는 어떤 특정 데이터를 정기적으로 전송한다든지 등 이러한 정기적으로 해야될 작업들을 처리해야 될 경우에 크론 프로그램을 통해서 목적을 달성할 수 있다.

crontab에 -e라고 치면 정기적으로 하는일을 정의할 수가 있다.
정기적으로 실행시키고 싶은 어떤 작업을 안에 적어주면 적어준 대로 크론이라는 프로그램이 동작해서 그것을 실행시켜 준다.

첫 번째 자리는 실행되는 분의 주기 즉, 분당 몇 번 실행할 것인가인데
10은 매 시간 10분이란 뜻이고 /1 이렇게 하면 1분에 한 번 /10은 10분에 한 번이 된다.

그리고 시간에서 여러분이 별표 치면 *, 시간과는 상관 없이 실행이 되는 것이고 근데 만약에 10 1은 한 시 10분에 실행된다는 뜻을 가진다,.

dom은 day of month로 한 달에서 며칠인지 24라 적으면 매달 24일이란 뜻이죠.
mon 다음은 month 즉 몇 월인지 즉 요일을 설정해준다.

crontab expressio 검색

그리고 커맨드(command, 명령)가 오게 되는데, 여기에 1분에 한 번씩 실행하고 싶은 명령을 적어주면 된다.

컨트롤 알파벳 제트(Ctrl+z)를 누르면 백그라운드로 나간다.

date(데이트) 현재 시간을 알려주는 명령의 결과를 date.log(데이트 점 로그)라고 하는 파일에다가 기록하고 꺽쇠를 두 번 하면 어떻게 되나요?
실행할 때마다 date(데이트)의 실행 결과가 date.log(데이트 점 로그)에 끝에 추가되는 방식의 IO 리다이렉션이다.

fg (에프 지) 포그라운드(foreground)란 뜻이죠?

command란에 date >> date.log 파일에다가 추가한다

잘 됐는지를 확인할 때는 crontab -l 쳐보면 처리한 내용을 화면에 출력해준다.
cd ~로그인한 계정의 홈 디렉터리에서 이렇게 ls를 치고 date.log(데이트 점 로그)라는 파일이 잘 업데이트되고 있는지를 확인하기 위해서
tail(테일) 뒤에다가 파일을 주게 되면 그 파일의 제일 뒤쪽에 있는 텍스트를 출력해 준다.
tail이라는 명령의 옵션으로 -f를 주면 tail이라는 명령은 자동으로 date.log 파일을 감시하고 있다가 그 파일에 뒤쪽에 텍스트가 추가되면, 그것을 자동으로 화면을 리프레쉬 해준다.

crontab -e(크론탭 마이너스 이)
이 명령을 실행했는데 여기 있는 명령에서 에러가 발생하면, 에러는 standard(스탠다드)
output(아웃풋)이 아닌 standard error(스탠다드 에러)라는 별도의 출력이기 때문에
에러가 쌓이지 않아서, 에러가 일어났는지 안 일어났는지 알 수가 없다.
따라서 숫자 2 standard error 표준 에러를 숫자 1, 표준출력으로 리다이렉션시킨다. 즉
표준 에러를 표준 출력화시킨다.

date >> date.log 2>&1 에러가 있을 때 1이라는 파일에 저장된다.
1 앞에 앰퍼샌드(&)를 붙여줘야 표준 출력이 된다.
date(데이트)라고 하는 명령을 실행한 결과 어떤 에러가 발생하면 그 에러는 표준 출력으로
리다이렉션 됐기 때문에 함께 저장이 된다.

크론(cron) - 사례

  • 사용자가 정보를 전송(메일을 보내기 버튼 클릭)을 하면 서버쪽 컴퓨터에 전송이 되어 saved 저장이 되었다라는 것만 일단 어딘가에 기록해놓고 작업을 끝낸다.
  • 글을 작성한 사용자는 결과를 받았으니까 '글을 잘 작성했습니다' 메시지를 클라이언트에게 빠른 속도로 보여준다.
  • 서버에 설치되어 있는 크론(cron)이 정기적으로 saved라고 하는 정보를 확인 해서
    saved 정보가 추가가 되었다면 사용자와는 상관없이 백그라운드로 수십만 개의 이메일을 보내는 작업을 진행을 한다.
profile
자기 신뢰의 힘을 믿고 실천하는 개발자가 되고자합니다.

0개의 댓글