Linux의 Crontab – 실시간 예제 및 도구 포함

crontab, 그 명령 및 Crontab과 관련된 다양한 작업을 살펴보겠습니다.

cron 유틸리티를 사용하여 작업을 예약하는 방법을 배우고 마지막으로 cron 명령의 형식을 지정하고 테스트하는 데 도움이 되는 몇 가지 온라인 도구에 대해서도 설명합니다.

목차

기원

Crontab은 “크론 테이블”을 의미합니다. cron이라는 단어는 시간을 의미하는 그리스어 Chronos에서 가져왔습니다. Crontab은 예약된 시간에 따라 일부 작업과 작업을 자동으로 수행하는 시스템 데몬 프로세스입니다.

사용 사례

Crontab은 자동화된 백업 처리, 로그 파일 회전, 원격 시스템 간의 파일 동기화 및 임시 폴더 지우기와 같은 다양한 작업을 수행하는 데 유용합니다. Crontab은 모든 종류의 작업에 사용할 수 있지만 처리를 시작할 때 특히 유용합니다. 시스템 관리 작업 유형.

cron을 사용하여 관리자는 특정 시간과 날짜에 실행되도록 작업을 예약할 수 있습니다.

그럼 어떻게 설정하는지 봅시다.

크론탭 구문

명령 목록을 실행하기 위해 cron 유틸리티는 구성 파일을 읽습니다. crontab 구성 테이블의 행을 해석하기 위해 Crontab 구문을 따릅니다. Crontab에는 6개의 필드가 있으며 처음 5개(1-5) 필드는 실행 날짜와 시간을 정의합니다. 마지막 필드, 즉 6번째 필드는 사용자 이름 및/또는 실행할 태스크 /job/command/script일 수 있습니다.

* * * * * USER_NAME 명령/SCRIPT-TO-EXECUTE

│ │ │ │ │
│ │ │ │ │
│ │ │ │ |_________ 요일(0 – 6)(0은 일요일 또는 사용 이름)
│ │ │ |_______________ 월(1 – 12),*은 매월을 의미
│ │ |______________ 요일(1 – 31),*은 매일을 의미
│ |________________ 시간(0 – 23),*은 매시간을 의미합니다.
|___________________ 분(0 – 59), *는 매분을 의미합니다.

메모:

  • 별표
  • 필드에 대해 가능한 모든 값을 일치시키는 데 사용됩니다. 예를 들어, 시간 필드에 사용된 별표는 매시간에 해당하거나 월 필드에 있는 별표는 매월에 해당합니다.

사용자 이름은 선택 사항입니다(시스템 crontab 파일인 경우에만 사용 가능)

예:

몇 가지 예를 들어 위의 구문을 이해합시다.

0 5 * * * /scripts/job.sh

1. 매일 오전 5시에 cron이 실행되도록 예약

0 6,18 * * * /scripts/job.sh

2. 오전 6시와 오후 6시에 하루에 두 번 실행되도록 cron을 예약합니다.

* * * * * /scripts/job.sh

3. cron이 1분마다 실행되도록 예약

0 19 * * mon /scripts/job.sh

4. 매주 월요일 오후 7시에 실행할 cron을 예약합니다.

*/10 * * * * /scripts/job.sh

5. cron이 15분마다 실행되도록 예약합니다.

* * * feb,jun,oct * /script/job.sh

6. 선택한 달에 실행할 크론 예약

25 7 4 3 * /home/script/backup.sh

7. 3월 4일 오전 7시 25분에 쉘 스크립트 /home/script/backup.sh를 실행합니다.

8. cron이 30초마다 실행되도록 예약

  • Crontab에서는 초를 제어할 수 없지만 아래 두 단계 프로세스를 통해 제어할 수 있습니다.
* * * * * /home/scripts/script.sh
  • 먼저 1분마다 실행되는 작업을 예약해 보겠습니다.
* * * * * sleep 30; /home/scripts/script.sh

이제 sleep 명령을 사용하여 30초 동안 실행을 일시 중지해 보겠습니다.

위의 작업은 30초 동안 실행을 중지하고 다시 시작합니다.

Cron 구성 파일 유형

Cron 구성 파일에는 두 가지 유형이 있습니다.

UNIX/Linux 시스템 크론탭

이것은 일반적으로 시스템 서비스 및 중요한 작업에 사용되기 때문에 루트 권한이 필요합니다. 위의 구문 설명에서 여섯 번째 필드는 명령을 실행할 사용자의 이름입니다. 시스템 crontab이 모든 사용자로 명령을 실행할 수 있는 기능을 제공합니다.

사용자 크론탭

사용자는 crontab 명령을 사용하여 자신의 cron 작업을 설치할 수도 있습니다. 여기에서도 위의 구문 설명에서 여섯 번째 필드는 실행할 명령이며 모든 명령은 crontab을 만든 사용자로 실행됩니다. 각 사용자는 고유한 crontab 파일을 가질 수 있으며 /var/spool/cron/crontabs에 있는 파일이지만 직접 편집할 수는 없습니다. 자체 cron 작업을 편집하거나 설정하려면 crontab 명령을 사용해야 합니다.

어떻게 작동합니까? cron 서비스(데몬)는 백그라운드에서 실행되며 /etc/crontab 파일 및 /etc/cron.*/ 디렉토리를 지속적으로(매분) 확인합니다. 또한 /var/spool/cron/ 디렉토리도 확인합니다. 명령은 다음에 의해 실행됩니다. 크론

분, 시 및 월 필드가 현재 시간과 일치하고 2일 필드(일 또는 요일) 중 하나 이상이 현재 날짜와 일치하는 경우.

기본 명령

기존 Cron 작업 나열

crontab -l

아래 명령을 사용하여 crontab 구성 파일을 열지 않고도 모든 Cron 작업을 나열할 수 있습니다.

[[email protected] ~]# crontab -l
no crontab for koreantech.org
[[email protected] ~]#

기존 작업이 없으면 다음과 같이 출력을 반환합니다.

[[email protected] ~]# crontab -l
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
0 */1 * * * /home/account/scripts/updateAccountStatuses.sh
0 */1 * * * /home/account/scripts/reActivateAccountStatus.sh
[[email protected] ~]#

사용자가 이미 일부 작업을 추가한 경우 다음과 같이 표시됩니다.

Cron 테이블은 사용자별로 다릅니다. 즉, cron 테이블 목록을 보려면 특정 사용자로 로그인해야 합니다.

특정 사용자의 Cron 나열

다른 사용자의 예약된 작업을 나열하려면 -u(사용자) 및 -l(목록) 옵션을 사용합니다.

crontab -u another_username -l

예: crontab -u koreantech.org -l

Crontab 항목 추가/수정

crontab 항목을 편집하려면 아래와 같이 -e 옵션을 사용할 수 있습니다.

crontab -e

위의 명령은 작업의 세부 사항을 지정하고 파일을 저장하는 vi 편집기를 엽니다. 일단 저장되면 crontab -l을 사용하여 cron이 구성되었는지 여부를 확인할 수 있습니다.

특정 사용자에 대한 Crontab 항목 추가/수정

crontab -u another_username -e

아래 명령을 사용하여 다른 사용자의 crontab을 편집할 수 있습니다.

예: crontab -u koreantech.org -e

Crontab 항목 제거

-r 매개변수를 Crontab과 함께 사용하여 crontab의 확인 없이 예약된 전체 작업을 제거합니다.

크론탭 -r

crontab -i -r
[[email protected] ~]# crontab -i -r
crontab: really delete koreantech.org's crontab?

예약된 작업을 삭제하기 전에 확인을 원하면 -r과 함께 -i 옵션을 사용하세요. 그러면 사용자의 crontab을 삭제하기 전에 사용자에게 확인 메시지가 표시됩니다.

Crontab 특수 문자열

위에서 논의한 구문 외에도 Crontab에서 제공하는 8개의 특수 문자열을 사용할 수도 있습니다. 시간을 절약할 뿐만 아니라 가독성도 향상됩니다.
특수 문자열
설명
@리부트
시작 후 한 번 실행합니다.
@매년
1년에 한 번 실행, 즉, 0 0 1 1 *
@매년
@yearly와 동일
@월간 간행물
한 달에 한 번 실행 즉, 0 0 1 * *
@주간
일주일에 한 번 실행, 즉 0 0 * * 0
@일일
하루에 한 번 실행, 즉 0 0 * * *
@자정
@daily와 동일
@시간당

1시간에 한 번 실행, 즉 0 * * * *

Crontab 특수 문자열 예

1. 1년 단위로 작업을 예약하는 Crontab

@yearly /scripts/greeting.sh

새해 인사를 보내기 위해 위와 같이 실행할 수 있습니다. 매년 1분에 실행됩니다.

2. Crontab을 사용하여 매월 실행할 작업을 예약합니다.

@monthly /scripts/cleanup.sh

매달 초에 일부 정리 활동을 수행하기 위해 위의 것을 실행할 수 있습니다.

마찬가지로 주별, 일별 및 시간별 목적으로 다른 Crontab 특수 문자열을 사용할 수 있습니다.

크론 디렉토리

  • 시스템 관리자는 아래와 같이 사전 정의된 cron 디렉토리 아래에 있는 시스템 전체의 cron 일정을 사용할 수 있습니다.
  • /etc/cron.d
  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.monthly

/etc/cron.weekly

Crontab 실시간 예제

시스템 관리자나 IT 전문가가 일반적으로 사용하는 몇 가지 실시간 예를 살펴보겠습니다.

빈 파일 및 디렉토리 삭제

45 0 * * * koreantech.org 찾기 /tmp -유형 f -빈 – 삭제

위의 cron 표현식은 /tmp 디렉토리에서 빈 파일과 디렉토리를 찾아 삭제합니다. 이 작업은 매일 오전 12시 45분에 실행됩니다. 이 작업을 수행하려면 사용자 이름을 언급해야 합니다. 위의 예에서 koreantech.org 사용자는 cron 작업 작업을 수행하고 있습니다.

단일 cron을 사용하여 여러 작업 실행

* * * * * /home/scripts/backup.sh; /home/scripts/scritp.sh

여러 작업/작업은 세미콜론(;)을 사용하여 구분할 수 있으며 단일 cron 표현식에 할당할 수 있습니다.

Cron 형식화 및 테스트 도구

지금까지 작업을 예약하기 위한 crontab의 명령과 구문에 대해 논의했습니다. 그러나 시스템 관리자가 아니고 정기적으로 Cron을 설정하는 것이 아닌 경우 구문을 기억하지 못할 수 있으며 오류의 여지가 생깁니다. 이 문제에 대한 해결책이 있으니 걱정하지 마세요.

온라인에서 사용할 수 있는 여러 Cron 서식 도구가 있습니다.

# 1. 크론 작업 생성기 크론 작업 생성기

crontab을 생성하는 스크립트의 분, 요일 및 경로를 지정할 수 있는 매우 사용자 친화적인 GUI입니다.

월요일부터 금요일까지 5분마다 /home/processMonitor.sh를 실행해야 하는 실시간 예를 들어보겠습니다.

그래서, 나는 실행하여 내 crontab에 넣을 수있는 아래의 Cron 구문을 얻었습니다.
crontab -e

0,5,10,15,20,25,30,35,40,45,50,55 * * * 1-5 /home/processMonitor.sh

# 2. 이지크론 이지크론

유용한 웹 기반 크론 작업 스케줄러입니다. 호출할 URL을 지정하여 cron 작업을 생성할 수 있으며 실행 시간을 설정할 수 있습니다. cron 표현식을 지정하거나 설명 형식에서 수동으로 추가할 수도 있습니다. 중요한 것은 작은 보안 계층을 위해 기본 HTTP 인증을 선택적으로 사용할 수 있다는 것입니다.

뿐만 아니라 Easycron은 표준 Cron 표현, Cron 작업 실행 로그, 이메일 알림, 별도의 실패 로그 등과 같은 다른 목적을 달성하는 데에도 사용할 수 있습니다.

# 3. 크론탭 생성기 크론탭 생성기

crontab을 생성하는 또 다른 편리한 도구이며 이 도구를 사용하면 cron 출력을 파일에 저장하거나 이메일로 보내려는 경우 추가할 수도 있습니다.

# 4. 크론탭 전문가 크론탭 전문가

간단한 온라인 크론 일정 표현식 편집기입니다. 또한 cronjob을 모니터링하는 유용한 수단을 제공합니다. 제공된 명령을 복사하고 crontab 정의 끝에 추가하기만 하면 됩니다. cron 작업이 실패하거나 시작되지 않는 경우 경고 이메일을 받게 됩니다.

아래 예에서 Job은 매일, 매월, 매주 04:05에 실행됩니다.

# 5. 크론 테스터 크론 테스터

cron 시간/날짜 정의를 테스트할 수 있습니다. 문제 해결을 위해 기존 cron 구문을 디코딩해야 하거나 테스트를 수행하려는 상황이 있을 수 있습니다.

이를 위해 이 도구를 사용할 수 있습니다. cron 정의 필드에 cron 표현식을 복사하여 붙여넣은 다음 반복 횟수를 선택하고 테스트를 클릭하여 실행될 다양한 날짜를 확인하기만 하면 됩니다.

이틀마다 03:04(AM)에 실행되어야 하는 cron 표현식 4 3 */2 * * 중 하나를 확인해 보겠습니다. cron tester로 확인해보자.

결론 위의 내용이 Crontab을 더 잘 이해하고 cron 작업을 설정하는 데 도움이 되기를 바랍니다. Cron을 통한 작업 예약은 Linux Admin이 수행하는 많은 작업 중 하나입니다. 고급 기술을 배우는 데 관심이 있다면 여기를 확인하십시오.강의

.