繁体   English   中英

Cron 作业神秘地运行和停止?

[英]Cron job runs and stops mysteriously?

我在 ubuntu 上设置了一个 cron 来运行一些 Laravel 计划命令。 它有时运行并在随机时间停止。 上周它整周都没有运行命令,它昨天又开始运行了。 今天早上又停了。 我已经尝试了一切,但似乎没有解决问题。 我错过了什么?

这是cron:

*/15 * * * * ubuntu cd  /var/www/html  && php artisan schedule:run >> /dev/null 2>&1 

这是我的 Kernel.php:

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

    class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        \App\Console\Commands\TrackData::class,
    ];

    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        $schedule->command('data:track')->withoutOverlapping()
            ->everyFifteenMinutes()->appendOutputTo(storage_path().'/logs/laravel_output.log');
        
        $schedule->command('queue:listen')->withoutOverlapping()
         ->everyFifteenMinutes()->appendOutputTo(storage_path().'/logs/laravel_output.log');
         
        $schedule->command('delete:oldxml')->withoutOverlapping()
            ->dailyAt('00:01');

        // $schedule->command('sitemap:generate')
        //                 ->daily();
    }

    /**
     * Register the commands for the application.
     *
     * @return void
     */
    protected function commands()
    {
        $this->load(__DIR__.'/Commands');

        require base_path('routes/console.php');
    }
}

我已经尝试了一切,但似乎没有什么能解决问题。 我错过了什么

您的 crontab 突然停止工作可能是导致此类问题的多种原因。

  1. 它可能与 crontab 用户有关。 要解决此问题,您可以尝试删除 root 和其他用户的所有 crontab。

  2. 您可以将脚本错误捕获到日志文件中,以便更好地进行调查,如下所示。

*/15 * * * * ubuntu cd /var/www/html && php artisan schedule:run >> /tmp/script.log 2>&1

  1. 它可能与 PHP 配置有关。 您的脚本运行时间可能比您的 php.ini 的max_execution_time还长,并检查set_time_limit()

  2. 您可以使用此命令来检查 cron 日志tail -fn 100 /var/log/cron

  3. 它可能由于脚本文件权限和脚本文件的所有权而发生。 所以请确保您对脚本文件给予适当的权限。

chmod +x yourscript.sh chown root:root yourscript.sh

  1. 它可能与操作系统有关。 也许您的网络服务器磁盘已满或操作系统无法生成新线程。

  2. 也许你的脚本已经开始重叠,*/15 * * * * 还不够。 您可以尝试将时间增加到 */30 * * * *

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM