【问题标题】:Perl 5.005_03 does not recognize NFS files existencePerl 5.005_03 无法识别 NFS 文件的存在
【发布时间】:2017-02-22 15:00:06
【问题描述】:

我最近实现了一个新的 NAS 文件管理器,并且在挂载之后 它在 Linux 服务器上,Perl 解释器(版本 5.005_03)无法 识别该挂载上是否存在文件:

[root@server ~]# stat /newmount/testfile 
  File: `/newmount/testfile'
  Size: 0               Blocks: 0          IO Block: 65536  regular empty file
Device: 48h/72d Inode: 9262698097446760736  Links: 1
Access: (0644/-rw-r--r--)  Uid: (  500/ testuser)   Gid: (   500/      testuser)
Access: 2017-02-22 16:44:21.218314000 +0200
Modify: 2017-02-22 16:44:21.218314000 +0200
Change: 2017-02-22 16:44:21.218314000 +0200


[root@server ~]# perl -e 'print "File Exists\n" if -e "/newmount/testfile";'
[root@server ~]#

这里有趣的是:

当我尝试使用更新版本的 解释器(如 perl,v5.8.8)它可以工作:

[root@server ~]# perl -e 'print "File Exists\n" if -e "/newmount/testfile";'                 
File Exists
[root@server ~]# 

我在旧的 Perl 上缺少什么?

提前致谢!

【问题讨论】:

  • 有趣的是 v5.8.8 不被认为是旧的 perl。
  • 它是……而 5.005_03 是古老的 perl。
  • 如果你有更新的 Perl,你为什么要关心?这只是好奇还是您需要它来使用 5.005_03 版本?
  • 1999 年 3 月是该版本的发布日期...如果 Perl 这么旧,那么如果这确实不仅仅是一个测试,那么这个盒子就会落后一些更新。
  • 可以给mount命令吗?在熔断器安装的情况下存在一些问题。您还可以使用 strace 查看两个版本的 perl 中的系统调用。

标签: linux perl nfs netapp


【解决方案1】:

感谢任何试图提供帮助的人,我找到了问题的根本原因。 对于任何面临遗留系统类似问题的人, 检查导出 NFS 挂载的存储是否使用 64 位文件描述符。 就我而言,在存储上切换到 32 位文件描述符解决了这个问题。

【讨论】:

    【解决方案2】:

    我在使用 Perl 时遇到了类似的问题。

    挂载的 nfs 目录的权限为 775,所有权为 0:788

    运行 Perl 的帐户的主 GID 为 402,也是 788 的成员。

    错误信息提示“不存在或不是目录”

    我将活动帐户的主要组更改为 788 并开始工作。

    只是为了防止别人扯掉他们最后剩下的头发而发帖。

    【讨论】:

      猜你喜欢
      • 2012-12-11
      • 1970-01-01
      • 1970-01-01
      • 2018-02-15
      • 1970-01-01
      • 2021-11-01
      • 1970-01-01
      • 2021-01-13
      • 2013-06-12
      相关资源
      最近更新 更多