如何设置 cron 来调用 php 脚本 - bash: */5: 没有用于设置 cron 作业的文件或目录

如何设置 cron 来调用 php 脚本 - bash: */5: 没有用于设置 cron 作业的文件或目录

我们正在尝试为在 ubuntu 服务器中运行的 magento 网站设置 cron

我们正在尝试以下命令:

*/5 * * * * php -f /var/www/html/sitename/cron.php

但我们收到以下错误:

-bash: */5: No such file or directory

更新 1

在此处输入图片描述

更新 2 - 错误

PHP Warning:  require(app/bootstrap.php): failed to open stream: No such file or directory in /var/www/html/sitename/cron.php on line 30

PHP Fatal error:  require(): Failed opening required 'app/bootstrap.php' (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/html/sitename/cron.php on line 30

cron.php

<?php


// Change current directory to the directory of current script
chdir(dirname(__FILE__));

require 'app/bootstrap.php';
require 'app/Mage.php';

if (!Mage::isInstalled()) {
    echo "Application is not installed yet, please complete install wizard first.";
    exit;
}

// Only for urls
// Don't remove this
$_SERVER['SCRIPT_NAME'] = str_replace(basename(__FILE__), 'index.php', $_SERVER['SCRIPT_NAME']);
$_SERVER['SCRIPT_FILENAME'] = str_replace(basename(__FILE__), 'index.php', $_SERVER['SCRIPT_FILENAME']);

Mage::app('admin')->setUseSessionInUrl(false);

umask(0);

$disabledFuncs = explode(',', ini_get('disable_functions'));
$isShellDisabled = is_array($disabledFuncs) ? in_array('shell_exec', $disabledFuncs) : true;
$isShellDisabled = (stripos(PHP_OS, 'win') === false) ? $isShellDisabled : true;
$isShellDisabled = true;

try {
    if (stripos(PHP_OS, 'win') === false) {
        $options = getopt('m::');
        if (isset($options['m'])) {
            if ($options['m'] == 'always') {
                $cronMode = 'always';
            } elseif ($options['m'] == 'default') {
                $cronMode = 'default';
            } else {
                Mage::throwException('Unrecognized cron mode was defined');
            }
        } else if (!$isShellDisabled) {
            $fileName = basename(__FILE__);
            $baseDir = dirname(__FILE__);
            shell_exec("/bin/sh $baseDir/cron.sh $fileName -mdefault 1 > /dev/null 2>&1 &");
            shell_exec("/bin/sh $baseDir/cron.sh $fileName -malways 1 > /dev/null 2>&1 &");
            exit;
        }
    }

    Mage::getConfig()->init()->loadEventObservers('crontab');
    Mage::app()->addEventArea('crontab');
    if ($isShellDisabled) {
        Mage::dispatchEvent('always');
        Mage::dispatchEvent('default');
    } else {
        Mage::dispatchEvent($cronMode);
    }
} catch (Exception $e) {
    Mage::printException($e);
    exit(1);
}

答案1

关于 cron

引用维基百科这里

软件实用程序 Cron 是类 Unix 计算机操作系统中基于时间的作业调度程序。设置和维护软件环境的人员使用 cron 来安排作业(命令或 shell 脚本)在固定时间、日期或间隔定期运行。它通常用于自动执行系统维护或管理。

请检查此链接有关 cron 的更多信息

查看 crontab

输出/查看当前用户的 crontab

crontab -l

要查看其他用户的 crontab,你需要 sudo 权限

sudo crontab -l -u nameOfOtherUser

编辑 crontab

编辑用户 crontab

crontab -e

或者为其他用户通过

sudo crontab -e -u nameOfOtherUser

你的 cron 是什么样子的

使用 php 完整路径的可能的 cron 行

*/5 * * * * /usr/bin/php  -q /var/www/html/sitename/cron.php

或者出于 @Brian 提到的调试目的

*/5 * * * * /usr/bin/php  -q /var/www/html/sitename/cron.php > /var/www/html/sitename/cron-temp.log 2>&1

这会写入一个cron-temp.log名为/var/www/html/sitename/

关于参数

-q = 安静模式

你的待办事项

  • 编辑你的 cron 并添加新行,定义应该多久调用一次哪个脚本
  • 如果您使用此选项,请等到间隔触发并检查日志文件

答案2

您在终端中输入此内容吗?这是一个 cronjob 定义,而不是命令。此行必须放在 /etc/crontab 中。用户也丢失了...

我认为您是从其他网站复制的,但并没有真正理解其工作原理。如果是,请阅读一些有关 cron 的文档...

相关内容