Crontab 스케줄러 다루기

Crontab 스케줄러 다루기

안녕하세요.

JP-Hosting입니다.

리눅스에서 일정한 시간마다

반복 작업을 해야 할 때, 사용하는 Crontab에 대해 알아보도록 하겠습니다.

윈도우에는 작업 스케줄러가 존재하듯, 리눅스에도 Crontab이 존재합니다.

특정한 시간마다 정해둔 명령어가 계속 실행되도록 도와주는 패키지인데요.

Crontab 설정에 대해 다루어보려고 합니다.


  • 테스트환경은 Centos 7.8 버전입니다.

[root@localhost ~]# rpm -qa *-release centos-release-7-8.2003.0.el7.centos.x86_64

  • Crond 서비스 확인

[root@localhost ~]# systemctl status crond● crond.service - Command SchedulerLoaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)Active: active (running) since Sat 2020-05-30 15:01:43 JST; 29min agoMain PID: 31877 (crond)CGroup: /system.slice/crond.service└─31877 /usr/sbin/crond -nMay 30 15:01:43 localhost.localdomain systemd[1]: Started Command Scheduler.May 30 15:01:43 localhost.localdomain crond[31877]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 49% if used.)May 30 15:01:43 localhost.localdomain crond[31877]: (CRON) INFO (running with inotify support)May 30 15:01:43 localhost.localdomain crond[31877]: (CRON) INFO (@reboot jobs will be run at computer's startup.)

  • Crontab 설정

  • Crontab 설정의 경우 두가지 방법으로 설정이 가능합니다.

    1. /etc/crontab 파일을 직접 수정하는 방법

    [root@localhost ~]# vi /etc/crontabSHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root# For details see man 4 crontabs# Example of job definition:# .---------------- minute (0 - 59)# | .------------- hour (0 - 23)# | | .---------- day of month (1 - 31)# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |# * * * * * user-name command to be executed

2. Crontab 명령어를 이용하는 방법

[root@localhost ~]# crontab -e # 내 crontab 수정[root@localhost ~]# crontab -l # 내가 설정한 crontab 확인[root@localhost ~]# crontab -e -u test # test란 이름의 사용자의 crontab 수정[root@localhost ~]# crontab -l -u test # test란 이름의 사용자의 crontab 확인

  •  Crontab 명령어 예시
*/1 * * * * echo "every 1 min" # 1분마다 실행*/30 * * * * echo "every 30 min" # 30분마다 실행30 */6 * * * echo "every 6hours at 30 mins" # 6시간마다 실행 (00:30, 06:30, 12:30, 18:30)30 1-18/2 * * * echo "every 2hours on 1am - 6pm" # (01 ~ 18)까지 매 2시간마다 실행 01:30, 03:30, ... 17:30)

  • 결과 예시 (cat /var/spool/mail/root)
  • 1분마다 "every 1 min" 문구가 실행된것을 확인
From [email protected] Sat May 30 16:19:01 2020Return-Path: <[email protected]>X-Original-To: rootDelivered-To: [email protected]: by localhost.localdomain (Postfix, from userid 0)id 417A51B6010A; Sat, 30 May 2020 16:19:01 +0900 (JST)From: "(Cron Daemon)" <[email protected]>To: [email protected]: Cron <root@localhost> echo "every 1 min"Content-Type: text/plain; charset=UTF-8Auto-Submitted: auto-generatedPrecedence: bulkX-Cron-Env: <XDG_SESSION_ID=33>X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/0>X-Cron-Env: <LANG=en_US.UTF-8>X-Cron-Env: <SHELL=/bin/sh>X-Cron-Env: <HOME=/root>X-Cron-Env: <PATH=/usr/bin:/bin>X-Cron-Env: <LOGNAME=root>X-Cron-Env: <USER=root>Message-Id: <[email protected]>Date: Sat, 30 May 2020 16:19:01 +0900 (JST)every 1 minFrom [email protected] Sat May 30 16:20:01 2020Return-Path: <[email protected]>X-Original-To: rootDelivered-To: [email protected]: by localhost.localdomain (Postfix, from userid 0)id 539BA1B6010D; Sat, 30 May 2020 16:20:01 +0900 (JST)From: "(Cron Daemon)" <[email protected]>To: [email protected]: Cron <root@localhost> echo "every 1 min"Content-Type: text/plain; charset=UTF-8Auto-Submitted: auto-generatedPrecedence: bulkX-Cron-Env: <XDG_SESSION_ID=34>X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/0>X-Cron-Env: <LANG=en_US.UTF-8>X-Cron-Env: <SHELL=/bin/sh>X-Cron-Env: <HOME=/root>X-Cron-Env: <PATH=/usr/bin:/bin>X-Cron-Env: <LOGNAME=root>X-Cron-Env: <USER=root>Message-Id: <[email protected]>Date: Sat, 30 May 2020 16:20:01 +0900 (JST)every 1 min

이번 포스트에서는 간단하게 Crontab을 사용하는 방법에 대해 알아보았는데요.

이런 Crontab의 경우 주로 시간 동기화나 http 재시작, 주기적인 백업 스크립트 작동등

여러 방면에서 활용도가 높은 패키지입니다.

서버 문의는 텔레그램통해 연락 부탁드립니다.

좋은하루 되세요!

댓글 없음:

참고: 블로그의 회원만 댓글을 작성할 수 있습니다.

Powered by Blogger.