X분마다 cronjob을 실행하는 방법
cronjob에서 PHP 스크립트를 실행하고 있으며 5분마다 이메일을 보내고 싶다.
현재(crontab) cronjob:
10 * * * * /usr/bin/php /mydomain.in/cromail.php > /dev/null 2>&1
cronmail.php는 다음과 같습니다.
<?php
$from = 'D'; // sender
$subject = 'S';
$message = 'M';
$message = wordwrap($message, 70);
mail("myemail@gmail.com", $subject, $message, "From: $from\n");
?>
하지만 이 설정으로 30분 동안 이메일을 받지 못했습니다.
에crontab
파일, 필드는 다음과 같습니다.
- 1분간의 분요.
- 하루 중 시간
- 요일
- 일 년 중 한 달
- 요일
그래서:
10 * * * * blah
실행 수단blah
매시간 10분마다.
5분마다 다음 중 하나를 사용합니다.
*/5 * * * * blah
매 분마다를 의미하지만 매 5분마다를 의미하거나,
0,5,10,15,20,25,30,35,40,45,50,55 * * * * blah
노인을 위해cron
를 이해하지 못하는 실행 파일*/x
표기법
그 후에도 동작하지 않는 것 같으면 다음과 같이 명령어를 변경합니다.
date >>/tmp/debug_cron_pax.txt
파일을 감시하고 5분마다 뭔가를 쓰고 있는지 확인합니다.그렇다면 PHP 스크립트에 문제가 있는 것입니다.그렇지 않은 경우, 고객님의 시스템에 문제가 있습니다.cron
데몬
CRON은 다음과 같습니다.
*/5 * * * *
CronWTF는 CRON 설정을 테스트해야 할 때 매우 유용합니다.
출력을 로그 파일에 파이프로 연결하여 스크립트에 오류가 발생하는지 여부를 확인하는 것이 좋습니다. 터미널에 오류가 표시되지 않기 때문입니다.
또한 PHP 파일 상단에 있는 shebang을 사용하여 시스템이 PHP를 찾을 수 있도록 하십시오.예를 들어 다음과 같습니다.
#!/usr/bin/php
그렇게 말하면 모든 것을 이렇게 부를 수 있다.
*/5 * * * * php /path/to/script.php > /path/to/logfile.log
cron을 실행하는 간격n
분 단위. 의 값에 따라 몇 가지 가능한 옵션이 있습니다.n
.
n
60(1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30)을 나눕니다.
여기에서는, 이 솔루션을 간단하게 사용할 수 있습니다./
표기법:
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed
m-59/n * * * * command
위의 경우,n
값을 나타냅니다.n
그리고.m
보다 작은 값을 나타냅니다.n
또는*
그러면 명령어가 회의록에 실행됩니다.m,m+n,m+2n,...
n
60은 나누지 않는다
한다면n
는 60을 분할하지 않습니다.cron에서는 깔끔하게 할 수 없지만 가능합니다.이를 수행하려면 테스트에서 시간을 확인하는 cron에 테스트를 넣어야 합니다.이것은 UNIX 타임스탬프를 참조할 때 가장 적합합니다.이 타임 스탬프는, 다음의 경과 후의 합계 초수입니다.1970-01-01 00:00:00 UTC
Marty McFly가 Riverdale에 도착했을 때 명령어를 처음 실행한 후 매번 반복한다고 가정해 봅시다.n
몇 분 후에.
% date -d '2015-10-21 07:28:00' +%s
1445412480
cronjob을 실행하는 간격42
이후 과 같이 '2015-10-21 07:28:00' > crontab을 사용하다.
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed
* * * * * minutetestcmd "2015-10-21 07:28:00" 42 && command
minutetestcmd
로 정의되다
#!/usr/bin/env bash
starttime=$(date -d "$1" "+%s")
# return UTC time
now=$(date "+%s")
# get the amount of minutes (using integer division to avoid lag)
minutes=$(( (now - starttime) / 60 ))
# set the modulo
modulo=$2
# do the test
(( now >= starttime )) && (( minutes % modulo == 0 ))
비고: UNIX 시간은 윤초의 영향을 받지 않습니다.
cron
미만의 정확도는 .
.cron은 마다 실행됩니다.
「 」로 every 5 mins
로로 로 */5 * * * * /usr/bin/php /mydomain.in/cronmail.php > /dev/null 2>&1
cronjob이 동작하고 있는지 확인하기 위한 2단계:
- cronjob을 실행하는 사용자와 함께 서버에 로그인합니다.
수동으로 php 명령 실행:
/usr/bin/http/mydomain.in/cromail.php
그리고 에러가 표시되는지 확인합니다.
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
x분으로 설정하려면 첫 번째 인수에 x분을 설정하고 다음으로 스크립트의 경로를 설정해야 합니다.
15분 동안
*/15 * * * * /usr/bin/php /mydomain.in/cromail.php > /dev/null 2>&1
언급URL : https://stackoverflow.com/questions/25740573/how-to-run-a-cronjob-every-x-minutes
'source' 카테고리의 다른 글
PHP: bool vs boolean type 힌트 (0) | 2022.10.13 |
---|---|
React js onClick은 메서드에 값을 전달할 수 없습니다. (0) | 2022.10.13 |
연결 없이 자바스크립트에서 변수를 문자열로 보간하려면 어떻게 해야 합니까? (0) | 2022.10.13 |
필드 'id'에 기본값이 없습니다. (0) | 2022.10.13 |
레이아웃을 만들고 표시할 때 뷰에 포커스를 설정하는 방법은 무엇입니까? (0) | 2022.10.13 |