我正在寻找我怀疑不存在的东西:从命令行使用的非阻塞缓冲命名管道 (fifo)。有这样的事情吗?
这是用例:假设我有一个进程将在后台运行很长时间并将大量输出输出到stdout. 我并不真正关心输出,也不想存储它(也许我没有足够的空间),但我想定期“加入”并关注它在做什么,然后再次退出让它去做它的工作。所以我想将它的输出重定向到这个理论上的缓冲的、非阻塞的命名管道,然后定期访问它。
所以基本上我想这样开始(10M缓冲区的大小):
mkmagicfifo magicfifo 10M
spewingprocess > magicfifo &
Run Code Online (Sandbox Code Playgroud)
......并定期访问看看发生了什么......
tail -f magicfifo
Run Code Online (Sandbox Code Playgroud)
...不 magicfifo存储所有输出(因此,不是普通文件),并且在它填满且未被点击时不会阻塞喷出过程(因此,不是一个普通的命名管道)。
我不认为解决方案涉及tail或prune不会这样做(好吧,我可以想到一个涉及的解决方法tail),因为tail仍然需要我将所有数据存储在某处(如果我想进入并退出查看它),并且prune必须重写文件,大概(我承认我没有尝试/证明这一点)破坏了生成所有输出的过程的重定向。
我希望我可以编写一些实用程序来做到这一点,但是 *nix 有很多很酷的文件和管道方面的东西,我不禁认为它存在,我只是不知道它。
那么:有没有这样的事情,如果有的话是什么?
有谁知道英特尔 H57 芯片组中的 eSATA 控制器是否有内核支持,或者是否有驱动程序?(完全披露:在 SuperUser.com 上询问,运气不好,但因为这更像是一个面向 *nix 的地方......)
我只是没有运气让我的 Ubuntu 10.04 LTS 桌面(64 位)识别 eSATA 机箱中的驱动器。如果我通过其 USB2 连接器使用相同的机箱,它工作正常,这告诉我驱动器已成功安装在机箱中并且驱动器工作正常。
这是我尝试/检查过的:
天真地连接驱动器。从字面上看,将 eSATA 电缆插入盒子并打开驱动器,同时 Ubuntu 正在运行。没有反应,磁盘 Uility 或fdisk -l.
保持驱动器连接并冷启动 Ubuntu(字面意思是从 poweroff 开始)。仍然没有关于 DU 或fdisk -l.
确保 BIOS 启用了 eSATA 端口(确实如此,我不必更改它)。
确保 BIOS 正在使用 AHCI。事实并非如此,访问内部 SATA SSD(盒子的主驱动器)也没有任何问题。(SSD 出现在 PATA 控制器下,因为我认为 BIOS 正在执行仿真或其他操作。)将 BIOS 切换为在 SATA 控制器上使用 AHCI 没有任何区别,只是 SSD 出现在 SATA 控制器下并且如您所料,被列为使用 ahci 驱动程序。
寻找dmesg任何有用的东西。我根本没有看到任何提到驱动器的内容(除了我通过 USB 连接它时)。
其他信息: