[英]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 突然停止工作可能是导致此类问题的多种原因。
它可能与 crontab 用户有关。 要解决此问题,您可以尝试删除 root 和其他用户的所有 crontab。
您可以将脚本错误捕获到日志文件中,以便更好地进行调查,如下所示。
*/15 * * * * ubuntu cd /var/www/html && php artisan schedule:run >> /tmp/script.log 2>&1
它可能与 PHP 配置有关。 您的脚本运行时间可能比您的 php.ini 的max_execution_time还长,并检查set_time_limit()
您可以使用此命令来检查 cron 日志tail -fn 100 /var/log/cron
它可能由于脚本文件权限和脚本文件的所有权而发生。 所以请确保您对脚本文件给予适当的权限。
chmod +x yourscript.sh chown root:root yourscript.sh
它可能与操作系统有关。 也许您的网络服务器磁盘已满或操作系统无法生成新线程。
也许你的脚本已经开始重叠,*/15 * * * * 还不够。 您可以尝试将时间增加到 */30 * * * *
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.