Подтвердить что ты не робот

Команда cron запускается каждые 12 часов

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

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

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

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

Где * мой субдомен моих блогов.

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

4b9b3361

Ответ 1

В файле 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 * * *, что означает для каждого 1AM и 1PM.

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

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

Ответ 2

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

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

Ответ 3

Предполагая, что ваши сайты живут в /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 - это просто wildcart. Это означает, что он поймает каждый каталог в папке /var/ww.

f.ex:

[[email protected] ~]$ 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

[[email protected] ~]$ ls temp/*/testfile.php 
temp/test2/testfile.php  temp/test3/testfile.php  temp/test/testfile.php

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

Ответ 4

Вам нужен какой-то мастер- script (называемый cron), который расширяет список сайтов и вызывает "/usr/bin/php/var/www/*/somedir/index.php", whith '*' заменен на запись списка. Это можно сделать в shellscript, perl или python script или, возможно, даже в PHP скрипт. Для sh это может быть: (untested)

#!/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

Ответ 5

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

Ответ 6

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

Ответ 7

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

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