Embedded Linux: 当 stdout 指向文件或 FIFO 时从日期开始没有输出
Embedded Linux: No output from date when stdout directed to file or 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
有人知道会发生什么吗?根据我读过的所有其他 post,我正在尝试的东西应该有效。
注意这是一个特殊的(专有)内核 (uname -a
):
不过它是基于 Debian 构建的,所以我希望它能正常工作。
编辑:
type date
:
date is a tracked alias for /bin/date
除了我在 运行 命令时看到的跟踪之外,在命令前加上 set -x
没有任何有趣的事情发生:
strace
看起来有一些很好的信息,但我不会假装知道如何解释它:
编辑 2:
这是一种不寻常的情况 -- 从 strace 结果来看,它看起来像是 libc 错误或 busybox 问题。由于这是一个已有十年历史的软件堆栈,因此您没有在 4.3 中添加的最近引入的日期格式 printf
内置 bash。
最简单的解决方法是根本不使用 busybox date 命令,而是改用脚本语言 -- Python、Perl 等。@jhnc 非常友好地提供了一个用于目的的 perl 命令:
perl -e '$|=1; print scalar localtime, "\n"' > file.txt
我正在尝试将日期传递到文件中,例如:
/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
有人知道会发生什么吗?根据我读过的所有其他 post,我正在尝试的东西应该有效。
注意这是一个特殊的(专有)内核 (uname -a
):
不过它是基于 Debian 构建的,所以我希望它能正常工作。
编辑:
type date
:
date is a tracked alias for /bin/date
除了我在 运行 命令时看到的跟踪之外,在命令前加上 set -x
没有任何有趣的事情发生:
strace
看起来有一些很好的信息,但我不会假装知道如何解释它:
编辑 2:
这是一种不寻常的情况 -- 从 strace 结果来看,它看起来像是 libc 错误或 busybox 问题。由于这是一个已有十年历史的软件堆栈,因此您没有在 4.3 中添加的最近引入的日期格式 printf
内置 bash。
最简单的解决方法是根本不使用 busybox date 命令,而是改用脚本语言 -- Python、Perl 等。@jhnc 非常友好地提供了一个用于目的的 perl 命令:
perl -e '$|=1; print scalar localtime, "\n"' > file.txt