이 기사에서는 백그라운드에서 리눅스 작업을 예약하고 실행하는 방법을 자동으로 규칙적인 간격으로 Crontab 명령을 사용하여 검토하고 살펴볼 것입니다.
빈번한 작업을 수동으로 처리하는 것은 시스템 관리자에게 번거로운 작업입니다. 이러한 작업은 리눅스나 유닉스와 유사한 운영 체제에서 cron 데몬을 사용하여 사람의 개입 없이 백그라운드에서 자동으로 예약 및 실행할 수 있습니다.
Linux 시스템 백업, 일정 업데이트, 그리고 파일 동기화 등을 자동화할 수 있으며, 이를 위해 Cron 데몬을 사용할 수 있습니다. 이는 명령 줄에서 예약된 작업을 실행하는 데 사용되거나 온라인 도구를 사용하여 크론 작업을 생성할 수 있습니다.
Cron은 매분마다 깨어나 예약된 작업을 확인하고 – Crontab (CRON TABle)은 이러한 종류의 반복 작업을 예약할 수 있는 테이블입니다.
팁: 각 사용자는 자신의 크론탭을 생성, 수정 및 삭제할 수 있습니다. 기본적으로 cron은 사용자에 대해 활성화되어 있지만, /etc/cron.deny 파일에 항목을 추가하여 사용자를 제한할 수 있습니다.
Linux의 크론탭
Crontab 파일은 실제로 한 줄에 하나의 명령을 가지며, 여섯 개의 필드로 나뉩니다. 처음 다섯 필드는 작업을 실행할 시간을 나타내고, 마지막 필드는 명령입니다.
- 분 (값 범위는 0-59)
- 시간 (값 범위는 0-23)
- 월의 날짜 (값 범위는 1-31)
- 1-12월
- Sun-Sat요일
- 명령 – 스케줄하려는 /경로/명령 또는 스크립트입니다.
1. 크론탭 항목 목록
현재 사용자에 대한 크론탭 명령을 -l
옵션과 함께 사용하여 작업을 나열하거나 관리합니다.
# crontab -l 00 10 * * * /bin/ls >/ls.txt
2. 크론탭 항목 편집
크론탭 항목을 편집하려면 아래에 표시된 옵션인 -e
를 사용하십시오. 아래 예제는 VI 편집기에서 예약된 작업을 엽니다. 필요한 변경 사항을 하고 설정을 자동으로 저장하는 :wq
키를 눌러 나가십시오.
# crontab -e
3. 사용자의 예약된 크론 작업 목록
특정 사용자인 tecmint의 예약된 작업 목록을 -u
(사용자) 및 -l
(목록) 옵션을 사용하여 나열합니다.
# crontab -u tecmint -l no crontab for tecmint
참고: 오직 root 사용자만 다른 사용자의 크론탭 항목을 완전히 볼 수 있는 권한이 있습니다. 일반 사용자는 다른 사용자의 크론탭을 볼 수 없습니다.
4. 크론탭 항목 제거
주의: -r
매개변수가 있는 크론탭은 크론탭에서 확인 없이 완전한 예약된 작업을 제거합니다. 사용자의 크론탭을 삭제하기 전에 -i
옵션을 사용하십시오.
# crontab -r
5. 크론탭 삭제 전 확인 요청
크론탭에는 -i 옵션을 사용하여 사용자의 크론탭을 삭제하기 전에 사용자에게 확인을 요청합니다.
# crontab -i -r crontab: really delete root's crontab?
6. 허용된 특수 문자(*, -, /, ?, #)
- 별표(*) – 필드 내 모든 값 또는 가능한 모든 값과 일치합니다.
- 하이픈(-) – 범위를 정의합니다.
- 슬래시(/) – 1번째 필드 /10은 10분마다 또는 범위의 증가입니다.
- 쉼표(,) – 항목을 구분합니다.
7. 시스템 전체 크론 일정
A system administrator can use the predefined cron directory as shown below.
- /etc/cron.d
- /etc/cron.daily
- /etc/cron.hourly
- /etc/cron.monthly
- /etc/cron.weekly
8. 특정 시간에 작업 예약
아래 작업은 매일 오전 12:30에 /tmp에서 빈 파일 및 디렉토리를 삭제합니다. 크론탭 명령을 수행하려면 사용자 이름을 명시해야 합니다. 아래 예에서는 root 사용자가 크론 작업을 수행합니다.
# crontab -e 30 0 * * * root find /tmp -type f -empty -delete
9. 일반 일정에 대한 특수 문자열
Strings | Meanings |
---|---|
@reboot | The command will run when the system reboots. |
@daily | Once per day or may use @midnight. |
@weekly | Once per week. |
@yearly | Once per year. we can use the @annually keyword also. |
동일한 것을 사용하려면 크론 명령의 다섯 필드를 키워드로 대체해야 합니다.
10. 이중 앰퍼샌드(&&)로 여러 명령 실행
아래 예에서는 command1과 command2가 매일 실행됩니다.
# crontab -e @daily <command1> && <command2>
11. 이메일 알림 비활성화.
기본적으로 cron은 cron 작업을 실행하는 사용자 계정으로 메일을 보냅니다. 이를 비활성화하려면 아래 예와 유사한 cron 작업을 추가하십시오. 파일 끝에 >/dev/null 2>&1 옵션을 사용하여 cron 결과의 모든 출력을 /dev/null 아래로 리디렉션합니다.
[root@tecmint ~]# crontab -e * * * * * >/dev/null 2>&1
결론: 작업의 자동화는 작업을 더 나은 방법으로, 오류 없이 효율적으로 수행할 수 있게 도와줍니다. 자세한 정보는 터미널에서 ‘man crontab‘ 명령을 입력하여 crontab 매뉴얼 페이지를 참조할 수 있습니다.
Source:
https://www.tecmint.com/11-cron-scheduling-task-examples-in-linux/