我正在运行Ubuntu 16.04操作系统和LAMPP。我想安排一个cron作业每分钟运行一次,并执行一个PHP脚本。所以这就是我所做的:
已打开终端并输入crontab -e
它在VIM中打开了CronTab文件,我按ESC进入INSERT模式,然后编写了以下命令:
* * * * * /opt/lampp/htdocs/Tests/16RunAPHPScriptInCronTab/index.php
然后我按:wq
保存并退出。在终端获得installing new crontab
通知。
现在我的实际脚本应该检查LAMPP本地服务器中的目录是否存在.pdf
或.docx
文件,如果存在,那么它应该做一些进一步的工作,但是从开始那,我需要检查cron作业是否实际每分钟都在运行。所以我做的是让我的脚本做到这一点:
如果目录中存在扩展名为.pdf
pr docx
的文件,则会将其删除。 这样我就会知道cron作业是否已经运行。
但这似乎不起作用。 .pdf
文件非常多,并且不会被删除。那么我怎么知道我的cron作业是否正常运行?
我学会这样做的来源是this,this,this和this。
<?php
$pdfFileName = 'dumps/*.pdf';
$docxFileName = 'dumps/*.docx';
if ( (count(glob($pdfFileName)) > 0) || (count(glob($docxFileName)) > 0) ) {
/***********************************************/
/*************** if the file exists ************/
/***********************************************/
if (file_exists($pdfFileName)) {
unlink($pdfFileName);
}
if (file_exists($docxFileName)) {
unlink($docxFileName);
}
} else {
echo "File does not exist.";
}
?>
答案 0 :(得分:1)
* * * * * php /opt/lampp/htdocs/Tests/16RunAPHPScriptInCronTab/index.php
答案 1 :(得分:1)
以下 crontab 条目:
* * * * * /opt/lampp/htdocs/Tests/16RunAPHPScriptInCronTab/index.php
表示每分钟运行/opt/lampp/htdocs/Tests/16RunAPHPScriptInCronTab/index.php
命令就像在终端中输入此字符串并按 Enter 一样。如果至少满足下列条件之一,则该命令将失败:
因此,您应该确保该脚本对于运行 crontab 的用户是可执行的,并且该文件包含shebang,例如:
#!/usr/bin/php
或者,通过显式调用php
可执行文件来运行脚本:
* * * * * php /opt/lampp/htdocs/Tests/16RunAPHPScriptInCronTab/index.php
如果php
中没有PATH
,请指定php
的完整路径,或添加PATH
环境变量的相应路径。最流行的实现允许通过 crontab 设置PATH
,例如:
PATH=/bin:/sbin:/usr/sbin:/usr/bin:/opt/bin:/usr/local/bin
(在带有命令的条目之前。)