我想每隔X小时为一个例行任务执行一个cronjob。 cronjob基本上执行一个shell脚本,该脚本又使用WGET命令从远程服务器下载文件。但是,在我运行这个shell脚本之前,我希望cronjob执行一个php脚本,它将检查更新是否可用(浪费BW并一遍又一遍地下载相同的文件没有意义),如果是,它应该传递shell脚本的更新URL,后者又使用WGET命令。
cronjobs是从主机管理面板设置的。没有别的办法了。作为共享托管服务,我不允许访问PHP上的其他功能,这些功能也可以为我完成任务。
这可能吗?我是Linux的文盲。我已经在Fedora上安装了几个RPM,但这就是它。请多多包涵。谢谢!
答案 0 :(得分:1)
只需将--timestamping
传递给您的wget命令。
或者,如果您更熟悉PHP的方法,可以检查this question是否有可用的方法。
使用curl HEAD
请求获取文件的标头并解析Last-Modified:
标头。
要将php脚本用作常规命令行可执行文件,请将此作为起点:
#!/bin/env php
<?php
echo "Hello World\n";
保存没有.php的文件,并将其放在服务器无法提供服务的地方。
接下来,设置可执行位,以便您可以像常规程序一样执行脚本
(u+x
在以下命令中表示为helloworld
授予[u] ser e [x] ecute权限,而chmod
是unix变体用于设置文件权限的命令)
按以下顺序省略$,因为它代表命令提示符
$ chmod u+x helloworld
现在您可以通过在bash提示符中调用它来执行命令行脚本:
$ ls
helloworld
$ ./helloworld
Hello World
$
从这里,您可以获得可执行脚本的完整路径:
$ readlink -f helloworld
/home/SPI/helloworld
现在您可以使用可执行脚本的路径安装cronjob。