在 initramfs 中使用 perl 重定向系统调用的输出
我有这个与 initramfs 一起运行的 perl 脚本。我遇到了很多我不明白的小问题,这些问题肯定与 shell 有关。我要问的具体问题是:
system("/sbin/e2fsck -f $dev");
system("/sbin/e2fsck -f $dev >/dev/null");
重定向到 /dev/null 失败。最终,我想获取输出:
open IN, "/sbin/e2fsck -f $dev |";
但这也失败了。
答案如下: e2fsck 需要一个终端来进行交互式修复。通过 -y 标志修复了这个问题。谢谢。
I've got this perl script that runs with the initramfs. I've come across a bunch of little problems I don't understand that are surely related to the shell. The particular one I'm asking about is this:
system("/sbin/e2fsck -f $dev");
system("/sbin/e2fsck -f $dev >/dev/null");
The one redirecting to /dev/null fails. Ultimately, I want to be grabbing the output:
open IN, "/sbin/e2fsck -f $dev |";
But this fails too.
Here's the answer:
e2fsck needs a terminal for interactive repair. Passing the -y flag fixed that. Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是因为你的
/bin/sh
真的是/bin/dash
吗?参见 关于 bad-fd-number 的讨论 和 此修复,其中提供了一些使用与dash
兼容的语法的建议。Is it because your
/bin/sh
is really/bin/dash
? C.f. this discussion on bad-fd-number and this fix which has some suggestions for using a syntax compatible withdash
.