首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Perl脚本从crontab失败,但没有命令行。

Perl脚本从crontab失败,但没有命令行。
EN

Stack Overflow用户
提问于 2021-10-25 17:20:29
回答 1查看 159关注 0票数 2

我有一个perl脚本,用于连接到。它使用DBI模块。

由于某些原因,我可以从命令行执行脚本,并且运行良好,但是当我将它放入Crontab时,它会失败,出现以下错误:

在/usr/lib64 64/perl5 5/DynaLoader.pm第213行,

DBI对象版本1.627与引导参数1.643不匹配。开始失败-编译中止在/usr/local/ line 64/perl5 5/dbI.pm第284行。编译失败,在require at /app/www/tools/GoSet/art_db_sert.pl第5行。开始失败--在/app/www/tools/GoSet/art_db_sert.pl第5行处终止编译。

我已经验证了我的“哪个perl”与脚本中的shebang行相匹配。我还验证了如果我这样做'perldoc -m DBI‘,它将显示版本1.643。我不知道它是从哪里获得版本1.627的,也不知道为什么它是从命令行获得的,而不是crontab。

我在crontab中有其他运行良好的perl脚本,但这是唯一存在错误的脚本(也是唯一使用DBI的脚本)。

有什么想法吗?

crontab行:

代码语言:javascript
运行
复制
19 6-17 * * 1-5 cd /app/www/tools/GoSet&& perl /app/www/tools/GoSet/art_db_insert.pl > /app/www/tools/GoSet/artcron.log 2>&1 
代码语言:javascript
运行
复制
$ perl -M5.010 -e'
   say "INC:"; say "  $_" for @INC;
   say "ENV:"; say "  $_: $ENV{$_}" for sort grep /^PERL/, keys %ENV;
'
INC:
  /usr/local/lib64/perl5
  /usr/local/share/perl5
  /usr/lib64/perl5/vendor_perl
  /usr/share/perl5/vendor_perl
  /usr/lib64/perl5
  /usr/share/perl5
  .
ENV:
EN

回答 1

Stack Overflow用户

发布于 2022-10-28 23:05:20

当您运行perl path/to/yourscript.pl时,会忽略shebang行。要让解释器在shebang行中定义脚本运行,必须使脚本成为可执行文件(chmod +x),然后以./yourscript.plpath/to/yourscript.pl的形式调用它。

当文件作为位置参数传递给二进制文件时,简单地将shebang行解析为常规注释,没有任何效果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69712283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档