繁体   English   中英

带有python脚本“退出代码:127(找不到命令)”的Laravel任务计划

[英]Laravel Task schedule with python script “Exit Code: 127(Command not found)”

我使用的是laravel 5.8,我创建了一个控制台命令来调用python脚本(python模块为PyVantagePro );

如果我在控制台中运行该命令,则该命令运行正常,但是将crontab设置为自动运行脚本时,出现错误“退出代码:127(未找到命令)”

完整的错误日志:

Symfony\Component\Process\Exception\ProcessFailedException: The command "pyvantagepro getarchives tcp:5.175.66.169:9002 --start "2019-05-19 07:00" --output /var/www/laravel/storage/stations_data/update_archive_6.csv" failed.

Exit Code: 127(Command not found)

Working directory: /var/www/laravel

Output:
================


Error Output:
================
sh: 1: pyvantagepro: not found
 in /var/www/laravel/app/Console/Commands/getReadings.php:78
Stack trace:
#0 [internal function]: App\Console\Commands\getReadings->handle()
#1 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(32): call_user_func_array(Array, Array)
#2 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(90): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#3 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(34): Illuminate\Container\BoundMethod::callBoundMethod(Object(Illuminate\Foundation\Application), Array, Object(Closure))
#4 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Container/Container.php(576): Illuminate\Container\BoundMethod::call(Object(Illuminate\Foundation\Application), Array, Array, NULL)
#5 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Console/Command.php(183): Illuminate\Container\Container->call(Array)
#6 /var/www/laravel/vendor/symfony/console/Command/Command.php(255): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#7 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Console/Command.php(170): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Illuminate\Console\OutputStyle))
#8 /var/www/laravel/vendor/symfony/console/Application.php(908): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#9 /var/www/laravel/vendor/symfony/console/Application.php(269): Symfony\Component\Console\Application->doRunCommand(Object(App\Console\Commands\getReadings), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#10 /var/www/laravel/vendor/symfony/console/Application.php(145): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#11 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Console/Application.php(90): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#12 /var/www/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(133): Illuminate\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#13 /var/www/laravel/artisan(37): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#14 {main}

您的问题与PHP或Python都不相关,但是“罪魁祸首”可能是$PATH环境变量,无论cron run还是cron用户(如果不同)都不同。 常见的解决方法是设置要执行的二进制文件的完整路径(因此,要代替foo而是调用/usr/bin/foo ),或确保cron使用的$PATH设置了期望值,并指向所有位置您要搜索被调用的二进制文件。 只需添加以下内容,就可以在每个crontab中全局完成此操作:

PATH=<value-for-PATH-variable>

在您的crontab文件的顶部。 要确保它与您从命令行运行工具时所具有的值匹配,只需执行

echo $PATH

在shell中时,可以将那里的内容复制到crontab中,或者仅复制与pyvantagepro工具相关的当前失败的这些段(路径)(推荐方法)。

暂无
暂无

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

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