웹 사이트는 Cron을 사용하여 예약 된 작업을 실행할 수 있습니다.

시계

우리는 정기적으로 프로세스를 실행하는 다수의 중복 모니터링 시스템을 가지고 있습니다. 어떤 것은 그들이하는 일에 따라 매분마다, 어떤 것은 밤에 한 번 실행됩니다. 예를 들어 30 일 동안 구매하지 않은 모든 고객에게 쿠폰을 보내기 위해 내보내는 스크립트를 실행할 수 있습니다.

이 모든 것을 직접 추적하는 것보다 자동으로 예약 및 실행되는 작업을 빌드하는 것이 훨씬 쉽습니다. Unix 기반 시스템에서는 Cron으로 수행됩니다. 당신이하고있는 일을 아는 여러분은 제가 잘못된 정보를 버리면 저와 독자들을 자유롭게 교육 시키십시오.

불행한 일이지만 일반적인 웹 개발자는 Cron에 대해 전혀 알지 못합니다. 그렇더라도 웹 호스팅 회사는 종종 Cron에 대한 액세스 또는 지원을 제공하지 않습니다. 내 호스트는 후자 중 하나입니다. 사용할 수 있지만 지원하지 않습니다.

Cron은 무엇입니까?

크론 그리스어 Chronos의 이름을 따서 명명되었습니다. 시간. Cron은 Crontab에 의해 누적 된 작업을 실행하기 위해 연속 루프로 실행됩니다 (아마도 ulator. 이러한 작업은 일반적으로 Cronjobs라고하며 사이트의 스크립트를 참조 할 수 있습니다.

크론 다이어그램 설명

Crontab을 설정하는 방법

실제로 Cron을 실행하는 것은 어려울 수 있으므로 여기에 제가 배운 내용과이를위한 방법이 있습니다. 빨면:

  1. 트위터를 확인하기 위해 스크립트를 설정했습니다. API 누가 답장했는지보기 위해 . 이 메시지를 웹 사이트에 이미 저장 한 메시지와 비교하여 새로운 메시지를 입력했습니다.
  2. 스크립트가 작동하면 사용자가 스크립트를 실행할 수있는 권한 (744)을 활성화하고 스크립트 참조를 내 Cronjob 파일에 추가했습니다. 자세한 내용은 나중에 설명합니다.
  3. 그런 다음 SSH를 통해 내 웹 사이트에 로그인해야했습니다. Mac에서는 터미널을 열고 입력해야합니다. SSH 사용자 이름@domain.com 여기서 사용자 이름은 사용하려는 사용자 이름이고 도메인은 웹 사이트입니다. 그런 다음 암호를 입력하라는 메시지가 표시되었습니다.
  4. 그런 다음 서버의 파일 이름과 상대 경로를 입력하여 명령 프롬프트에서 직접 스크립트를 실행하려고했습니다. /var/www/html/myscript.php
  5. 올바르게 작동하면 파일의 첫 번째 줄에 필요한 Unix 코드를 추가했습니다. #! / usr / bin / php -q . 나는 이것이 단순히 Unix가 스크립트를 실행하기 위해 PHP를 사용하도록 지시한다고 믿는다.
  6. 터미널 명령 줄에서 다음을 입력했습니다. crontab을 (다른 사용자는 crontab을 -e) Enter 키를 누르십시오. 필요한 모든 것입니다!

Cronjob 파일 구문

위의 # 2와 관련하여 Cron은 스크립트 실행시기를 결정하기 위해 독창적 인 체계를 사용합니다. 실제로 이것을 복사하여 Cronfile에 붙여 넣을 수 있습니다 (제 호스트에서는 / var / spool / cron / 내 사용자 이름과 동일한 파일 이름).

# + —————- 분 (0 – 59)
# | + ————- 시간 (0 – 23)
# | | + ———- 일 (1 – 31)
# | | | + ——- 월 (1 – 12)
# | | | | + —- 요일 (0 – 6) (일요일 = 0 또는 7)
# | | | | |
* * * * * /var/www/html/myscript.php

위의 내용은 매분 내 스크립트를 실행합니다. 한 시간에 한 번만 실행되도록하려면 실행하려는 시간을 몇 분 후에 입력해야하므로 30 분 표시에있는 경우 :

30 * * * * /var/www/html/myscript.php

이 파일에 대한 권한도 실행 파일로 설정해야합니다! 터미널 창에서 구문, 권한 및 crontab을 실행하는 것이 가장 중요한 요소라는 것을 알았습니다. 파일을 다시 저장할 때마다 권한도 재설정해야합니다.

업데이트 : 작업이 실행 중인지 확인하려면 스크립트가 마지막으로 실행 된 시간으로 데이터베이스 필드를 업데이트하는 방법이 있습니다. 더 드물다면 자신에게 보낸 이메일을 스크립팅 할 수 있습니다.

추가 Cron 리소스 :

Cron을 사용하여 얼마나 많은 작업을 자동화 할 수 있습니까?

댓글 8

  1. 1

    crojobs를 처음 접하는 사람을 위해 cron 설정에 대한 잘 다루어 진 기사, cron 설정에서 가장 어려운 부분은 cronjob 실행 간격을 파악하는 것이며, 처음 시도에서 잘못된 간격을 얻는 것은 매우 일반적입니다. cronjob이 시간에 민감한 경우 스크립트에 일부 코드를 포함하여 상태를 에코하여 작업 실행 상태를 계속 알 수 있도록하는 것이 좋습니다.

  2. 2

    하이 더그,

    크론 작업으로 작업 할 때 고려해야 할 몇 가지 사항입니다.

    첫째, 수십 개 후에 UI, 데이터베이스 및 영어로 보이는 구문이 있으면 좋을 것입니다 😉

    둘째, cron은 작업의 이전 호출이 완료되었는지 여부에 관계없이 지정된 시간에 작업을 시작합니다. 따라서 2 분에 한 번 XNUMX 분이 걸리는 작업을 실행하면 동일한 작업이 많이 실행됩니다.

    다음으로, 문제가 발생했을 때 오류보고가 표시되지 않으므로 자체 오류보고를 추가해야합니다.

    몇 가지 방법으로이 문제를 해결했습니다.
    – 실행해야 할 항목을 결정하기 위해 cron을 통해 애플리케이션을 트리거하도록 데이터베이스를 살펴 봅니다. 원하는 항목에 따라 XNUMX 분 또는 XNUMX 시간에 한 번 실행
    – 각 스크립트가 / tmp에 '잠금'파일을 생성하도록하고 파일이있는 경우 다시 시작하지 마십시오. 원하지 않는 경우 중복 작업을 방지합니다.
    – 스크립트가 1 시간이 지난 잠금 파일을 발견하면 (또는 사용자가 죽었다고 제안하는) 이메일 알림을 보냅니다.
    – 스크립트가 작업 실패시 이메일을 보내도록하여 무언가 잘못되었음을 알 수 있도록합니다.
    – 필요가 스크립트 몇 개를 넘어서는 경우 Flux 또는 상용 스케줄러와 같은 프레임 워크를 살펴보십시오.

    크리스

  3. 4

    또한 대부분의 Linux / Unix 시스템에서 "crontab -e"는 crontab을 편집하는 데 사용하는 것입니다. 호스트 (Jumpline)가 보안상의 이유로 수정 된 버전을 사용하고있는 것 같습니다.

  4. 5

    나는 Cronnie를 처음 만난 날을 아직도 기억합니다. 나는 그녀에 대한 이야기를 들었고, 그녀는 항상 제 시간에 신뢰할 수 있었지만 때로는 그녀의 의도에 대해 약간 혼란 스러웠습니다.

    그녀가 처음에는 나에게 완전한 미스터리 였기 때문에 나는 이것이 사실임을 알았습니다. 주변에 그녀에 대해 물어 본 후 나는 그녀가 어떻게 운영하는 것을 좋아하는지에 대해 상당히 빨리 잡았습니다. 이제 내 인생에서 그녀 없이는 하루가 지나가는 것을 상상할 수 없습니다. 그녀는 평범한 것을 흥미롭게 만들고 내 어깨에서 많은 짐을 덜어줍니다.

    진지하게 말하자면, 저는 크론 작업으로 자동화 할 수있는 것으로 표면을 긁어 낸 것 같습니다. 그들은 진정으로 개발자의 가장 친한 친구입니다. CPanel과 같은 사람을 사용하여 서버를 관리하는 경우 크론을 만드는 데 훨씬 더 친숙한 인터페이스를 제공합니다. 분, 시간, 일, 월 등의 드롭 다운 메뉴로 완성하여 크론 라인을 구성합니다.

  5. 7

    나는 이것이 모든 마케터가 사용해야하는 것임을 확실히 알고 있습니다.이 서비스가 너무 "기술적"으로 들리기 때문에이 서비스를 제공 할 수있는 사람이 있습니까?

당신은 어떻게 생각하십니까?

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터 처리 방법 알아보기.