команда cron запускается каждые 12 часов - PullRequest
41 голосов
/ 22 февраля 2012

Мне нужна команда unix cron для запуска каждые 12 часов.

У меня есть 500+ блогов на моем сервере.

Это файл, который я хочу запускать каждые 12 часов

http://*.mysite.com/somedir/index.php

Где * - мой поддомен моих блогов.

Мне нужна команда cron для всех блогов.Можно ли запустить их все одной командой?ИЛИ мне нужно создать команду для каждого блога?

Ответы [ 8 ]

108 голосов
/ 22 февраля 2012

Файл crontab имеет пять полей для указания дня, даты и времени, за которыми следует команда, которая будет выполняться с этим интервалом.

*     *     *   *    *        command to be executed
-     -     -   -    -
|     |     |   |    |
|     |     |   |    +----- day of week (0 - 6) (Sunday=0)
|     |     |   +------- month (1 - 12)
|     |     +--------- day of        month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)

* в поле значений выше означает все допустимые значения, как вфигурные скобки для этого столбца.

Вы можете использовать 0 1,13 * * *, что означает для каждых 1:00 и 13:00.

0 1,13 * * * rm /var/www/*/somedir/index.php > /home/someuser/cronlogs/some.log 2>&1

, где * можно заменить различными доменными именами.

25 голосов
/ 24 июня 2014

Я думаю, что правильный путь -> 1 */12 * * * ( на самом деле, любое число в минутной позиции добьется цели. )

Если вы установите -> * */12 * * *, он будет выполняться каждую минуту в 12 часов и снова в 24 часа.

9 голосов
/ 22 февраля 2012

Если ваши сайты находятся в / var / www / sitename и у вас установлена ​​оболочка php в / usr / bin / php, вы можете легко создать задание cron, которое запускает все эти файлы.

run

crontab -e

и добавьте эту строку

42 */12 * * * /usr/bin/php /var/www/*/somedir/index.php  >> ~/cronjob.log 2>&1

Здесь * в / var / www / * / somedir - это просто подстановочный знак.Это означает, что он будет перехватывать каждый каталог в вашей папке / var / ww.

f.ex:

[jens@localhost ~]$ ls -l temp
total 28
-rw-rw-r--. 1 jens jens 1641 Feb 21 16:12 somefile.py
drwxrwxr-x. 2 jens jens 4096 Feb 22 15:10 test
drwxrwxr-x. 2 jens jens 4096 Feb 22 15:10 test2
drwxrwxr-x. 2 jens jens 4096 Feb 22 15:10 test3
drwxr-xr-x. 8 jens jens 4096 Jan 27 10:21 emptydir
-rw-rw-r--. 1 jens jens  548 Jan 27 16:15 Unsaved Document 1

[jens@localhost ~]$ ls temp/*/testfile.php 
temp/test2/testfile.php  temp/test3/testfile.php  temp/test/testfile.php

Как вы можете видеть, это возвращает testfile.php в каждой подпапке tempа именно папка test, test2 и test3.Emptydir также является папкой, но, поскольку в нем нет testfile.php, с ним ничего не случится.

6 голосов
/ 24 апреля 2013

Используйте «* / 12» для обозначения «каждые 12 часов».

6 голосов
/ 22 февраля 2012

Вам нужен какой-нибудь мастер-скрипт (называемый cron), который расширяет список сайтов и вызывает «/ usr / bin / php /var/www/*/somedir/index.php», с* 'заменено записью в списке.Это можно сделать с помощью шеллскрипта, скрипта на Perl или Python или, может быть, даже скрипта PHP.Для sh это может быть: (не проверено)

#!/bin/sh
cd /home/subdir/for/cron

LIST="a b c d e f g h i j k l m o p q r s t u v w x y z"

for x in $LIST; do
   /usr/bin/php /var/www/${x}/somedir/index.php 2>$1 > /tmp/${x}.log
done

Если неудобно иметь такой жестко закодированный список, есть другие методы: backticks или read < file_with_all_the_names_in_it

1 голос
/ 26 мая 2018

Запись команды в консоли

crontab -e

редактировать с редактором (мне нравится nano)

добавить строку

0 1,13 * * * php /home/catalog/public_html/crons/index.php

закрыть с

нажмите Ctrl + X

нажмите y, затем нажмите ввод сделано:)

Проверьте, сохранено ли с помощью

crontab -l

Команда

если вы хотите проверить, будет ли он работать, просто запустите его вручную с

php /home/catalog/public_html/crons/index.php

Команда

0 голосов
/ 22 марта 2017

->cron('0 */12 * * *');

Этот cron будет запускать планировщик каждые 12 часов.

0 голосов
/ 10 января 2014

Используйте это, оно будет запускаться через каждые 12 часов * * / 12 * * * php / var / www / "Ваш домен" /cronfile.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...