cron命令每12小时运行一次

时间:2012-02-22 10:56:29

标签: unix cron

我需要unix cron命令每12小时运行一次。

我的服务器中有500多个子博客。

这是我想每12小时运行一次的文件

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

其中*是我博客的子域名。

我需要所有博客的cron命令。 是否可以使用单个命令运行所有这些? 或者我必须为每个博客创建命令吗?

9 个答案:

答案 0 :(得分:106)

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

其中*可以被不同的域名替换。

答案 1 :(得分:23)

我认为正确的方法是 - > 1 */12 * * *实际上,分钟位置的任何数字都可以解决问题。

如果你设置 - > * */12 * * *它将在12小时和24小时每分钟执行一次。

答案 2 :(得分:8)

假设您的网站位于/ var / www / sitename,并且您在/ usr / bin / php中安装了php shell,则可以轻松创建运行所有这些文件的cron作业。

运行

  

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

如您所见,这将返回temp的每个子文件夹中的testfile.php,即文件夹test,test2和test3。 Emptydir也是一个文件夹,但由于它没有testfile.php,所以不会有任何问题。

答案 3 :(得分:6)

你需要某种主脚本(由cron调用),它扩展了网站列表,并调用“/ usr / bin / php /var/www/*/somedir/index.php”,其中包含' *'由列表条目替换。这可以在shellcript,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

如果将列表硬编码为不方便,还有其他方法: backticksread < file_with_all_the_names_in_it

答案 4 :(得分:6)

使用“* / 12”表示“每12小时一次。”

答案 5 :(得分:3)

0 */12 * * *的意思是“每12小时凌晨0点。”

签出https://crontab.guru以获得一个不错的计算器。

答案 6 :(得分:1)

在控制台中编写命令

crontab -e

用编辑器编辑(我喜欢纳米)

添加行

  

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

结束
  

按ctrl + x

按y然后按enter键 完成:))

检查是否用

保存
  

crontab -l <​​/ p>

命令

如果您想测试它是否可以正常运行测试,只需使用

运行它
  

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

命令

答案 7 :(得分:-1)

使用它会在每12小时后运行一次 * * / 12 * * * php / var / www /“您的域名”/cronfile.php

答案 8 :(得分:-2)

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

这个cron将每12小时运行一次调度程序。