好的,所以这似乎是一个错误配置。基本上,它似乎在寻找 .so 文件,并且在远程机器上找不到任何文件。
因此,让我们看看两条轨迹,从它们分歧的地方开始。不难找到,因为它基本上在失败跟踪的末尾。首先,让我们看一个有效的:
openat(AT_FDCWD, "/usr/local/lib/openbabel/2.3.2", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 5
brk(0x1199000) = 0x1199000
getdents(5, /* 112 entries */, 32768) = 4200
getdents(5, /* 0 entries */, 32768) = 0
close(5) = 0
futex(0x7f7fbacf90b0, FUTEX_WAKE_PRIVATE, 2147483647) = 0
open("/usr/local/lib/openbabel/2.3.2/castepformat.so", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340.\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0644, st_size=521866, ...}) = 0
mmap(NULL, 2126352, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x7f7fba3db000
mprotect(0x7f7fba3e2000, 2093056, PROT_NONE) = 0
mmap(0x7f7fba5e1000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x6000) = 0x7f7fba5e1000
close(5) = 0
mprotect(0x7f7fba5e1000, 4096, PROT_READ) = 0
open("/usr/local/lib/openbabel/2.3.2/xedformat.so", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260'\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0644, st_size=432606, ...}) = 0
mmap(NULL, 2118032, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x7f7fba1d5000
mprotect(0x7f7fba1da000, 2093056, PROT_NONE) = 0
mmap(0x7f7fba3d9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x4000) = 0x7f7fba3d9000
close(5) = 0
mprotect(0x7f7fba3d9000, 4096, PROT_READ) = 0
open("/usr/local/lib/openbabel/2.3.2/PQSformat.so", O_RDONLY|O_CLOEXEC) = 5
它打开目录/usr/local/lib/openbabel/2.3.2
,然后读取其中的所有条目。有 4200 字节的条目。然后它按顺序加载一堆 .so 文件(共享库)。这些大概就是它在/usr/local/lib/openbabel/2.3.2
.
好的,现在让我们看看失败的那个:
open("/tools/cluster/6.2/openbabel/2.3.2/lib/openbabel", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 5
fcntl(5, F_GETFD) = 0x1 (flags FD_CLOEXEC)
brk(0x1dd6000) = 0x1dd6000
getdents(5, /* 3 entries */, 32768) = 80
getdents(5, /* 0 entries */, 32768) = 0
brk(0x1dce000) = 0x1dce000
close(5) = 0
write(2, "Could not find input format for "..., 76Could not find input format for file: files/Compound_014725001_014750000.sdf) = 76
而是打开/tools/cluster/6.2/openbabel/2.3.2/lib/openbabel
。然后它只读取 80 字节的条目,可能是因为该目录是空的或接近空的。然后它立即打印错误消息。
因此,配置似乎指向了错误的目录,或者该目录从未被所有 .so 文件填充。请注意,Compound_014725001_014750000.sdf
在这两种情况下都很好。如果你从我开始引用的地方看上面几行,你可以看到那个打开的系统调用。