Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

마스터 Linux Crontab:15가지 전문 크론 작업 예약 예제

마스터 Linux Crontab:15가지 전문 크론 작업 예약 예제 숙련된 Linux 시스템 관리자는 정기적인 유지 관리 작업을 백그라운드에서 자동으로 실행하는 것의 중요성을 알고 있습니다.

Linux Cron 유틸리티는 특정 시간 및/또는 요일에 정기적인 백그라운드 작업을 지속적으로 예약하는 효과적인 방법입니다.

이 기사는 현재 진행 중인 괴짜를 위한 생산성 팁 시리즈의 일부입니다. 이 기사에서는 crontab 작업 스케줄링의 15가지 멋진 예를 검토해 보겠습니다.

Linux Crontab 형식

MIN HOUR DOM MON DOW CMD
필드 설명 허용값 MIN분 필드0 ~ 59HOUR시간 필드0 ~ 23DOM월 일1~31MON월 필드1~12DOW요일0~6CMDCommand실행할 모든 명령입니다.

1. 특정 시간 동안 작업 예약

cron의 기본 사용법은 아래와 같이 특정 시간에 작업을 실행하는 것입니다. 6월 10일 오전 8시 30분에 전체 백업 셸 스크립트(전체 백업)가 실행됩니다. .

시간 필드는 24시간 형식을 사용합니다. 따라서 오전 8시에는 8을 사용하고 오후 8시에는 20을 사용합니다.

30 08 10 06 * /home/ramesh/full-backup
  • 30 – 30분
  • 08 – 오전 8시
  • 10 – 10일차
  • 06 – 6번째 달(6월)
  • * – 매주매일

2. 둘 이상의 인스턴스에 대한 작업 예약(예:하루에 두 번)

다음 스크립트는 매일 하루에 두 번 증분 백업을 수행합니다.

이 예제에서는 매일 11시와 16시에 지정된 증분 백업 쉘 스크립트(incremental-backup)를 실행합니다. 필드의 쉼표로 구분된 값은 언급된 모든 시간에 명령이 실행되어야 함을 지정합니다.

00 11,16 * * * /home/ramesh/bin/incremental-backup
  • 00 – 0분(정시)
  • 11,16 – 오전 11시, 오후 4시
  • * – 매일
  • * – 매달
  • * – 매주매일

3. 특정 시간 범위에 대한 작업 예약(예:평일에만)

특정 시간 범위에서 매시간 작업을 예약하려면 다음을 사용하세요.

근무 시간 중 매일 크론 작업

이 예시는 매일(주말 포함) 오전 9시부터 오후 6시까지 근무시간 동안 데이터베이스의 상태를 확인하는 예제입니다.

00 09-18 * * * /home/ramesh/bin/check-db-status
  • 00 – 0분(정시)
  • 09-18 – 오전 9시, 오전 10시, 오전 11시, 오전 12시, 오후 1시, 오후 2시, 오후 3시, 오후 4시, 오후 5시, 오후 6시
  • * – 매일
  • * – 매월
  • * – 매주매일

매주 평일 근무 시간 동안 크론 작업

이 예에서는 평일 오전 9시부터 오후 6시까지 근무시간 동안(토요일 제외) 데이터베이스 상태를 확인합니다.

00 09-18 * * 1-5 /home/ramesh/bin/check-db-status
  • 00 – 0분(정시)
  • 09-18 – 오전 9시, 오전 10시, 오전 11시, 오전 12시, 오후 1시, 오후 2시, 오후 3시, 오후 4시, 오후 5시, 오후 6시
  • * – 매일
  • * – 매월
  • 1-5 -월,화,수,목,금 (매주 평일)

4. Crontab 항목을 보는 방법

현재 로그인한 사용자의 Crontab 항목 보기

crontab 항목을 보려면 아래와 같이 unix 계정에서 crontab -l을 입력하세요.

ramesh@dev-db$ crontab -l
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space
[Note: This displays crontab of the current logged in user]

루트 Crontab 항목 보기

루트 사용자(su – root)로 로그인하고 아래와 같이 crontab -l을 수행합니다.

root@dev-db# crontab -l
no crontab for root

Crontab HowTo:다른 Linux 사용자의 Crontab 항목 보기

다른 Linux 사용자의 crontab 항목을 보려면 루트에 로그인하고 -u {username} -l을 사용하십시오. 아래와 같습니다.

root@dev-db# crontab -u sathiya -l
@monthly /home/sathiya/monthly-backup
00 09-18 * * * /home/sathiya/check-db-status

5. Crontab 항목을 편집하는 방법

현재 로그인한 사용자의 Crontab 항목 편집

crontab 항목을 편집하려면 아래와 같이 crontab -e를 사용하십시오. 기본적으로 현재 로그인한 사용자 crontab을 편집합니다.

ramesh@dev-db$ crontab -e
@yearly /home/ramesh/centos/bin/annual-maintenance
*/10 * * * * /home/ramesh/debian/bin/check-disk-space
~
"/tmp/crontab.XXXXyjWkHw" 2L, 83C
[Note: This will open the crontab file in Vim editor for editing.
Please note cron created a temporary /tmp/crontab.XX... ]

위의 임시 파일을 :wq로 저장하면 crontab이 저장되고 crontab이 성공적으로 수정되었음을 알리는 다음 메시지가 표시됩니다.

~
"crontab.XXXXyjWkHw" 2L, 83C written
crontab: installing new crontab

루트 Crontab 항목 편집

루트 사용자(su – root)로 로그인하고 아래와 같이 crontab -e를 수행합니다.

root@dev-db# crontab -e

다른 Linux 사용자의 Crontab 파일 항목 편집

다른 Linux 사용자의 crontab 항목을 편집하려면 루트에 로그인하고 -u {username} -e를 사용하십시오. 아래와 같습니다.

root@dev-db# crontab -u sathiya -e
@monthly /home/sathiya/fedora/bin/monthly-backup
00 09-18 * * * /home/sathiya/ubuntu/bin/check-db-status
~
~
~
"/tmp/crontab.XXXXyjWkHw" 2L, 83C

6. Cron을 사용하여 매 순간 작업을 예약하세요.

이상적으로는 매분 작업을 예약할 필요가 없을 수도 있습니다. 하지만 이 예를 이해하면 이 기사 아래에 언급된 다른 예를 이해하는 데 도움이 됩니다.

* * * * * CMD

*는 가능한 모든 단위를 의미합니다. 즉, 일년 내내 매시간, 매분을 의미합니다. 이 *를 직접 사용하는 것보다 다음과 같은 경우에 매우 유용하다는 것을 알게 될 것입니다.

  • 분 필드에 */5를 지정하면 5분마다를 의미합니다.
  • 분 필드에 0-10/2를 지정하면 처음 10분 동안 2분마다를 의미합니다.
  • 따라서 위의 규칙은 다른 4개 필드 모두에 사용될 수 있습니다.

7. 10분마다 백그라운드 크론 작업을 예약합니다.

10분마다 디스크 공간을 확인하려면 다음을 사용하세요.

*/10 * * * * /home/ramesh/check-disk-space

연중 내내 10분마다 지정된 명령 check-disk-space를 실행합니다. 그러나 근무 시간에만 명령을 실행해야 하거나 그 반대의 경우도 있습니다. 위의 예에서는 이러한 작업을 수행하는 방법을 보여줍니다.

5개 필드에 값을 지정하는 대신 아래와 같이 단일 키워드를 사용하여 지정할 수 있습니다.

위의 5개 필드 대신 재부팅, 자정, 매년, 매시간과 같이 @ 뒤에 키워드를 사용할 수 있는 특별한 경우가 있습니다.

키워드 동등 @yearly0 0 1 1 *@daily0 0 * * *@hourly0 * * * *@rebootRun 시작 시 실행됩니다.

8. @yearly를 사용하여 매년 첫 순간에 작업 예약

매년 첫 번째 1분에 작업을 실행하려면 @yearly를 사용할 수 있습니다. cron 키워드는 아래와 같습니다.

매년 1월 1일 00:00에 연간 유지 관리 쉘 스크립트를 사용하여 시스템 연간 유지 관리를 실행합니다.

@yearly /home/ramesh/red-hat/bin/annual-maintenance

9. @monthly를 사용하여 매월 시작되는 크론 작업 예약

위의 @yearly와 비슷합니다. 그러나 @monthly를 사용하여 매월 한 번 명령을 실행합니다. 크론 키워드.

매월 1일 00:00에 쉘 스크립트 테이프 백업이 실행됩니다.

@monthly /home/ramesh/suse/bin/tape-backup

10. @daily를 사용하여 매일 백그라운드 작업 예약

@daily 사용 cron 키워드를 사용하면 매일 00시에 cleanup-logs 쉘 스크립트를 사용하여 일일 로그 파일 정리를 수행합니다.

@daily /home/ramesh/arch-linux/bin/cleanup-logs "day started"

11. @reboot를 사용하여 재부팅할 때마다 Linux 명령을 실행하는 방법은 무엇입니까?

@reboot 사용 cron 키워드는 매번 시스템이 부팅된 후 지정된 명령을 한 번 실행합니다.

@reboot CMD

12. MAIL 키워드를 사용하여 Crontab 메일 출력을 비활성화/리디렉션하는 방법은 무엇입니까?

기본적으로 crontab은 작업을 예약한 사용자에게 작업 출력을 보냅니다. 출력을 특정 사용자에게 리디렉션하려면 아래와 같이 crontab에서 MAIL 변수를 추가하거나 업데이트하세요.

ramesh@dev-db$ crontab -l
MAIL="ramesh"
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space
[Note: Crontab of the current logged in user with MAIL variable]


메일이 어디로도 전송되지 않게 하려면, 즉 crontab 출력이 이메일로 전송되는 것을 중지하려면 아래와 같이 crontab에 MAIL 변수를 추가하거나 업데이트하세요.

MAIL=""

13. Crontab을 사용하여 매초마다 Linux Cron 작업을 실행하는 방법

매초 cronjob을 예약할 수는 없습니다. cron에서 지정할 수 있는 최소 단위는 분입니다. 일반적인 시나리오에서는 우리 대부분이 시스템에서 매초마다 작업을 실행할 이유가 없습니다.

14. Crontab에서 PATH 변수 지정

위의 모든 예에서는 실행해야 하는 Linux 명령 또는 쉘 스크립트의 절대 경로를 지정했습니다.

예를 들어 /home/ramesh/tape-backup을 지정하는 대신 tape-backup만 지정하려면 아래와 같이 crontab의 PATH 변수에 /home/ramesh 경로를 추가하세요.

ramesh@dev-db$ crontab -l
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/ramesh
@yearly annual-maintenance
*/10 * * * * check-disk-space
[Note: Crontab of the current logged in user with PATH variable]

15. Cron 파일에서 Crontab 설치

crontab 파일을 직접 편집하는 대신 먼저 cron 파일에 모든 항목을 추가할 수도 있습니다. 파일에 해당 항목이 모두 있으면 아래와 같이 cron에 업로드하거나 설치할 수 있습니다.

ramesh@dev-db$ crontab -l
no crontab for ramesh
$ cat cron-file.txt
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space
ramesh@dev-db$ crontab cron-file.txt
ramesh@dev-db$ crontab -l
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

참고: 그러면 cron-file.txt가 crontab에 설치되고 이전 cron 항목도 제거됩니다. 따라서 cron-file.txt에서 cron 항목을 업로드할 때는 주의하시기 바랍니다.

추가 크론 튜토리얼

  • Cron 대 Anacron:Linux에서 Anacron을 설정하는 방법(예제 포함)
  • 5분, 초, 시간, 일, 월마다 Cron을 실행하는 방법
  • 6 Linux Crontab 명령 예
  • 일괄 모드에서 Cron 작업을 설치, 편집 또는 제거하는 방법
  • 9가지 예를 통해 at, atq, atrm, 배치 명령 이해

멋진 Linux 기사

다음은 몇 가지 멋진 15가지 예입니다. 도움이 될만한 기사입니다.

  • 엄마, 찾았어요! — 15 실용적인 Linux Find 명령 예제
  • Linux 명령줄 역사를 마스터하기 위한 15가지 예
  • Unix LS 명령:15가지 실제 예
  • Grep을 살펴보세요! – 15가지 실용적인 Grep 명령 예