cron 命令每 12 小时运行一次

发布于 2025-01-07 23:27:02 字数 238 浏览 0 评论 0原文

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

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

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

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

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

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

I need unix cron command to run every 12 hours.

I have 500+ sub blogs in my server.

This is the file i want to run every 12 hours

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

Where * is my subdomain of my blogs.

I need cron command for all blogs.
Is it possible to run all of them with single command?
OR do i have to create command for each blog?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

岁月静好 2025-01-14 23:27:02

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 点和下午 1 点。

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

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

A crontab file has five fields for specifying day , date and time followed by the command to be run at that interval.

*     *     *   *    *        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)

* in the value field above means all legal values as in braces for that column.

You could use 0 1,13 * * * which means for every 1AM and 1PM.

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

where * can be replaced by different domain names.

瑾夏年华 2025-01-14 23:27:02

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

如果您设置 -> * */12 * * * 它将在 12 点每分钟执行一次,并在 24 点再次执行。

I think the right way is -> 1 */12 * * * (actually, any number in the minute position will do the trick.)

If you set -> * */12 * * * it will be executed every minute at 12h and again at 24h.

黑凤梨 2025-01-14 23:27:02

假设您的站点位于 /var/www/sitename 中,并且您已将 php shell 安装在 /usr/bin/php 中,您可以轻松创建一个运行所有这些文件的 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,因此不会发生任何情况。

如果您的目录结构任意深,您可以使用 **

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

Assuming your sites live in /var/www/sitename and you have the php shell installed in /usr/bin/php you can easily create a cron job that runs all those files.

run

crontab -e

and add this line

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

The * here in /var/www/*/somedir is just a wildcart. This means it will catch every directory in your /var/ww folder.

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

As you can see, this returns the testfile.php in each subfolder of temp, namely folder test, test2 and test3.
Emptydir is also a folder, but since it has no testfile.php in it, nothing willhappen with it.

If your directory structure is arbitrarily deep you can use **

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

温柔女人霸气范 2025-01-14 23:27:02

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

Use "*/12" to mean "every 12 hours."

花落人断肠 2025-01-14 23:27:02

您需要某种主脚本(由 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

如果像这样硬编码列表不方便,还有其他方法:
反引号,或读取file_with_all_the_names_in_it

You need some kind of master-script (called by cron), which expands the list of sites, and calls "/usr/bin/php /var/www/*/somedir/index.php", whith the '*' replaced by a list entry. This can be done in a shellscript, a perl or python script, or maybe even a php script. For sh this could be: (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

If it is inconvenient to have the list hardcoded like this, there are other methods:
backticks, or read < file_with_all_the_names_in_it

余厌 2025-01-14 23:27:02

0 */12 * * * 表示“每 12 小时 0 分”。

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

0 */12 * * * means "At minute 0 past every 12th hour."

Check out https://crontab.guru for a nice calculator.

倥絔 2025-01-14 23:27:02

在控制台写入命令

<前><代码>crontab -e

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

添加行

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

关闭

按 ctrl + x

按 y 然后按 Enter
完成:)

检查是否保存

crontab -l

命令

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

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

命令

Write command in console

crontab -e

edit with editor (I like nano)

add line

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

close with

press ctrl + x

press y then press enter
done :)

Check if saved with

crontab -l

command

if you want to test if it will work test just running it manualy with

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

command

纸伞微斜 2025-01-14 23:27:02

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

Use this it will Run after each 12 hour
* */12 * * * php /var/www/"Your domain"/cronfile.php

最笨的告白 2025-01-14 23:27:02

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

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

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

This cron will run the scheduler at every 12 hours.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文