文件存在却报错: no such file or directory ,记录下调试过程

2023-11-13 10:01:38 +08:00
 xuelang

前段时间遇见了一个奇怪的问题,在执行二进制文件 protoc 的时候,报错 no such file or directory: ./protoc 。文件明明就在那里,可是一直报这个错,莫不是系统有 bug 了?

这里的二进制文件真实存在,检查权限也是对的,偏偏执行报错。第一次遇见这种问题,一时间都没有啥排查思路,这看起来就是根本不会发生的事。

大家可以先猜猜可能有哪些原因,以及如何验证?


在有 ChatGPT 之前,遇见解决不了的问题,就先去搜索引擎看看,搜索 no such file or directory but file exist ,有不少结果。这里第一个结果 No such file or directory? But the file exists! 比较匹配我的问题,在问题的高赞回答中,上来就给出了结论:可能是因为在不支持 32 位环境的 64 位机器中运行一个 32 位的二进制。具体到我的这个二进制文件,确实是从一个老的机器上拷到 64 位机器执行的。

不过为啥这样就报错?怎么知道是这个原因的? ChatGPT 在排查问题中究竟能发挥多大的作用?

完整内容在文章 ChatGPT 协助分析诡异的 no such file 问题

3365 次点击
所在节点    程序员
28 条回复
sherlockwhite
2023-11-13 15:49:10 +08:00
@julyclyde #17 虚荣心。。真无语,多用用吧
proxytoworld
2023-11-13 15:55:29 +08:00
@julyclyde
贵 GPT 并没有提供超出搜索引擎额外的信息量

GPT 确实没有添加额外的知识量,但可以减小我检索知识的成本...
matepi
2023-11-13 16:28:34 +08:00
我曾经碰到过类似的报错
明明可执行文件存在,权限也正确,但在高级语言环境里面调用执行的时候就报
cannot execute binary file
一搜,都是说什么 32 位、64 位问题

最后看了一堆,突然扫到别人写的/bin/sh -c ,才突然意识到自己错哪里了
为了在非交互式 shell 里面加环境,都加了/bin/sh 等去加载环境、和长命令行处理
然后错就错在/bin/sh -c 写成了/bin/sh -C (受 windows 兼容性 cmd /C ,一不注意写到 linux 的分支里也写了大写的-C )
xuelang
2023-11-13 17:16:49 +08:00
@matepi 你这个确实更加隐蔽,不好排查。
wangybsyuct
2023-11-13 17:30:41 +08:00
根据你和网友的反馈,我是这样认为的。提示 no such file or directory: ./protoc ,你是使用什么工具执行去执行这个 protoc 的,自己的 shell ,或者 crontab ,或者是服务程序,或者是 webserver 里的一个点击,等等,这个很关键,因为你是使用了相对路径点撇./,这样执行一个程序是很省事,但是有隐患的,你使用了相对路径,相对谁呢?你在 shell 里,当然是相对于当前你运行的那个窗口的 shell ,其它的执行环境就不一定了。你在你当前 shell 窗口下执行正确(排除 32 位和 64 位和链接库的问题),那就看可能是执行环境的问题了
julyclyde
2023-11-13 18:04:57 +08:00
@proxytoworld 只给出一个答案,但不一定是正确那个。你看 GPT 的话就断绝了获得更全面知识的可能性了,虽然省了时间
xuelang
2023-11-13 19:11:00 +08:00
@julyclyde 谁说 GPT 只给一个答案了? 另外,用 GPT 学习效率比搜索引擎快很多,获得知识也更全面的
kkk9
2023-11-14 15:33:42 +08:00
看了下后来的评论,没什么好争论的,我在 #1 发表的只是我个人意见。我回复的时候并没有点开链接,不过心里大概猜到了。点开看看,果然和猜测的一样,只不过是尬吹 GPT 在解决问题中的“所谓优势”。

我个人看来,GPT 就和英汉字典一样的,有的人一辈子都离不开它,有的人学习阶段使用,后来就再也不用了。取决于什么人,也取决于怎么用。

既然在 GPT 中提问要提炼问题,整理需求,引导它给出自己需要的答案,在没有 GPT 的时代里,你也是这样和搜索引擎对话的,搜索不理想,换个问法。那显然你并不比 GPT 蠢,你还要去验证方案,甚至可能还要和它掰扯(指正?)某些显而易见的错误。

所以,在排查问题中发挥最大作用的就是你本人,你的大脑。用 GPT 并没有减少搜索成本,也没有增加自己的学习效率,甚至损失了在广阔知识中浏览时了解到其他知识的机会。

> OP 原文:自从有了 ChatGPT ,平时遇到问题,第一反应都是拿来问 ChatGPT 。

真正促进学习的仍然是人类自己,不要让自己的大脑萎缩了。如果有一天你的环境里没有 GPT 了,你还能保持学习吗?就像这个时代还剩下多少人坚持写字练字了?拿起笔手抖啊抖的?

很多事情是方便了,可有些真正的本质也就丢了。

提高自己的能力,推荐一本书籍 How To Ask Questions The Smart Way

https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/991345

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX