숙련된 Linux 시스템 관리자는 정기적인 유지 관리 작업을 백그라운드에서 자동으로 실행하는 것의 중요성을 알고 있습니다.
Linux Cron 유틸리티는 특정 시간 및/또는 요일에 정기적인 백그라운드 작업을 지속적으로 예약하는 효과적인 방법입니다.
이 기사는 현재 진행 중인 괴짜를 위한 생산성 팁 시리즈의 일부입니다. 이 기사에서는 crontab 작업 스케줄링의 15가지 멋진 예를 검토해 보겠습니다.
Linux Crontab 형식
MIN HOUR DOM MON DOW CMD
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개 필드 대신 재부팅, 자정, 매년, 매시간과 같이 @ 뒤에 키워드를 사용할 수 있는 특별한 경우가 있습니다.
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 명령 예