shell - 如何冲洗当前正在运行的所有管道?

标签 shell pipe

我有一些管道进程在后台运行,这些进程已经运行了一天多了。

$ cmd | cmd | cmd | cmd | cmd > file

是否可以刷新所有管道,以便我可以看到文件内的当前状态?

最佳答案

解决方案

编译

#include <stdio.h>
#include <unistd.h>
#include <sys/errno.h>
int main(int argc, char **argv){
  fflush(NULL);
  if (!errno) sync();
  return errno;
}

fflush,但它在~/bin/opt/bin/usr/local/中bin 根据您的个人喜好和权限,请确保此命令位于您的路径中并简单地使用它。

讨论

事实上,这个(简单!)东西并不存在于通常的工具集中,这表明它很少有用:一般来说,这会挫败操作系统的智能尝试,并使事情变慢。更糟糕的是,对于像您展示的那样的扩展管道,它可能会以“错误”的顺序冲洗管道,从而使当前进度比以前更加确定。

关于shell - 如何冲洗当前正在运行的所有管道?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14197245/

相关文章:

linux - 为什么无法在函数中获取shell脚本的参数计数

linux - 从命令返回错误脚本读取输入

shell - 如何在shell脚本中设置日期范围

c - 每个未声明的标识符只报告一次?

python - 在 python 中为 unix 制作的错误检查管道命令

javascript - Django:随机函数调用导致管道中断

unix - 使用 tee (或等效项)但限制最大文件大小或旋转到新文件

linux - 如何让 grep 搜索我放入变量中的任何数字?

linux - 在 C 中使用 fork() 和管道进行前缀表示法计算,无需递归或堆栈 (HW)

c - 将输出从文件重定向到三个正在运行的线程