Cron을 사용하여 VPS의 작업을 자동화하는 방법

Cron을 사용하여 VPS의 작업을 자동화하는 방법

2022-06-01 last update

5 minutes reading Ubuntu CentOS System Tools

소개


Linux 기기에서 백그라운드에서 작업을 실행하는 가장 표준적인 방법 중 하나는cron 작업을 사용하는 것이다.VPS에서 작업을 스케줄링하고 다양한 유지 관리 작업을 자동화하는 데 유용합니다."Cron"자체는 백그라운드에서 실행되는 데몬(또는 프로그램)입니다.실행되는 다른 작업의 계획은 "crontab"라는 프로필에 있습니다

설치


기본적으로 거의 모든 발행판에 형식적인cron이 설치되어 있습니다.그러나 사용 중인 시스템이 설치되지 않은 경우 다음 명령을 사용하여 설치할 수 있습니다.
Ubuntu/Debian의 경우:
sudo apt-get update
sudo apt-get install cron
Cent OS/Red Hat Linux의 경우:
sudo yum update
sudo yum install vixie-cron crontabs
백그라운드에서도 실행되도록 해야 합니다.
sudo /sbin/chkconfig crond on
sudo /sbin/service crond start

문법


다음은 우리가 실행하고자 하는 예시 작업입니다.
5 * * * * curl http://www.google.com
우리가crontab에 놓을 다른 작업의 문법은 무섭게 보일 수도 있습니다.만약 네가 그것을 어떻게 읽는지 알고 있다면, 그것은 실제로는 매우 간결하고 해석하기 쉬운 방법이다.각 명령은 다음과 같습니다.
  • 부표
  • 명령
  • 이 명령은 일반적으로 명령줄에서 실행되는 명령일 수 있습니다.문법의 시간표 구성 요소는 다음과 같은 순서로 5개의 다른 시간표 옵션으로 나뉜다.
  • 시간
  • 월일
  • 요일
  • 예제


    다음은 크론을 설정할 때 흔히 볼 수 있는 계획의 예시 목록입니다.
    분당 명령을 실행하려면 다음과 같이 하십시오.
    * * * * *
    
    시간 동안 12분마다 명령을 실행하려면 다음과 같이 하십시오.
    12 * * * *
    
    각 자리 표시자에 대해 다른 옵션을 사용할 수도 있습니다.15분마다 명령을 실행하려면 다음과 같이 하십시오.
    0,15,30,45 * * * *
    
    매일 새벽 4시에 명령을 실행하려면:
    0 4 * * *
    
    매주 화요일 오전 4시에 명령을 실행하려면 다음을 사용하십시오.
    0 4 * * 2
    
    스케줄에서 나눗셈을 사용할 수 있습니다.0,15,30,45를 나열하는 것 외에 다음을 사용할 수 있습니다.
    */4 2-6 * * *
    
    "2-6"범위에 주의하십시오.이 구문은 2:00am과 6:00am 사이에서 명령을 실행합니다.
    스케줄링 문법 기능이 강하고 유연하다.너는 거의 모든 가능한 시간을 표현할 수 있다.

    프로비저닝


    시간표가 확정되고 실행할 작업을 알면 프로세스가 읽을 수 있도록 위치를 설정해야 합니다.몇 가지 다른 점이 있지만, 가장 흔히 볼 수 있는 것은 사용자의crontab이다.기억하고 있다면,cron이 실행할 작업 시간표를 저장하는 파일입니다.각 사용자의 파일은 /var/spool/cron/crontab 에 있지만 직접 편집할 수는 없습니다.반대로 crontab 명령을 사용하는 것이 좋다.
    다음 명령을 사용하여 crontab를 편집할 수 있습니다.
    crontab -e
    
    모든 작업의 일정을 입력할 수 있는 텍스트 편집기를 열 것입니다.
    crontab을 보고 싶지만 편집하지 않으려면 다음 명령을 사용할 수 있습니다.
    crontab -l
    
    다음 명령을 사용하여 crontab를 지울 수 있습니다.
    crontab -r
    
    권한이 있는 사용자라면 지정crontab -u <user> -e을 통해 다른 사용자의

    출력


    실행되는cron 작업에 대해 이 사용자와 연결된 사용자의 전자 우편 주소는 로그 파일이나/dev/null로 지정되지 않는 한 전자 우편으로 출력됩니다.crontab 상단에 "MAILTO"설정을 제공하면 수동으로 전자 우편 주소를 지정할 수 있습니다.다음 예제를 사용하여 실행할 셸, cron 바이너리 파일 검색 경로, 홈 디렉터리를 지정할 수 있습니다.
    먼저 crontab를 편집합니다.
    crontab -e
    
    그런 다음 다음과 같이 편집합니다.
    SHELL=/bin/bash
    HOME=/
    MAILTO=”[email protected]”
    #This is a comment
    * * * * * echo ‘Run this command every minute’
    
    이 특정 작업은 "분당 이 명령 실행"을 출력합니다이 출력은 분당 전자 우편으로 제가 지정한 "example @.com"전자 우편 주소로 보냅니다.분명히 이것은 이상적인 상황이 아닐 수도 있다.앞에서 설명한 바와 같이, 출력이 있는 전자메일을 받지 않도록 출력을 파이프를 통해 로그 파일이나 빈 위치로 전송할 수 있습니다.
    로그 파일에 첨부하려면 다음과 같이 하십시오.
    * * * * * echo ‘Run this command every minute’ >> file.log
    
    참고: ">>"파일을 첨부합니다.
    파이프를 빈 위치에 삽입하려면 /dev/null 를 사용합니다.다음은 백그라운드에서 실행되고 실행되는 PHP 스크립트입니다.
    * * * * * /usr/bin/php /var/www/domain.com/backup.php > /dev/null 2>&1
    

    액세스 제한

    /etc/cron.allow/etc/cron.deny 파일을 사용하면cron에 대한 접근을 제한하기 쉽습니다.사용자를 허용하거나 거부하려면 필요한 액세스 권한에 따라 사용자 이름을 파일 중 하나에 배치하기만 하면 됩니다.기본적으로, 대부분의 cron 수호 프로세스는 파일이 존재하지 않는 한 모든 사용자가cron에 접근할 권리가 있다고 가정합니다.모든 사용자의 액세스를 거부하고 tdurden에 대한 액세스 권한을 부여하려면 다음 명령 시퀀스를 사용합니다.
    echo ALL >>/etc/cron.deny
    echo tdurden >>/etc/cron.allow
    
    먼저 거부 파일에 "ALL"를 추가하여 모든 사용자를 잠급니다.그리고 사용자 이름을 allow 파일에 추가함으로써 사용자에게cron 작업을 수행할 수 있는 권한을 부여합니다.

    특수 문법


    crontab 파일에서 몇 개의 속기 명령을 사용하여 관리를 간소화할 수 있습니다.지정된 등가 숫자 명세서의 기본 단축키:
  • @hourly-약칭0 * * * *
  • @daily-약칭0 0 * * *
  • @weekly-약칭0 0 * * 0
  • @monthly-약칭0 0 1 * *
  • @yearly-약칭0 0 1 1 *
  • @reboot 명령은 시작 시 실행됩니다.
    주의: 모든cron 수호 프로세스가 이 문법 (특히 구 버전) 을 해석할 수 있는 것은 아니므로 의존하기 전에 유효한지 자세히 확인하십시오.
    작업을 시작할 때 실행하려면 crontab 파일 (crontab -e 을 편집하고 다음과 같이 파일에 줄을 두어야 합니다.
    @reboot echo "System start up"
    
    이 특정한 명령은 실행되고 전자메일을 통해crontab에서 지정한 사용자에게 전송됩니다.