繁体   English   中英

cron 命令每 12 小时运行一次

[英]cron command to run every 12 hours

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

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

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

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

其中 * 是我博客的子域。

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

crontab 文件有五个字段,用于指定 day 、 date 和 time ,后跟要在该时间间隔运行的命令。

*     *     *   *    *        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 */12 * * *实际上,分钟位置的任何数字都可以。

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

假设您的站点位于 /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 文件夹中的每个目录。

例如:

[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,因此不会发生任何事情。

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

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

0 */12 * * *表示“每 12 小时后的第 0 分钟”。

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

在控制台中写入命令

crontab -e

用编辑器编辑(我喜欢 nano)

添加行

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

按 ctrl + x

按 y 然后按 Enter 完成 :)

检查是否保存

crontab -l

命令

如果你想测试它是否可以工作,只需手动运行它

php /home/catalog/public_html/cros/index.php

命令

使用它它会在每 12 小时后运行 * */12 * * * php /var/www/"Your domain"/cronfile.php

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM