以下命令(在 Ubuntu 20.04 和 22.04 上):
dd if=/dev/urandom count=800000 bs=1 | od -An -t f4 -w4 | sponge | sort -g
可以无限期挂起,GNU 排序命令占用 100% 的 CPU。我不明白是什么原因造成的。但是,只有当要排序的文件是从 stdin 输入时才会发生
答案1
这显然是一个错误。
这是由于“nan”出现在一个明显不好的位置而引起的。
这有效(比你的示例大 100 倍,但删除了所有 nan):
dd if=/dev/urandom count=80000000 bs=1 | od -An -t f4 -w4 | sponge | grep -v nan | time sort -g |tail
该错误可以通过以下方式引发:
yes nan | head -n128095 | timeout 5 sort -g
疯狂的部分是,这有效:
yes nan | head -n128095 > nan
timeout 5 sort -g < nan
timeout 5 sort -g nan
你会做错误报告吗?