如何解决嵌入式 Linux:当 stdout 定向到文件或 FIFO 时没有日期输出
我正在尝试将日期传递到文件中,例如:
/pwd # date > file.txt
但是每次我检查文件时,那里都没有打印任何内容。我也尝试过其他变体,例如:
/pwd # echo "$(date)" > file.txt
/pwd # echo "$(/bin/date)" > /full/path/file.txt
/pwd # echo "$(/bin/date)" >> /full/path/file.txt
(我不希望附加会有所作为,但还是尝试了)
我想可能是 date
能够访问文件的某种权限问题,所以,为了踢球,我尝试了:
/pwd # sudo date > /full/path/file.txt
尝试将日期存储到 bash 变量也是徒劳的。但是,果然,date
命令本身继续工作:
Mon Apr 5 14:16:26 UTC 2021
有人知道会发生什么吗?根据我读过的所有其他帖子,我正在尝试的事情应该有效。
请注意,这是一个特殊的(专有)内核 (uname -a
):
不过它是建立在 Debian 上的,所以我希望它能正常工作。
编辑:
type date
:
date is a tracked alias for /bin/date
除了我在运行命令时看到的跟踪之外,在命令前加上 set -x
没有什么有趣的事情发生:
strace
看起来有一些不错的信息,但我不会假装知道如何解释它:
解决方法
这是一个不寻常的情况——从strace的结果来看,它看起来像是一个libc错误或一个busybox问题。由于这是一个已有十年历史的软件堆栈,因此您没有在 4.3 中添加最近引入的日期格式 printf
内置 bash。
最简单的解决方法是根本不使用 busybox date 命令,而是切换到脚本语言——Python、Perl 等。@jhnc 非常友好地为此提供了一个 perl 命令:
perl -e '$|=1; print scalar localtime,"\n"' > file.txt
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。