Linux 작업을 자동화하는 데 도움이 되는 5가지 Crontab 예제

Linux 작업을 자동화하는 데 도움이 되는 5가지 Crontab 예제

cron 프로그램은 Linux에서 다른 프로그램의 실행을 자동화합니다. Cron은 지속적으로 실행되고 주어진 일정에 따라 다른 프로그램을 시작하는 데몬입니다. 여러 다른 파일이 이 일정을 정의합니다. 그것들은 개별적으로 crontab으로 알려져 있습니다.





Cron은 모든 Unix 명령 또는 작업을 예약할 수 있습니다. 때로는 간단한 명령으로 작업하고 싶을 것입니다. 다른 경우에는 전체 작업을 수행하기 위해 스크립트를 작성해야 합니다. Cron은 두 접근 방식 모두에서 잘 작동합니다. 또한 복잡한 일정 규칙과 스크립트 출력을 처리하는 유연한 방법을 지원합니다.





간단한 사용자 작업을 수행하든 본격적인 시스템 관리를 수행하든 실제 예제를 사용하여 cron이 작동하는 방식을 이해하는 것은 필수입니다.





1. 시스템 전체의 Crontab을 사용하여 /tmp 정리

NS /tmp 디렉토리는 시스템의 모든 프로그램이나 사용자가 범용으로 사용하는 임시 위치입니다. 많은 Unix 시스템은 시작하는 동안 /tmp 디렉토리에 있는 오래된 파일을 삭제합니다. 다른 사람들은 종종 cron을 사용하여 이 작업을 예약합니다.

그러나 이 프로세스에 대한 사용자 정의 제어를 원하거나 이를 다른 디렉토리에 적용하려는 경우 빠른 cron 작업을 설정하는 것이 쉬운 방법입니다.



다음은 /tmp 또는 선택한 다른 디렉토리를 정리하는 한 가지 방법입니다.

1 3 * * * /usr/bin/find /tmp -type f -atime +10 -delete

매일 3시 1분에 cron이 이 명령을 실행합니다. 그것은 사용 찾기 명령 /tmp 디렉토리에서 파일을 검색합니다. 최소 10일 전에 마지막으로 수정된 일반 파일을 제외한 모든 파일을 필터링합니다. 그런 다음 찾은 모든 파일을 제거합니다.





다음과 같은 전역 crontab에 이와 같은 명령을 추가해야 합니다. /etc/크론탭 또는 루트의 crontab을 사용하여 sudo crontab -e . 이 명령은 소유자에 관계없이 /tmp에 있는 파일을 삭제할 수 있도록 루트로 실행해야 합니다.

이 예는 find 명령에 대한 전체 경로를 지정합니다. Cron은 기본 경로 설정 실행 파일을 검색하기 위해 명령이 표준 위치에 있는 경우(예: /usr/bin ), 이것은 실제로 필요하지 않습니다. 해당 접근 방식을 선호하는 경우 crontab 자체에서 대체 PATH를 지정할 수 있습니다. 그러나 명령에 대해 전체 경로를 사용하는 것이 조금 더 탄력적입니다.





로그를 작성하거나 캐시된 데이터를 저장하는 프로젝트에서 작업하는 경우 디스크 공간을 확보하기 위해 파일을 삭제하는 경우 이러한 접근 방식이 중요할 수 있습니다. 위의 예는 빠르고 간단한 접근 방식이지만 다음과 같은 명령을 사용해야 합니다. tmpwatch , 사용 가능한 경우.

2. 매일 두 번 데이터베이스 백업

이제부터는 로컬 crontab을 통해 관리할 수 있는 사용자별 작업에 집중하겠습니다. 다음 명령을 사용하여 현재 사용자의 crontab을 편집할 수 있습니다.

crontab -e

이 crontab에는 사용자 계정과 관련된 작업이 포함되어야 합니다. MySQL 데이터베이스를 채우는 것과 관련된 프로젝트에서 작업하고 있다고 상상해보십시오. 당신은 사용할 수 있습니다 mysqldump 전체 데이터베이스의 SQL 덤프를 만드는 도구입니다. 출력을 리디렉션하여 쉽고 예약된 데이터베이스 백업을 수행할 수 있습니다.

30 4 * * * /usr/local/mysql/bin/mysqldump --login-path=local --databases albums > /tmp/album-db.$(date +\%s).sql

기본적으로 cron은 crontab 파일이 속한 사용자에게 이메일을 통해 출력(오류 포함)을 보냅니다. 그러나 다음을 사용하여 명령줄에서와 같은 방식으로 출력을 리디렉션할 수 있습니다. > 파일명 표기법.

Steam 트레이딩 카드를 빨리 얻는 방법

위의 예에서 현재 Unix 타임스탬프를 기반으로 파일 이름을 빌드하기 위해 명령 대체를 사용하는 방법에 유의하십시오. 왜냐하면 % symbol은 cron에 특별한 의미를 가지며 명령은 앞에 백슬래시를 사용하여 이스케이프해야 합니다.

3. 사용자 정의 스크립트로 사이트 가동 시간 확인

마지막 예제의 명령이 불편할 정도로 길다는 것을 눈치채셨을 것입니다. 고맙게도 스크립트에 명령을 저장하고 crontab을 통해 해당 스크립트를 실행하는 것을 막을 수 있는 방법은 없습니다. 다음은 매분 스크립트를 실행하는 예입니다.

* * * * * /Users/bobby/bin/site-monitor.sh

이론적으로 다음을 사용할 수 있습니다. 더 짧은 명령에 대한 변수 또는 물결표 확장:

* * * * * ~/bin/site-monitor.sh

cron이 지원을 중단할 경우를 대비하여 그렇게 하지 않도록 선택할 수 있습니다. 전체 경로를 사용하는 데 실질적인 해는 없으며 틀림없이 더 읽기 쉽습니다.

스크립트 자체는 curl 프로그램을 사용하여 HTTP 상태 코드 주어진 URL에 대해 상태가 성공 이외의 것을 나타내는 경우 스크립트는 출력에 메시지를 씁니다.

앞에서 언급했듯이 cron은 이 출력을 이메일을 통해 우리에게 보낼 것입니다. cron의 명령이 성공 시 출력을 생성하지 않도록 하는 것이 유용할 수 있습니다.

#!/bin/bash
STATUS=`curl -s -o /dev/null -I -w '%{http_code}' http://example.com/`
if [ '$STATUS' != '200' ]
then
echo 'site appears to be down'
fi

4. 이메일을 통한 디스크 공간 보고서

cron의 기본 이메일 동작을 변경하려면 다음을 사용할 수 있습니다. 메일토 환경 변수. Cron은 crontab 파일에서 설정할 수 있는 몇 가지 변수를 지원합니다. 그런 다음 Cron은 이 변수를 다음에 오는 각 명령의 환경에 적용합니다.

대체 대상 이메일 주소를 설정하려면 다음 형식을 사용하십시오.

MAILTO=user@example.com

필요한 경우 외부 이메일을 보내도록 설정된 컴퓨터에서 이 작업을 실행해야 합니다. 다음은 동일한 시스템의 다른 사용자에게 이메일을 보내는 예입니다. 매일 12:00, 23:00 두 번 운행합니다. NS DF 명령은 여유 디스크 공간을 표시하므로 이 crontab 항목은 디스크 공간이 괜찮은지 확인하는 작업을 위임합니다.

MAILTO='sarah'
0 12,23 * * * /bin/df -h

결과 이메일은 다음과 같습니다.

cron은 자체 사용자 정의 이메일 헤더를 추가합니다. 디버깅에 유용할 수 있습니다. 빈 문자열을 사용하여 cron의 기본 이메일 동작을 비활성화할 수도 있습니다.

MAILTO=''

5. 특정 시간에 메시지 브로드캐스트

다른 예제는 매우 간단한 스케줄링을 사용하지만 cron은 시간 지정에 대한 강력한 구문을 지원합니다. 정확한 일치뿐만 아니라 다음도 처리합니다.

  • 쉼표로 구분된 여러 값( , )
  • 하이픈( - )
  • 슬래시 뒤의 단계 값( / )

따라서 예를 들어, 로그인한 모든 사용자에게 메시지를 보내고 싶다면 근무 시간에는 한 시간에 두 번, 단 세 시간마다 다음과 같이 하면 됩니다.

0 15,45 9-17/3 ? * * * echo 'Enjoy your work!' | wall

이 명령은 오전 9시부터 오후 5시까지 매 3시간마다 15분과 45분에 실행됩니다. wall 명령은 로그인한 각 터미널 사용자에게 메시지를 보냅니다.

cron이 캘린더 앱보다 더 유연한 일정을 제공한다는 것을 알게 될 수도 있습니다. 일부 변형을 사용하면 매월 두 번째 금요일이나 특정 날짜에 가장 가까운 요일에 실행할 명령을 지정할 수 있습니다.

Cron은 다양한 유형의 Linux 작업을 자동화할 수 있습니다.

이것은 cron이 자동화하는 데 도움이 될 수 있는 작업 유형 중 일부입니다. 복잡한 구문에 익숙해지는 데 시간이 걸릴 수 있지만 cron은 강력한 유틸리티입니다. 시스템 전체 작업과 사용자별 작업 모두에 cron을 사용할 수 있습니다.

스케줄링을 위한 복잡한 구문을 사용하면 cron이 강력하지만 참고할 수 있어야 합니다. Crontab은 주석을 허용하므로 시간 필드를 문서화하기 위해 주석 행을 포함할 수 있습니다.

공유하다 공유하다 트위터 이메일 Linux에서 Crontab을 사용하여 반복적인 작업을 자동화하는 방법

Linux에서 시간을 절약하고 주요 프로세스를 자동화하고 싶으십니까? 크론탭이 답입니다.

다음 읽기
관련 항목
  • 리눅스
  • 컴퓨터 자동화
  • 작업 자동화
  • 리눅스 명령어
저자 소개 바비 잭(게시된 기사 58건)

Bobby는 거의 20년 동안 소프트웨어 개발자로 일한 기술 애호가입니다. 그는 게임에 열정적이며 Switch Player Magazine에서 리뷰 편집자로 일하고 있으며 온라인 퍼블리싱 및 웹 개발의 모든 측면에 몰두하고 있습니다.

윈도우 7 대 윈도우 10 게임 2017
바비 잭이 참여한 작품 더보기

뉴스레터 구독

뉴스레터에 가입하여 기술 팁, 리뷰, 무료 전자책 및 독점 거래를 확인하십시오!

구독하려면 여기를 클릭하세요.