DrawingProcess
드프 DrawingProcess
DrawingProcess
전체 방문자
오늘
어제
«   2025/07   »
일 월 화 수 목 금 토
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
  • 분류 전체보기 (969)
    • Profile & Branding (25)
      • Career (18)
    • IT Trends (254)
      • Conference, Faire (Experien.. (31)
      • News (187)
      • Youtube (19)
      • TED (8)
      • Web Page (2)
      • IT: Etc... (6)
    • Contents (98)
      • Book (67)
      • Lecture (31)
    • Project Process (94)
      • Ideation (0)
      • Study Report (34)
      • Challenge & Award (22)
      • 1Day1Process (5)
      • Making (5)
      • KRC-FTC (Team TC(5031, 5048.. (10)
      • GCP (GlobalCitizenProject) (15)
    • Study: ComputerScience(CS) (72)
      • CS: Basic (9)
      • CS: Database(SQL) (5)
      • CS: Network (14)
      • CS: OperatingSystem (3)
      • CS: Linux (39)
      • CS: Etc... (2)
    • Study: Software(SW) (95)
      • SW: Language (29)
      • SW: Algorithms (1)
      • SW: DataStructure & DesignP.. (1)
      • SW: Opensource (15)
      • SW: Error Bug Fix (43)
      • SW: Etc... (6)
    • Study: Artificial Intellige.. (149)
      • AI: Research (1)
      • AI: 2D Vision(Det, Seg, Tra.. (35)
      • AI: 3D Vision (70)
      • AI: MultiModal (3)
      • AI: SLAM (0)
      • AI: Light Weight(LW) (3)
      • AI: Data Pipeline (7)
      • AI: Machine Learning(ML) (1)
    • Study: Robotics(Robot) (33)
      • Robot: ROS(Robot Operating .. (9)
      • Robot: Positioning (8)
      • Robot: Planning & Control (7)
    • Study: DeveloperTools(DevTo.. (83)
      • DevTool: Git (12)
      • DevTool: CMake (13)
      • DevTool: NoSQL(Elastic, Mon.. (25)
      • DevTool: Container (17)
      • DevTool: IDE (11)
      • DevTool: CloudComputing (4)
    • 인생을 살면서 (65)
      • 나의 취미들 (7)
      • 나의 생각들 (42)
      • 여행을 떠나자~ (10)
      • 분기별 회고 (6)

개발자 명언

“ 매주 목요일마다 당신이 항상 하던대로 신발끈을 묶으면 신발이 폭발한다고 생각해보라.
컴퓨터를 사용할 때는 이런 일이 항상 일어나는데도 아무도 불평할 생각을 안 한다. ”

- Jef Raskin

맥의 아버지 - 애플컴퓨터의 매킨토시 프로젝트를 주도

인기 글

최근 글

최근 댓글

티스토리

hELLO · Designed By 정상우.
DrawingProcess

드프 DrawingProcess

[Linux] 일정 시간마다 작업 실행시키기(crontab)
Study: ComputerScience(CS)/CS: Linux

[Linux] 일정 시간마다 작업 실행시키기(crontab)

2022. 8. 12. 16:56
반응형

crontab 이란?

  • 특정 시간을 주기로 원하는 작업을 계속 실행시켜 주는 리눅스 전용 작업 스케쥴러입니다.
  • 크론탭에 등록된 작업들은 커맨드 창(Shell)이 실행 여부와 상관없이 동작하기 때문에 서버 등을 운영할 때 편리합니다.

​

현재 크론탭에 등록된 스케줄 확인

$ crontab -l
  • 현재 등록되어 있는 스케줄을 확인합니다.
  • 하나도 등록되지 않았다면, no crontab for <user명>을 출력하며 끝납니다.

​

스케줄 등록하기

스케줄은 다음 명령어를 사용하여 등록할 수 있습니다. 해당 명령어를 실행하면, -l 옵션으로 보게 되었던 스케줄 목록을 텍스트 에디터(vi, vim, nano) 등으로 열 수 있게 되고, 해당 스케줄을 직접 작성해주면 됩니다.

$ crontab -e
 
  • ​스케줄의 등록 형식은 다음과 같습니다.
    • 각 *에 해당하는 부분이 분,시,일,월,요일 등을 기재할 수 있으며 그대로 *을 적어놓으면 해당 시간열에 존재하는 모든 숫자를 포함한다는 뜻입니다.
    • 위키에서 가져온 예시 목록도 함께 아래에 올렸으니 확인하도록 합시다.
* * * * *  수행할 명령어
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ │
│ │ │ │ └───────── 요일 (0 - 6) (0:일요일, 1:월요일, 2:화요일, …, 6:토요일)
│ │ │ └───────── 월 (1 - 12)
│ │ └───────── 일 (1 - 31)
│ └───────── 시 (0 - 23)
└───────── 분 (0 - 59)

 

예시

* * * * * /root/every_1min.sh

→ 매 1분마다 /root/every_1min.sh 를 수행 (하루에 1440회)

15,45 * * * * /root/every_30min.sh

→ 매시 15분, 45분에 /root/every_30min.sh 를 수행 (하루에 48회)

*/10 * * * * /root/every_10min.sh

→ 10분마다 /root/every_10min.sh 를 수행 (하루에 144회)

0 2 * * * /root/backup.sh

→ 매일 02:00에/root/backup.sh 를 수행 (하루에 1회)

30 */6 * * * /root/every_6hours.sh

→ 매 6시간마다 수행(00:30, 06:30, 12:30, 18:30)

30 1-23/6 * * * /root/every_6hours.sh

→ 1시부터 매 6시간마다 수행(01:30, 07:30, 13:30, 19:30)

0 8 * * 1-5 /root/weekday.sh

→ 평일(월요일~금요일) 08:00

0 8 * * 0,6 /root/weekend.sh

→ 주말(일요일, 토요일) 08:00

​

스케줄 모두 삭제하기

모든 스케줄을 삭제하고 싶다면, 해당 명령어를 사용하면 됩니다.

$ crontab -r​
  • crontab -e를 실행하여 에디터로 스케줄을 직접 삭제해도 무방하기 때문에 편한 걸 사용합시다.

​

crontab(크론탭) 실행이 되지 않을 때

간혹 이래도 작동이 제대로 되지 않는 경우가 있습니다. 특히나 크론탭의 경우, 이게 잘 돌아가고 있는건지 만건지 커맨드 창에 나타나지 않기 때문에 꼭 스케줄 등록후, 확인을 해줄 필요가 있습니다. 실행이 되지 않을 경우, 아래 목록을 확인해보도록 합시다.

​

1. 특정 파일을 가리켜야 할때, 절대경로로 등록하였는가?

  • 파일을 실행시킬 때 절대경로와 상대경로 모두 가능하다. 하지만...
    • crontab의 경우, /(최상위 경로)에서 명령을 실행한다고 가정하고 반드시 절대 경로로 등록해주는 걸 권장한다.
    • 즉, 크론탭에 등록시키기 전에 해당 명령어를 / 경로에서 실행시켜 보고 등록하자.
 

​

2. 환경 변수 문제

크론탭으로 명령어를 실행할 때, 완전히 별도의 쉘을 띄워서 실행시키기 때문에 관련된 환경변수를 설정할 필요가 있습니다. 만약 해당 프로그램이 등록된 환경변수를 바탕으로 모종의 작업을 수행해야 할 경우, 아래처럼 crontab -e를 실행시킨 스케줄 목록 최상단에 환경 변수를 미리 등록하도록 하자.

​

3. 사용자 환경과 리눅스의 Timezone은 일치하는가?

AWS 같은 환경에서 crontab을 사용해야 할 때, 거의 이 문제를 겪을 것이다. 말그대로 crontab 자체는 정상적으로 동작하지만, 시간대가 달라 엉뚱한 시간을 기준으로 스케줄을 수행하는 것입니다.​ 아래와 같이 localtime 및 timezone 정보를 동일하게 수정해주도록 합시다.

리눅스의 Timezone 변경

 
$ sudo rm /etc/localtime
$ sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime

$ date
2022. 08. 12. (금) 16:39:01 KST

crontab의 Timezone 변경

$ sudo dpkg-reconfigure tzdata
// Asia 및 Seoul 선택
$ sudo service cron stop
$ sudo service cron start

​

4. 로그에서 실행이 안된 원인을 살펴보자

  • 크론탭은 스케줄을 실행했지만 에러가 떠서 터졌을 경우, 로그에 기록됩니다.
  • 해당 기록은 /var/log/cron에서 확인할 수 있습니다.
    • 만약 Timezone이 다르거나 스케줄 등록 문법이 틀려서, crontab이 실행되지 않은 경우 로그가 남지 않을 수도 있음을 유의해야 합니다.

 

참고


  • [Linux] 일정 시간마다 작업 실행시키기(crontab): https://m.blog.naver.com/shino1025/221432633410
  • 리눅스 반복 예약작업 cron, crond, crontab: https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EB%B0%98%EB%B3%B5_%EC%98%88%EC%95%BD%EC%9E%91%EC%97%85_cron,_crond,_crontab

반응형
저작자표시 비영리 변경금지 (새창열림)

'Study: ComputerScience(CS) > CS: Linux' 카테고리의 다른 글

[Linux] C++ 컴파일러에 대하여 (feat. clang/LLVM, clang-format, clang-tidy)  (0) 2022.08.29
[Linux] Executable and Linkable Format(ELF): 실행 및 링킹 파일 포맷 (feat. readelf)  (0) 2022.08.23
[Linux] ln 명령어(feat. 리눅스 파일 링킹): 하드링크(Hard Link) VS 심볼릭링크(Symbolic Link)  (0) 2022.08.09
[Linux] Graceful Shutdown이란? (feat. SIGINT/SIGTERM/SIGKILL + signal handler)  (0) 2022.08.05
[Linux] 프로세스 종류 및 특징 (feat. Demon과 Background Process의 차이)  (0) 2022.07.31
    'Study: ComputerScience(CS)/CS: Linux' 카테고리의 다른 글
    • [Linux] C++ 컴파일러에 대하여 (feat. clang/LLVM, clang-format, clang-tidy)
    • [Linux] Executable and Linkable Format(ELF): 실행 및 링킹 파일 포맷 (feat. readelf)
    • [Linux] ln 명령어(feat. 리눅스 파일 링킹): 하드링크(Hard Link) VS 심볼릭링크(Symbolic Link)
    • [Linux] Graceful Shutdown이란? (feat. SIGINT/SIGTERM/SIGKILL + signal handler)
    DrawingProcess
    DrawingProcess
    과정을 그리자!

    티스토리툴바