手动或使用cronjob运行脚本的区别

我有一个PHP脚本,我想运行每10分钟,通过数据库logging,并通过MEncoder创build/编辑电影。 我已经build立了cron工作来完成这个任务,但是它不能很好地工作。

我有我的PHP脚本,称之为document.php。 我也有一个bash脚本(document.sh)来调用这个PHP脚本;

#!/bin/bash php document.php 

现在来了怪异的部分:当我手动运行bash脚本一切都很好 – 电影创build或编辑只是我想要他们的方式 – 但是当我让cron作业每隔10分钟运行bash脚本电影已损坏。 虽然他们有一些框架。 我不知道这是怎么发生的。 我已经检查了权限和文件path,一切都很好。 cron作业是否会杀死我的进程? 是否有时间限制(通过文件运行MEncoder大约需要1-2分钟)?

希望有人能提供一个答案 – 这真的让我感到困惑,截止date已经接近。

我运行Ubuntu服务器与最新的更新和从回购最新的MEncoder。

最好的问候,Björn

从cron运行不会拉你的shellconfiguration文件(〜/ .bashrc或〜/ .profile或/ etc / profile)是否有可能影响你的工作定义的环境variables? 在脚本开始处尝试手动获取您的configuration文件。 ( . /path/to/profile

这是cronjobs的一个非常普遍的问题 – 你根本不能假设你的环境variables,path等。我喜欢做的是有一个"set > /tmp/set"的cronjob,所以你可以看到你到底是什么将从cronjob的angular度来看。 这样,您可以比较脚本所做的假设以及需要做出的调整。

我简单的解决scheme是用LYNX调用php文件假设你有一个http服务器运行

l http:// http://127.0.0.1/document.php

不应该有任何时间限制 – 至less默认情况下,不知道这个发行版。 你收到cron邮件吗? 如果没有,redirect标准input/标准输出到一个文件,看看过程说什么。

 your-cmd > filename.txt 2>&1 

正如其他人所说,最可能出现的头号问题是缺less一些环境variables。 如果不是这样,我能想到的另一种可能性是:你确定这项工作只需要1-2分钟吗? 如果大于10(重新生成它的时间间隔),则最终可能会有多次尝试修改相同文件的运行,这可能会导致您提到的一些损坏。

debuggingcron总是很有趣。 首先,检查根系统的电子邮件; 如果cron工作把任何东西放在标准输出上,它应该在那里。 如果没有任何有用的东西出现在那里,你可以通过在你的脚本中join一些debugging输出来显示。