OGS HPC 集群中的 Perl 运行时错误
Posted
技术标签:
【中文标题】OGS HPC 集群中的 Perl 运行时错误【英文标题】:Perl runtime bug in OGS HPC cluster 【发布时间】:2018-12-12 17:51:32 【问题描述】:我正在尝试调试 HPC 集群。
一个问题:通过 Open Grid Scheduler (OGS/GE 2011.11) 将 Perl 脚本提交到数百个节点的 Linux Suse 集群中。
这会为集群中“长队列”上的 Perl 脚本生成运行时错误,但不会在“短队列”上生成运行时错误。
$> qsub -cwd -q short.q ./test.pl
输出没问题
$> qsub -cwd -q long.q ./test.pl
输出错误日志,
/var/spool/sge/comp26/job_scripts/3141815:第 2 行:意外标记附近的语法错误 my'
/var/spool/sge/comp26/job_scripts/3141815: line 2:
open (my $fh, '>', 'test.out');'
如果我将一个 shell 脚本提交到它工作的长队列,包含
perl ./test.pl
有什么想法吗?
系统:GNU bash,版本 4.2.46(2),Perl v5.16.3 (yuk)
测试脚本
#!/usr/bin/perl
# Also tried #!/bin/perl
system("perl -v > perl.out");
open (my $fh, '>', 'test.out');
print $fh 'test';
close $fh;
【问题讨论】:
该错误消息来自 shell,而不是 perl,因此无论出于何种原因,该脚本都不会被视为 perl 脚本 谢谢,我问过它“哪个 perl”,但除此之外我被卡住了。 推荐的 shebang 是#!/usr/bin/env perl
- 请参阅 ***.com/questions/2791954/… 您是否尝试过设置 perl 二进制文件的确切路径?
【参考方案1】:
正如@bytepusher 描述的那样,解决方案是
#!/usr/bin/env perl
并且提交到qsub -cwd -q long.q ./test.pl
很好。
【讨论】:
以上是关于OGS HPC 集群中的 Perl 运行时错误的主要内容,如果未能解决你的问题,请参考以下文章
HPC 集群:选择 SLURM sbatch 中的 CPU 和线程数
R在HPC MPIcluster上运行foreach dopar循环