1

我想每 X 小时执行一次例行任务的 cronjob。cronjob 基本上执行一个 shell 脚本,该脚本又使用 WGET 命令从远程服务器下载文件。但是,在我运行这个 shell 脚本之前,我希望 cronjob 执行一个 php 脚本,它将检查更新是否可用(浪费 BW 并一遍又一遍地下载相同的文件是没有意义的),如果是,它应该传递shell 脚本的更新 URL,后者又使用 WGET 命令。

cronjobs 是从主机管理面板设置的。没有其他方法可以解决它。作为共享托管服务,我不允许访问 PHP 上可能为我完成任务的其他功能。

这可能吗?我是Linux文盲。我已经在 Fedora 上安装了一些 RPM,但仅此而已。请多多包涵。谢谢!

4

1 回答 1

1

只需传递--timestamping给您的 wget 命令。

或者,如果您更熟悉 PHP 的方式,您可以检查这个问题以获取可用的方法。

使用 curlHEAD请求获取文件的标头并解析出Last-Modified:标头。

要将 php 脚本用作常规命令行可执行文件,请将此作为起点:

#!/bin/env php
<?php
echo "Hello World\n";

保存不带 .php 的文件并将其放在服务器无法提供的位置。

接下来,设置可执行位,以便您可以像执行常规程序一样执行脚本(u+x在以下命令中表示授予 [u]ser e[x]ecute 权限helloworld,并且chmod是 unix 变体用来设置文件权限的命令)

省略以下序列中的 $,因为它代表命令提示符

$ chmod u+x helloworld

现在您可以通过在 bash 提示符中调用它来执行您的命令行脚本:

$ ls
helloworld
$ ./helloworld
Hello World
$

从这里您可以获得可执行脚本的完整路径:

$ readlink -f helloworld
/home/SPI/helloworld

现在您可以使用可执行脚本的路径安装 cronjob。

于 2012-09-06T07:28:18.753 回答