[linux] crontab 설정

Roiana·2021년 9월 27일
1
post-thumbnail

며칠동안 삽질을 했다..
문제의 원인은 서버 3대가 전부 centos가 설치되어 있는데 그 중 한대만 유난히 하루 기준으로 -2분정도씩 시간이 틀어졌다..😱
매일 가서 확인할 수 없는 환경 + DB 서버 = welcome to hell 👹


이게 왜 안돼?

리눅스 입문자라 열심히 구글링해본 결과 crontab이라는게 존재했고 한줄만 작성하면 해결이 된다기에 일단 낯서니 "10분마다 .txt 파일에 현재시간을 작성"을 해봤고 정상적으로 이뤄지기에 아래처럼 "10분마다 시간을 동기화해라"라고 서버에 배치를 돌려놓고 퇴근했다.

$ crontab -e
$ */10 * * * * ntpdate 시간 동기화 IP
$ systemctl restart crond
$ crontab -l

...
다음날 아침. 두근두근 과연..!!
...
현실은 역시나 -2분. 왜..? 이럼 된다며..? .sh 파일로 빼서 배치 돌려보기도 하고, 앞에 root를 작성해서 해보기도 하였지만 결과는 같았다.


서버가 나만 미워하나 싶었지만 쓸데 없이 오기가 생겨 이리 해보고 저리 해본 결과.. 결국 해결했다..


해결 방법

  1. 본인이 편한 경로에 .sh 파일을 하나 작성한다.
    나는 /home밑에 dailyntp 폴더를 생성하고 cronDaily.sh을 작성했다.
$ cd /home
$ mkdir dailyntp
$ cd /dailyntp
$ vi cronDaily.sh
  1. dailyCron.sh 파일에 아래와 같이 한줄만 작성했다.
ntpdate 시간 동기화 IP
  1. cron 설정을 위해 crontab -e를 사용하지 않고 /etc/crontab에 작성을 하기 위해 편집기를 열어 맨 아랫줄에 */10 * * * * root /home/dailyntp/cronDaily.sh 를 작성한다.
    ntpdate 명령어는 root 사용자만 이용할 수 있는 명령어

  1. 두둥탁! 원하는대로 10분마다 시간이 맞춰진다.

정리

crontab 명령어

  • crontab -l : 예약된 작업 리스트 확인
  • crontab -e : 작업 수정(작성)
  • crontab -r : 예약된 작업 삭제
  • crontab -u 사용자명 : root관리자는 해당 사용자의 crontab 파일을 보거나 삭제, 편집가능

crontab 작업 형식

  • 순서 : 분 시 일 월 요일 수행할명령어
* * * * * *  수행할 명령어
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ │
│ │ │ │ └───────── 요일 (0 - 6) (0:일요일, 1:월요일, 2:화요일, …, 6:토요일)
│ │ │ └───────── 월 (1 - 12)
│ │ └───────── 일 (1 - 31)
│ └───────── 시 (0 - 23)
└───────── 분 (0 - 59)

*/10 * * * * /root/test.sh : 10분마다 root/test.sh 실행
* * * * * /root/test.sh : 1분마다 root/test.sh 실행
15,45 * * * * /root/test.sh : 매시 15분, 45분에 /root/test.sh 실행
0 2 * * * /root/test.sh : 매일 02:00에 /root/test.sh 실행
30 */6 * * * /root/test.sh : 매 6시간마다 /root/test.sh 실행 (00:30, 06:30, 12:30, 18:30)


마무리

crontab -e, /etc/crontab 둘 다 작동은 하니 해보고 되는것으로 설정하면 된다. 이왕이면 하나의 방식으로 작성하는게 나중에 헷갈리지 않을것이다.

안되는 이유가 궁금해서 찾아보니 환경 변수 문제로 crontab이 작동안할 수도 있다고 한다.
crontab -e에서 아래와 같이 작성하면 해결된다고 하니 언젠가... 한번 시도해보자.

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin



이 글이 나처럼 머리를 쥐어 뜯고 있는 누군가에게 도움이 되길 바란다. 🤢

profile
꾸준히 공부하려고 노력하고있는 새싹 개발자 Roiana 입니다 😊

1개의 댓글

comment-user-thumbnail
2021년 9월 30일

잘보고 갑니다

답글 달기