【问题标题】:crontab not running php scriptcrontab 没有运行 php 脚本
【发布时间】:2016-03-17 14:58:36
【问题描述】:

crontab 曾一度正常运行,但在运行一天后,它删除了 /var/spool/cron/crontabs 中的文件

# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.DYqvRY/crontab installed on Thu Mar 17 14:50:32 2016)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
# Edit this file to introduce tasks to be run by cron.
# 
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
# 
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').# 
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
# 
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
# 
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# 
# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command

0 0 1 * *  /var/www/html/mail.php

0 0 16 * *  /var/www/html/mail.php

0 13 2 * * /var/www/html/mailcheck.php

0 13 17 * * /var/www/html/mailcheck.php

0 13 2 * * /var/www/html/mailcheckadmin.php

0 13 17 * * /var/www/html/mailcheckadmin.php

0 0 1 * *  /var/www/html/PaymentPeriod_Create.php

0 0 16 * *  /var/www/html/PaymentPeriod_Create.php

* * * * * /var/www/html/testsession.php  > /var/www/html/log

我正在使用# crontab -e 编辑此文件,然后当我完成后按^X Y ENTER 有没有我遗漏的额外步骤* * * * * /var/www/html/testsession.php > /var/www/html/log 这应该每分钟运行一次吗?

【问题讨论】:

  • 每分钟运行一次:*/1 * * * * /var/www/html/testsession.php > /var/www/html/log
  • @Daan 我改变了那行,但脚本仍然没有运行
  • @Daan 为什么是*/1 * * * * 而不是* * * * *?它们是等价的吗?我总是使用* * * * * 每分钟运行一些东西

标签: php debian crontab


【解决方案1】:

语法* * * * * /var/www/html/testsession.php > /var/www/html/log 有效。

很可能因为它是 crontab 中的最后一行,所以它缺少换行符。 Cron 在每个条目的末尾都需要一个换行符;换句话说,您的 crontab 必须以空行结束。

来自man crontab 的“诊断”部分:

cron 要求 crontab 中的每个条目都以换行符结尾。如果 crontab 中的最后一个条目缺少换行符,cron 将认为 crontab(至少部分)损坏并拒绝安装它。

您可能希望将> 替换为>>,以便将新内容附加到日志文件中,而不是每分钟覆盖一次,即* * * * * /var/www/html/testsession.php >> /var/www/html/log。如果日志文件不存在,这仍会创建日志文件。

您的 PHP 文件还需要设置执行位,并且需要在第一行以 #!/usr/bin/php(或系统上 PHP 的路径)开头。或者,您可以将 cron 行替换为 * * * * * /usr/bin/php /var/www/html/testsession.php >> /var/www/html/log 以显式使用 PHP 解释器来执行脚本。

【讨论】:

    猜你喜欢
    • 2013-04-07
    • 1970-01-01
    • 2013-12-20
    • 2012-10-28
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    相关资源
    最近更新 更多