Cron 및 crontab, 설명

루카 인 출판 얼마 전에 cron 및 crontab에 대한 훌륭한 자습서 나눌 가치가 있다고 생각합니다. Cron은 Windows의 예약 된 작업에 해당합니다., 터미널에서 처리되는 경우에만. 동일한 목표를 달성하기 위해 시각적 인터페이스를 선호하는 사람들은 이것을 볼 수 있습니다. 다른 항목.

크론이란 무엇입니까?

cron이라는 이름은 "시간"을 의미하는 그리스 크로노스에서 유래되었습니다. Unix 운영 체제에서 cron은 정기적 인 간격 (예 : 매분, 일, 주 또는 월)으로 프로세스 또는 스크립트를 실행하는 일반 백그라운드 프로세스 관리자 (데몬)입니다. 실행해야하는 프로세스와 실행해야하는 시간은 crontab 파일에 지정되어 있습니다.

코모 작품

cron 데몬은 /etc/rc.d/ o / 기타 / init.d에 분포에 따라. Cron은 백그라운드에서 실행되며 XNUMX 분마다 crontab 작업 테이블을 확인합니다. / etc / crontab O 전용 / var / 스풀 / cron 수행 할 작업을 검색합니다. 사용자는 일부 프로세스를 자동화하기 위해 cron에 작업이있는 명령이나 스크립트를 추가 할 수 있습니다. 이는 예를 들어 시스템 또는 좋은 백업 시스템의 업데이트를 자동화하는 데 유용합니다.

관련 기사 :
자습서 : .tar.gz 및 .tar.bz2 패키지 설치

Crontab은 무엇입니까?

Crontab은 사용자가 지정한 시간에 실행할 명령 목록을 저장하는 간단한 텍스트 파일입니다. Crontab은 스크립트 또는 명령이 실행되어야하는 날짜와 시간, 실행 권한을 확인하고 백그라운드에서 수행합니다. 각 사용자는 자신의 crontab 파일을 가질 수 있습니다. / etc / crontab 이것은 루트 사용자의 crontab 파일로 간주됩니다. 일반 사용자 (심지어 루트까지)가 자신의 crontab 파일을 생성하고자 할 때 crontab 명령을 사용합니다.

Crontab은 단순 시스템 사용자 또는 루트 사용자로 다중 사용자 시스템에서 cron 작업을 관리하는 가장 쉬운 방법입니다.

crontab 사용

간단한 예부터 시작하겠습니다.

우리는 시스템 업데이트를 자동화하여 "항상 업데이트해야하는데 싫어요!"라는 성가신 문제를 제거 할 것입니다.

방법
관련 기사 :
시스템을 알기위한 명령 (하드웨어 및 일부 소프트웨어 구성 식별)

우선 우리는 스크립트를 만들 것입니다. 이 스크립트는 cron에 의해 호출되며 우리가 원하는 모든 지침을 포함하므로 다음과 같은 간단한 업데이트 스크립트 인 cron에 포함하기 전에 여러 경우와 여러 방법으로 테스트해야합니다.

#! / bin / bash #script 업데이트 예제 # 배포판 선택 # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu

배포판에서 #을 제거하십시오. Ubuntu / Debian 인 경우 apt-get으로 시작합니다.

스크립트를 update.sh로 저장합니다 (예 : 스크립트 디렉토리 홈). 해당 스크립트의 실행 권한을 다음과 같이 변경합니다.

chmod a + x ~ / 스크립트 / update.sh

스크립트를 두 번 실행하여 모든 것이 원활하게 실행되는지 확인하고 필요한 사항을 수정합니다 (오류를 포함해서는 안됩니다. 그렇지 않으면 cron이 오류를 반복해서 반복합니다). 이제 crontab에 작업을 추가합니다.

crontab에 작업 추가

우리는 crontab -e를 사용하여 crontab 에디션을 실행합니다. 일부 배포판 (예 : Ubuntu)에서는 원하는 텍스트 편집기를 선택할 수있는 옵션을 제공하고 나머지는 vi로 남겨 둡니다. crontab 파일은 다음과 같습니다.

# mh dom mon dow 사용자 명령

어디서 :

  • m 스크립트가 실행될 분에 해당하며 값의 범위는 0 ~ 59입니다.
  • h 정확한 시간, 24 시간 형식이 처리되며 값은 0에서 23까지이며 0은 자정 12시입니다.
  • DOM 예를 들어 15 일마다 실행하려면 15를 지정할 수 있습니다.
  • 다우 지수 요일을 의미하며 숫자 (0 ~ 7, 0과 7은 일요일) 또는 영어로 된 하루의 처음 3 자 (월, 화, 수, 목, 금, 토, 일) 일 수 있습니다.
  • 사용자 명령을 실행할 사용자를 정의합니다. 루트 또는 스크립트 실행 권한이있는 한 다른 사용자 일 수 있습니다.
  • 명령 실행할 스크립트의 명령 또는 절대 경로를 나타냅니다. 예 : /home/usuario/scripts/update.sh, 스크립트를 호출하는 경우 실행 가능해야합니다.

설명 된 cron 작업의 몇 가지 예를 명확히하기 위해 :

15 10 * * * 사용자 /home/usuario/scripts/update.sh

매일 오전 10시 15 분에 update.sh 스크립트를 실행합니다.

15 22 * * * 사용자 /home/usuario/scripts/update.sh

매일 오후 10:15에 update.sh 스크립트를 실행합니다.

00 10 * * 0 root apt-get -y root 사용자 업데이트

매주 일요일 오전 10시에 업데이트를 실행합니다.

45 10 * * 태양 루트 apt-get -y 업데이트

루트 사용자는 매주 일요일 (일) 오전 10:45에 업데이트를 실행합니다.

30 7 20 11 * 사용자 /home/usuario/scripts/updata.sh

20 월 7 일 30시 XNUMX 분에 사용자가 스크립트를 실행합니다.

30 7 11 11 sun 사용자 /home/usuario/scripts/pastel_con_velitas.sh

11 월 7 일 오전 30시 XNUMX 분, 즉 일요일에 사용자는 시스템 관리자 (즉, 나)를 축하합니다.

01 * * * * 사용자 /home/usuario/scripts/molestorecordatorio.sh

매일 매시간 XNUMX 분마다 성가신 알림 (권장하지 않음).

여전히 처리 가능 특수 범위 :

30 17 * * 1,2,3,4,5

월요일부터 금요일까지 매일 오후 5시 30 분.

00 12 1,15,28 * *

매월 첫째, 12, 28 일 정오 (급여 지급에 적합)

이것이 혼란 스러울 경우 crontab은 이러한 범위를 정의하는 특수 문자열.

@reboot 시작시 한 번 실행
@yearly는 0 년에 한 번만 실행 : 0 1 *
@ 연간 @yearly와 동일
@monthly는 한 달에 한 번, 첫날 실행 : 0 0 * *
@weekly 매주 한주의 첫 시간의 첫 0 분입니다. 0 0 * * XNUMX ″.
@ 매일 오전 12시 00 0 * * *
@daily와 같은 자정
@ 매시간 0 분마다 : XNUMX * * * *

그 사용은 매우 간단합니다.

@hourly user /home/user/scripts/molestorecordatorio.sh @monthly user /home/user/scripts/backup.sh @daily root apt-get update && apt-get -y upgrade

마지막으로 중요한 것은 :

크론 작업 관리

crontab 파일

기존 crontab 파일을 사용자 정의 파일로 교체

crontab을 -e

사용자의 crontab 파일을 편집하면 각각의 새 줄이 새 crontab 작업이됩니다.

crontab -l

모든 사용자의 crontab 작업 나열

크론탭 -d

사용자의 crontab 삭제

crontab -c 디렉토리

사용자의 crontab 디렉토리를 정의합니다 (사용자의 쓰기 및 실행 권한이 있어야 함).

crontab -u 사용자

다른 사용자의 crontab을 처리하기위한 접두사, 예 :

$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u 사용자

이 도구는 다른 많은 도구와 마찬가지로 다음에서 더 자세히 볼 수 있습니다.

고마워 Lucain!