问题标签 [tee]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
2314 浏览

bash - bash 获取 wc -l 编号并在一个命令中显示?

我很确定这将是显而易见的,但目前我正在这样做:

这让我得到了我想要的数字,但在屏幕上没有显示任何内容(尽管我无论如何都会丢弃错误行)。

有没有办法做到这一点(将 wc -l count 转换为 count 变量),同时在一个命令中将输出显示到控制台?我很确定tee可以在这里使用类似的东西,但是我的大脑并没有按应有的方式工作。

否则,我想使用它写入临时文件和控制台tee并将cat其重新写入wc将起作用,但我非常相信必须有一种更优雅的方式来做到这一点。

编辑: 对不起,似乎问题不清楚。我不想在屏幕上显示计数,我想显示我一直在计数的输出,即:find 的输出

0 投票
2 回答
2288 浏览

python - Python 进程挂起,直到子进程使用 tee 方案终止

我有以下与进程同步相关的问题。

有一个 python 脚本 startup.py、一个可执行的 maestro 和一个可执行的 tee。我的 python 脚本 startup.py 启动 maestro 程序并使用 tee 将 maestro 的 stderr/stdout 通过管道传输到日志文件中,并写入控制台。

我使用以下代码实现了这一点:

我的 maestro 程序是一个 gui 程序,当我退出 maestro 程序时,它在内部调用 posix system("maestro_cleanup &") api 并立即退出。我注意到我的 maestro 程序在 maestro_cleanup 程序终止之前不会释放控制台,尽管我在后台运行 maestro_cleanup。我需要在后台运行 maestro_cleanup,因为这需要时间,而且我不想在 maestro_cleanup 完成之前持有控制台。使用上面的代码,maestro 程序在 maestro_cleanup 完成之前不会终止。

我看到“ps -elf”显示如下:

您可以看到 maestro_cleanup 父进程是会话进程 ID 而不是 maestro,因为我在后台使用系统 api 启动了 maestro_cleanup。

知道为什么在 maestro_cleanup 完成之前 maestro 不会终止吗?

任何帮助,将不胜感激。

-维平

0 投票
1 回答
1684 浏览

shell - 在某些情况下,使用 tee 命令缓冲输出而不在其他情况下使用 tee 命令缓冲输出的 Shell 脚本

我已将 shell 脚本简化为两个命令:

终端 A(将 STDIN 重定向到命名管道):

终端 B(从上面使用的管道读取):

我不明白的结果:

  • 结果 1开始 tee,开始 tail:第一个终端的任何输入都将被缓冲,并且仅在 tee 命令停止(ctrl-c)后显示在第二个终端。
  • 结果2开始发球,开始发球,停止发球,再次开始发球:现在只有每一行都被缓冲(我想要的结果)。结果显示在终端 2 的每一行输入到终端 1 的末尾。
  • 结果 3(对于它的价值):首先开始 tail,然后 tee:与#1相同的结果。

我还使用 exec 和 cat 命令编写了一个类似的脚本,它表现出相同的行为。

0 投票
4 回答
1328 浏览

python - 是 itertools.tee() 线程安全的结果(Python)

假设我有这个 Python 代码:

问题是,如果我开始在一个线程中迭代“a”,同时在另一个线程中迭代“b”,会有什么问题吗?显然,a 和 b 共享一些数据(原始可迭代,+ 一些额外的东西,内部缓冲区或其他东西)。那么,当 a.next() 和 b.next() 访问这些共享数据时,它们会做适当的锁定吗?

0 投票
7 回答
16577 浏览

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

我想捕获 UNIX 进程的输出,但限制最大文件大小和/或旋转到新文件。

我见过 logrotate,但它不能实时工作。据我了解,这是一项并行运行的“清理”工作。

什么是正确的解决方案?我想我会写一个小脚本来做到这一点,但我希望现有的文本工具有一种简单的方法。

想象:

p>

会给...总是写最新的日志文件为:log/my_program_log

然后,当它填满时……重命名为 log/my_program_log000001 并开始一个新的 log/my_program_log。

0 投票
1 回答
898 浏览

c - 如何将 stderr 和 stout 重定向到多个位置?

我需要在 bash 脚本中执行命令(在 freebsd6 上),并且我需要将命令的 stderr 和 stdout 发送到控制台、日志文件和 bash 变量。

所以,没有任何重定向,我想要的是:

如果我按原样运行,只有 stderr 进入控制台,只有 stdout 进入 output.log 文件和 $result 变量。我理解为什么会这样,但是许多不同重定向的尝试都未能将两个流都发送到所有三个位置。

如何将 stderr 和 stdout 都发送到所有三个位置?

0 投票
3 回答
3472 浏览

bash - 在“for”循环中使用“tee”管道

这可能是新手的逃避问题。我正在尝试在这样的 for 循环中运行命令

但我最终sorter.log是空的。(我确信有一些输出。)如果我转义管道符号 ( \|),我最终会得到 no sorter.log

我究竟做错了什么?

编辑:糟糕,/media/mybook/ 睡着了,所以实际上没有输出。代码一开始是正确的。不过,感谢所有人的评论。

0 投票
4 回答
68606 浏览

bash - 管道命令输出到 tee 但也保存命令的退出代码

我有一个 shell 脚本,我在其中包装了一个命令(mvn clean install),以将输出重定向到一个日志文件。

现在,如果mvn clean install因错误而失败,我希望我的包装器 shell 脚本也因该错误而失败。但由于我将所有输出通过管道传输到 tee,我无法访问 的返回码mvn clean install,因此当我$?之后访问时,它始终为 0(因为 tee 成功)。

我尝试让命令将错误输出写入单独的文件并随后检查,但 mvn 的错误输出始终为空(似乎它只写入标准输出)。

如何保留返回代码mvn clean install但仍将输出传输到日志文件?

0 投票
2 回答
3324 浏览

bash - 在 bash 脚本中使用 tee(在 Solaris 上)

我正在尝试构建一个简单的日志文件以及我一起破解的运行脚本。有问题的行如下所示:

然后这两个像这样使用:

>>不幸的是,这样做的唯一一件事就是在我的 CWD中创建一个按字面意思命名的空文件。运行此脚本bash -x显示带有附加运算符的重定向得到单引号 - 尽管我不确定这是否真的发生了,或者是否只是由 bash 在交互式调试模式下附加。

0 投票
2 回答
1322 浏览

bash - stdout 到 file1,stderr 到 file2,都正确交错到 stdout 和 file

给定一个第三方程序,如何同时:

  1. 将标准输出写入 z.stdout
  2. 将标准错误写入 z.stderr
  3. 适当地传递退出代码
  4. 以正确的交错顺序将两者写入标准输出

这是我一直在使用的测试程序(delayed_interleaved_stdout_stderr.pl):

到目前为止,我已经能够做到 1,2,3:

感谢lhunath和朋友的相关回答,我将其简化为:

但是,我无法获得正确的交错顺序。stderr 立即打印,并且(可能是缓冲的)stdout 所有打印在最后。

单独运行delayed_interleaved_stdout_stderr.pl 以正确的0-9 顺序显示。强制 stdout 刷新可以正常工作(请参阅注释的 fixme 部分),但我将无法修改真实文件。

也许我错过了一些基本的东西,我开始怀疑这是否可能:(