필요 사항¶
- Rocky Linux가 설치된 컴퓨터.
- 명령 줄 환경에서 설정 파일을 변경하기 위해 선호하는 편집기를 사용하는 방법을 알아야 합니다 (이 문서에서는
vi
를 사용합니다). - bash, python 또는 기타 스크립트 또는 프로그래밍 도구에 대한 기본 지식을 이해했으며 스크립트를 자동으로 실행해야 합니다.
- SSH를 통해 컴퓨터에 연결되어 있어야 합니다 (root 사용자이거나 UID가 1000보다 큰 일반 사용자일 수 있음).
cron 소개¶
GNU/Linux는 자동화된 프로세스를 위한 시간 기반 cron
작업 프로그램인 cron 시스템을 제공합니다. 이는 어렵지 않지만 매우 강력한 기능을 가지고 있습니다. 매일 오후 5시에 스크립트나 프로그램을 실행하고 싶은가요? cron
이 가능합니다. cron
에는 동일한 기능을 제공하는 다른 브랜치(또는 변형)들이 있습니다. 이 문서에서는 cronie를 사용하며 버전은 1.5.2입니다. 최신 버전과 업데이트 로그를 확인하려면 여기를 클릭하세요.
cronie 설명¶
- cronie - 패키지 이름으로, Rocky Linux는 기본적으로 cronie를 포함하고 있습니다.
- crontab - 각 사용자의
crontab
(작업 일정)을 유지하는 명령입니다. - crond.service - cronie의 데몬,
systemctl start | restart | stop | status
를 사용하여 데몬을 관리할 수 있습니다. - /etc/crontab - 다른 사용자에게 cron 작업을 할당하는 파일입니다. 보통은
crontab -e
를 사용하는 것이 일반적입니다. 예를 들어, 현재 root 사용자로 로그인한 경우,crontab -e
를 입력하고 저장한 후에는 /var/spool/cron/root 파일에 특정한 cron 작업이 표시됩니다. - /var/log/cron * - cronie의 로그입니다. 기본적으로 로그 회전을 수행하며 날짜 접미사가 붙습니다. *는 와일드카드를 의미합니다.
- anacron - cronie의 일부.
anacron
에 대한 자세한 내용은 anacron 자동화 명령을 참조하세요.
crontab
명령¶
crontab
은 cronie 패키지 설치 후 얻은 명령입니다. anacron
에 비해 7 * 24시간 작동하는 서버에 더 적합합니다. crontab
의 일반적인 옵션은 다음과 같습니다.
-e # crontab 예약된 작업을 편집합니다. -l # crontab 작업을 보여줍니다. -r # 현재 사용자의 모든 crontab 작업을 삭제합니다.
cronie 사용¶
여러 사용자가 서로 다른 시간에 서로 다른 명령어(또는 스크립트)를 실행할 수 있도록 이 파일에 작성할 수 있습니다. 그러나 일반적으로는 crontab -e
를 사용하는 것이 일반적입니다.
shell > cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# 자세한 내용은 man 4 crontabs를 참조하세요. # 작업 정의 예시:
# .---------------- 분 (0-59)
# | .------------- 시 (0-23)
# | | .---------- 일 (1-31)
# | | | .------- 월 (1-12) OR jan,feb,mar,apr ...
# | | | | .---- 요일 (0-6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * 사용자명 실행할 명령어
변수 | 뜻 | 값 범위 |
---|---|---|
The 1st* | 분 | 0-59 |
The 2nd* | 시간 | 0-23 |
The 3rd* | 일 | 1-31 |
The 4th* | 월 | 1-12 |
The 5th* | 요일 | 0-7(0과 7은 모두 일요일을 나타냄) |
다음 예에서는 root 사용자로 이 작업을 수행한다고 가정하고 다음을 입력합니다.
crontab -e
루트 사용자의 시간 제한 작업을 불러옵니다.vi
를 기본 시스템 편집기로 사용하는 경우 i 키를 눌러 삽입 모드로 들어갑니다.- "#"은 한 줄의 주석임을 의미합니다.
# 야간 10시 백업 시스템
00 22 * * * /usr/local/sbin/backup
- 위의 내용을 입력했으면(다시
vi
가 시스템 편집기라고 가정) ESC를 눌러 삽입 모드를 종료합니다. - SHIFT+:+wq!(편집기 하단에 표시됨)를 사용하여 파일을 저장하고 종료합니다.
이제 스크립트는 매일 밤 22:00에 실행됩니다. 이것은 단순한 예입니다. 더 정교한 것이 필요하면 상황이 더 복잡해질 수 있습니다.
Attention
cronie가 스크립트를 실행하려면 스크립트에 실행 권한(chmod +x
)이 있어야 합니다.
복잡한 옵션¶
지금까지 논의된 내용은 단순한 옵션이지만 더 복잡한 시간 제한 작업은 어떻습니까?
# 매 10분마다 백업 스크립트를 실행하려고 가정해 봅시다 (실용적인 것은 아니지만, 예제입니다!). 하루 종일. 이를 위해 다음과 같이 작성합니다:
* /10 * * * * /usr/local/sbin/backup
# 매주 월요일, 수요일, 금요일마다 10분마다 백업을 실행하고 싶다면 다음과 같이 작성합니다:
* /10 * * * 1,3,5 /usr/local/sbin/backup
# 토요일과 일요일을 제외한 매일 10분마다 백업하려면 다음과 같이 작성합니다:
* /10 * * * 1-5 /usr/local/sbin/backup :
* /10 * * * 1,3,5 /usr/local/sbin/backup
# 토, 일 외에 10분에 한번씩 매일 백업하는 방법은?
* /10 * * * 1-5 /usr/local/sbin/backup
특수 기호 | 뜻 |
---|---|
* | 임의의 시간을 나타냅니다. 예를 들어, 첫 번째 는 임의의 분을 나타내고, 두 번째 는 임의의 시간을 나타냅니다. |
, | , 불연속적인 시간을 나타냅니다. 예를 들어, "0 8,12,16 * * *"는 매일 오전 8시, 오후 12시, 오후 4시에 명령이 실행됨을 의미합니다. |
- | 연속적인 시간 범위를 나타냅니다. 예를 들어, "0 5 * * 1-6"는 월요일부터 토요일까지 매일 오전 5시에 명령이 실행됨을 의미합니다. |
*/n | 일정한 간격으로 실행할 때 사용됩니다. 예를 들어, "/10 * * *"는 10분마다 실행됨을 의미합니다. |
Attention
cronie가 인식할 수 있는 가장 작은 시간 단위는 1분입니다. 예를 들어, 30 4 1,15 * 5 명령
은 매월 1일과 15일, 매주 금요일 새벽 4시 30분에 실행됩니다. 일부 스크립트나 명령의 출력 정보가 타이밍 작업의 실행을 방해할 수 있으므로 출력 리디렉션이 필요합니다. 예를 들어, */10 * * * * /usr/local/sbin/backup &> /dev/null
와 같이 사용합니다.
Q & A¶
- /etc/crontab과
crontab -e
사이에 어떤 차이가 있나요?crontab -e
는 사용자를 지정할 필요가 없습니다 (기본적으로 현재 로그인한 사용자를 사용합니다). 그러나 /etc/crontab은 사용자를 지정해야 합니다. - 지정된 명령이나 스크립트가 올바르게 실행되지 않는 경우 어떻게 해야 하나요? /var/log/cron* 파일을 확인하고,
journalctl -u crond.service
를 사용하여 데몬 프로세스에 대한 정보를 확인하고, 스크립트가 x 권한을 가지고 있는지 등을 확인하여 문제를 해결합니다. - cron 외에 어떤 cron 변형이 있나요? dcron , 최신 버전은 4.5(2011-50-01)입니다. fcron , 최신 버전은 3.3.0(dev, 2016-08-14)입니다. bcron , 최신 버전은 0.11(2015-08-12)입니다. cronsun , 최신 버전 0.3.5(2018-11-20).
요약¶
Rocky Linux 데스크톱 사용자 또는 시스템 관리자에게 cronie는 매우 강력한 도구입니다. 작업 및 스크립트를 자동화할 수 있으므로 수동으로 실행해야 하는 것을 기억할 필요가 없습니다. 기본 지식은 어렵지 않지만 실제 작업은 복잡할 수 있습니다. crontab
에 대한 자세한 내용은 crontab 매뉴얼 페이지를 방문하세요. 또한 인터넷에서 "crontab"을 검색하면 많은 검색 결과를 제공하고 crontab
표현식을 미세 조정하는 데 도움이 됩니다.
Author: tianci li
Contributors: Steven Spencer