如何知道Crontab是否正常工作?

时间:2016-03-02 20:55:52

标签: python shell cron crontab

我试图运行一个简单的crontab(在mac OSX终端上)

我的cronjob事情看起来像这样:

* * * * * /Users/tanavya.dimri/Documents/cron.sh

cron.sh:

#!/bin/bash
cd /Users/tanavya.dimri/Documents
python hello.py > empty

hello.py只是

print "Hello"

当我运行sh cron.sh时,它有效。 Empty,这只是一个空文本文件,确实被更改为" Hello"。 但是,我真的不知道它是否正在使用crontab,因为从我删除hello后文件没有改变。

3 个答案:

答案 0 :(得分:0)

删除文件后尝试。如果crontab运行,它应该创建它

有一种方法可以检查您的crontab作业是否成功运行。请注意,cron命令中的日志文件引用是使用完整路径而不是相对路径给出的。您需要确保脚本使用完整路径或cd到正确的工作目录。

Crontab Log: How to Log the Output of My Cron Script

  

我们假设您已将backup.sh添加到您的crontab中,如图所示   下面每天午夜执行。

$ crontab -e 59 23 * * * /home/john/bin/backup.sh
  

要验证此作业是否成功执行,请检查   / var / log / cron文件,其中包含有关所有cron的信息   在您的系统中执行的作业。如您所见   输出,约翰的cron工作成功执行。

$ tail /var/log/cron
Oct  8 22:00:00 dev-db crond[18340]: (root) CMD (/bin/sh /home/root/bin/system_check &)
Oct  8 23:00:00 dev-db crond[20348]: (oracle) CMD (/bin/sh /home/oracle/bin/cleanup.sh &)
Oct  8 23:59:00 dev-db crond[20399]: (john) CMD (/bin/sh /home/john/bin/backup.sh &)
  

Cron日志包含以下信息:

     

时间戳 - 执行cron作业的日期和时间

     

主机名 - 服务器的主机名(例如,dev-db)

     

cron deamon名称和PID。例如,crond [20399]

     

用户名 - 执行此cron作业的用户名。对于   例如,约翰。

     

CMD - 此后的任何内容都是执行的真实命令   那个时候。

     

如果backup.sh中有任何echo语句,您可能需要   将这些记录到文件中。一般来说,如果是backup.sh的cron脚本   抛出任何输出(包括错误),您可能希望将它们记录到a   日志文件。为此,请修改crontab条目并添加输出和   错误重定向如下所示。

$ crontab -e 59 23 * * * /home/john/bin/backup.sh > /home/john/logs/backup.log 2>&1
  

在上面:

     

/home/john/logs/backup.log表示标准输出   backup.sh脚本将被重定向到backup.log文件。

     

2>& 1表示标准错误(2>)被重定向到相同的错误   标准输出(& 1)指向的文件描述符。

     

因此,标准输出和错误都将重定向到   /home/john/logs/backup.log

答案 1 :(得分:0)

首先检查您的cron.sh文件是否具有足够的权限。

<?php
// check if value was posted
if($_POST){



    // get database connection
    $database = new Database();
    $db = $database->getConnection();

    // prepare product object
    $product = new Product($db);

    // set product id to be deleted
    $product->id = $_POST['object_id'];

    // delete the product
    if($product->delete()){
        echo "Object was deleted.";
    }

    // if unable to delete the product
    else{
        echo "Unable to delete object.";

    }
}
?>

然后修改你的crontab以定期运行(即1分钟):

chmod 755 cron.sh

答案 2 :(得分:0)

默认情况下,cronjobs已登录/var/log/syslog

所以你可以简单地gre一下日志CRON并检查你的工作执行情况:

grep CRON /var/log/syslog