我最近安装了一个Debian Jessie amd64
无头服务器(使用其中一个网络安装)。服务器已启动并运行,系统按预期工作。
但后来我编译了一个.cgi
(用 C++ 编写的)。编译(使用g++ 4.9.2
)进行得很顺利,但当我尝试从中执行文件时,bash
它显示No such file or directory
。
当我阅读有关此错误的其他帖子时,我尝试使用file
,ldd
甚至cat
命令,但所有帖子都说他们找不到该文件。按预期
ls -l
显示具有权限的文件。 但 bash-completion 什么也不做,它不会自动完成路径。755
但现在变得有趣了:
使用midnight commander
我可以成功读取、编辑和执行二进制文件并apache
列出完整的目录索引,包括.cgi
甚至允许我下载它。
发生了什么事?
由于我可以从中执行它,因此mc
我认为这与可执行文件本身无关。bash
可能已损坏吗?
在此先感谢您的任何见解!
答案1
您可以在目录中搜索该文件并将所有文件名转换为十六进制,如下所示:
find . -exec sh -c 'echo -n "$1" | xxd' _ {} \;
它打印(例如):
0000000: 2e2f 696e 6465 782e 6367 69 ./index.cgi
0000000: 2e2f 696e 6465 782e 6367 690a ./index.cgi.
第二行index.cgi
末尾有一个换行符 ( 0a
)。您可以查看文件的名称,并将其与示例输出中的第一行进行比较。如果一切正确,文件名应该与第一行完全一样。
答案2
使用updatedb
命令。这将更新您的目录数据库。请参阅参考资料了解更多信息updatedb 文档