我想设置一个cron来将作业从URL复制到服务器。
我使用的cron命令是:
cd /home/username/public_html/bin/sh; /usr/local/php54/bin/php script.php;
script.php文件包含:
rm -f /home/username/public_html/filepath/file.zip; cd /home/username/public_html/filepath/; wget -q -O /dev/null "https://www.domain.com/file.zip"
但它不起作用。
如果文件/home/username/public_html/filepath/file.zip
已经存在,我也想替换它。
非常感谢您的帮助。
-
打开crontab编辑
crontab-e
-
添加行与您的时间表如下(请检查所需的时间表):
*/10***rm-f/home/username/public_html/filepath/file.zip;cd/home/username/public_html/filepath/;wget-q-O/dev/null"https://www.domain.com/file.zip"
cron将每10分钟运行一次,删除file.zip,然后将新的file.zip下载到/home/username/public_html/filepath/。
PHP脚本有两种模式:
- 直接输出到STDOUT(默认值)
- 执行PHP命令(
<?php
和?>
之间会发生什么
您的PHP脚本:
rm -f /home/username/public_html/filepath/file.zip; cd /home/username/public_html/filepath/; wget -q -O /dev/null "https://www.domain.com/file.zip"
相当于shell脚本:
echo 'rm -f /home/username/public_html/filepath/file.zip; cd /home/username/public_html/filepath/; wget -q -O /dev/null "https://www.domain.com/file.zip"'
…因此,除非您查看cron的输出(可能是通过电子邮件发送给您的),否则它没有明显的效果。
这些不是PHP命令,而是shell命令。因此,使用shell而不是PHP来执行脚本。
cd /home/username/public_html/bin/sh; /bin/sh script.php;
…并考虑将其重命名为不那么欺骗性的名称,例如script.sh
。