1

我最近实现了一个新的 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 上缺少什么?

提前致谢!

4

2 回答 2

0

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

于 2017-02-26T17:00:00.447 回答
0

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

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

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

错误消息指示“不存在或不是目录”

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

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

于 2018-04-22T17:00:06.437 回答