Команда cron запускается каждые 12 часов
Мне нужна команда unix cron для запуска каждые 12 часов.
У меня есть 500+ суб-блогов на моем сервере.
Это файл, который я хочу запускать каждые 12 часов
http://*.mysite.com/somedir/index.php
Где * мой субдомен моих блогов.
Мне нужна команда cron для всех блогов.
Можно ли запустить все из них с помощью одной команды?
ИЛИ мне нужно создать команду для каждого блога?
Ответы
Ответ 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 часов.