17

我正在使用Yii并且必须为 cron 实现一个脚本。我有一个脚本文件,它只调用 Yii 并启动我的 php-script 文件。

到此为止,一切都很好。如果我要更新 php 脚本,Cron 只会继续执行旧脚本。

重新启动 cron 服务、重新启动服务器等都没有帮助。我还卸载了 cron 并再次安装它,但没有任何改变。他仍然执行这个 php 脚本的旧版本。

任何人都知道出了什么问题或我能做些什么来解决这个问题?我正在使用 Ubuntu 12.04。

编辑:

cronjob脚本正在运行:

#!/bin/bash
cd ../www/protected/ ./yiic Cron ProcessPayments

php脚本

class CronCommand extends CConsoleCommand {
public function actionProcessPayments() {
...
}}

这可行,但我对此脚本所做的任何更改都会被 Cron 忽略。现在我在这一点上:他执行两者。我的旧版本和新版本。我从来没有对某事感到如此困惑。

4

3 回答 3

1

假设您在它所在的机器上有 sudo ...

首先检查它是否位于通常的 cron 目录 /etc/cron.*

sudo find /etc/cron* -mount -iname yiic

如果那里什么都没有,那么搜索整个文件系统,否则你将不得不手动搜索很多其他地方,这比运行 find 需要更多时间

sudo find / -mount -iname yiic 

在这两个查找命令中,如果文件名是或曾经是 yiic 以外的任何内容,则执行 yiic* 以便它搜索以 yiic 开头的任何内容

找到副本后,如果还有其他副本,请删除除最新的副本之外的所有副本,甚至是那个副本,然后从版本控制中将脚本重新安装在计算机上。


编辑:

可能比您真正关心的要多,但是 find 命令分解如下:

sudo- 提升特权,因此您可以在任何地方搜索,而不是您的用户可以阅读的地方

find- 查找 thigs 的命令

/- 搜索的起点,可以在任何地方

-mount- 这告诉 find 不要搜索其他文件系统

-iname- 搜索不区分大小写的名称

yiic- 搜索词

于 2015-12-22T17:43:45.297 回答
0

我有一个类似的问题。/etc/cron.d 中的脚本在修改后仍以旧方式执行。我通过向 cron 发送 SIGHUP 解决了这个问题:

sudo pkill -SIGHUP /usr/sbin/cron
于 2018-01-04T00:32:52.147 回答
0

使用该find命令找到脚本的所有副本并删除那些不需要的副本。cron选择要执行的脚本副本后重新启动。我的猜测是脚本的副本可能会挂在目录中(例如config.daily或类似的东西)。

高温高压

于 2015-12-17T19:03:33.560 回答