Использование crontab для выполнения скрипта каждую минуту, а другой каждые 24 часа [закрыто]


316

Мне нужен синтаксис crontab, который должен выполнять определенный скрипт PHP /var/www/html/a.phpкаждую минуту. Исполнение в каждую минуту должно начинаться в 00:00. Другая задача, которая должна выполнять скрипт в 00:00 /var/www/html/reset.php(один раз каждые 24 часа).

Ответы:


586

каждую минуту:

* * * * * /path/to/php /var/www/html/a.php

каждые 24 часа (каждую полночь):

0 0 * * * /path/to/php /var/www/html/reset.php

Посмотрите эту ссылку, чтобы узнать, как работает crontab: http://adminschoice.com/crontab-quick-reference , и этот удобный инструмент для создания cron jobx: http://www.htmlbasix.com/crontab.shtml.


3
Уважаемый Ян! Отличный ответ. Как насчет запуска cron каждые 30 секунд? Это так? * * * * * / 30 / path / to / php /var/www/html/a.php?
flaab

26
К сожалению, вы не можете запускать задания cron чаще, чем каждую минуту. Вам придется использовать что-то еще для этого.
Ян Ханчич

9
Ян Ханчич, ты можешь сделать это. Вам просто нужно использовать простой трюк, описанный здесь: stackoverflow.com/a/1034304/1580615
Рубен

Является ли нормальной практикой выполнение скрипта .php каждую минуту с помощью cron? Может ли это снизить производительность сервера? Есть ли другие плохие побочные эффекты?
Андрей

@flaab каждые 30 секунд вы можете попробовать что-то вроде этого: - * * * * * curl - бесшумный URL> / dev / null 2> & 1 * * * * * sleep 30; curl --silent URL> / dev / null 2> & 1
Шашанк Шах,

375

Это формат / etc / crontab:

# .---------------- 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

Я рекомендую скопировать и вставить это в верхнюю часть вашего файла crontab, чтобы у вас всегда была под рукой ссылка. Системы RedHat настроены таким образом по умолчанию.

Чтобы запустить что-то каждую минуту:

* * * * * username /var/www/html/a.php

Чтобы запустить что-то в полночь каждого дня:

0 0 * * * username /var/www/html/reset.php

Вы можете включить / usr / bin / php в команду для запуска или сделать сценарии php непосредственно исполняемыми:

chmod +x file.php

Начните свой php-файл с шебанга, чтобы ваша оболочка знала, какой интерпретатор использовать:

#!/usr/bin/php
<?php
// your code here

42
Это формат /etc/crontab, который является системным файлом crontab. Пользователь кронтаб имеет другой формат, который не включает в себя поле имени пользователя, поскольку она работает как пользователь , который представил его. Если вы хотите запустить задание cron как пользователь без полномочий root, вы должны использовать crontabкоманду для его отправки (и не беспокоиться о том, где хранится crontab). Не связывайтесь, /etc/crontabесли вам действительно не нужно.
Кит Томпсон,

ммм ... нет, все еще не работает
Мадео
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.