标签: tee

发球到压缩文件

tee从标准输入读取并写入标准输出和文件.

some_command |& tee log
Run Code Online (Sandbox Code Playgroud)

是否可以将tee写入压缩文件?

some_command |& tee -some_option log.bz2
Run Code Online (Sandbox Code Playgroud)

如果发球台不能那样做,还有其他命令吗?

我可以将输出重定向到压缩文件

some_command |& bzip2 > log.bz2
Run Code Online (Sandbox Code Playgroud)

但是使用此命令,缺少输出到标准输出.

unix compression shell tee

6
推荐指数
2
解决办法
2141
查看次数

Bash:使用管道运算符时 Trap ERR 不起作用

我试图将 stdout 和 stderr 中的所有内容记录到日志文件中,并仍然保留控制台。为此,我只是将:附加|& tee -a log_file.log到每个命令中。
但是,如果脚本期间发生任何错误,我还想运行自定义命令。为此,我在脚本的开头添加了以下内容:trap "echo Non-zero exit code detected" ERR
问题是通过使用管道运算符,陷阱中的回显不再执行。

脚本 1,不带管道:

$cat test.sh
#!/bin/bash

trap "echo Non-zero exit code detected!" ERR

function fail_please()
{
    echo "Returning non-zero exit code!"
    return 1
}

fail_please 
Run Code Online (Sandbox Code Playgroud)

输出1:

$ ./test.sh 
Returning non-zero exit code!
Non-zero exit code detected!
Run Code Online (Sandbox Code Playgroud)

脚本 2,带管道:

$ cat test.sh
#!/bin/bash

trap "echo Non-zero exit code detected!" ERR

function fail_please()
{
    echo "Returning non-zero exit code!"
    return 1
}

fail_please …
Run Code Online (Sandbox Code Playgroud)

linux bash pipe tee bash-trap

6
推荐指数
1
解决办法
2645
查看次数

bash"wc -l"命令输出在呼叫或通过tee时有所不同

当我在Bash中发出两个等效命令时,我得到了不同的输出(来自"wc -l"命令),见下文:

root@devel:~# ls /usr/bin -lha | tee >(wc -l) >(head) > /dev/null
total 76M
drwxr-xr-x  2 root root      20K Nov 11 18:58 .
drwxr-xr-x 10 root root     4.0K Oct  8 15:31 ..
-rwxr-xr-x  1 root root      51K Feb 22  2017 [
-rwxr-xr-x  1 root root       96 Jan 19  2017 2to3-3.5
-rwxr-xr-x  1 root root      23K Mar 22  2017 addpart
lrwxrwxrwx  1 root root       26 May 10  2017 addr2line -> x86_64-linux-gnu-    addr2line
lrwxrwxrwx  1 root root        6 Dec 13  2016 …
Run Code Online (Sandbox Code Playgroud)

bash tee wc process-substitution

6
推荐指数
1
解决办法
430
查看次数

在 shell 脚本中,如何将 stdout 重定向到控制台,并将 stdout 和 stderr 重定向到文件?

我需要将 stdout 重定向到控制台,并将 stdout 和 stderr 重定向到文件。这需要在 shell 脚本内完成。我发现下面的代码可以重定向到控制台和日志文件,现在我需要将 stderr 删除到控制台。

exec > >(tee -i "output.log") 2>&1
Run Code Online (Sandbox Code Playgroud)

你能帮我一下吗?

bash stdout sh stderr tee

6
推荐指数
1
解决办法
4236
查看次数

用 C 模拟 Linux 命令 tee

tee我必须在 Linux 上用 C语言模拟该命令。内部如何tee运作?看起来像T型管,那我应该用管子吗?有没有特殊的管子?

c linux pipe tee

5
推荐指数
1
解决办法
8737
查看次数

具有多个 fifo 的 Linux tee 命令。fifo 块 T 恤

我正在尝试开发一个程序来播放和录制一些 rtmp 流。该程序是用Qt开发的。

我正在使用 rtmpdump 和 mplayer。由于两者都在单独的进程中运行,因此我使用 fifo 将流从 rtmpdump 传递到 mplayer。我需要单独的进程,因为 mplayer 需要由用户控制。所以 mplayer 在从属模式下运行。

这对于播放流来说效果很好。

现在我想将流录制到另一个文件。我知道我可以使用 mplayer 来做到这一点。但使用单个 mplayer 是不可能的,因为它仅支持播放或录制。于是想到使用tee命令来分割流,使用2个mplayer进程,一个用于录制,一个用于播放。

现在溪流像这样流动

rtmpdump | tee fifo_for_playing fifo_for recording 
Run Code Online (Sandbox Code Playgroud)

一个 mplayer 正在读取 fifo_for_playing,另一个 mplayer 正在读取 fifo_for_recording。

现在的问题是,由于 mplayer 应该记录,只有当用户按下记录按钮时才会启动,fifo_for_recording 将阻塞 tee,因为它没有打开。所以玩也不会开始。

有人可以提出解决方案或更好的方法来实现这一目标吗?我想做的是使用非阻塞 fifo 进行发球。因此,即使没有打开一个fifo进行读取,它也不会阻塞tee。

linux nonblocking fifo tee mplayer

5
推荐指数
1
解决办法
1810
查看次数

打印语句的记录模块:重复的日志条目

更新:向下滚动到编辑部分 (4) 以获得几乎完全可用的版本。还删除了编辑部分 (1),因为否则这篇文章太长了,这可能是最没有帮助的部分。最初在编辑部分 (1) 中的链接如下。

如何将 sys.stdout 复制到 python 中的日志文件?

在这里搜索了很长时间,但第一次提问。

解释:

我需要将打印重定向到日志,因为我通过使用打印语句记录消息的系统调用来合并 C 代码。还有一堆由我的同事编写的旧 Python 代码被调用,它们也使用打印语句进行调试。

最终,我希望它能够为我更新的代码处理 logging.info('message'),但也能够通过内置的日志模块为我无法更改或根本没有的代码重定向打印语句'还没来得及更新。

下面是我想出的一些示例代码来简洁地演示我的问题。

问题:

  1. 我将下面的设置用于我的日志,但每次打印时,我的日志中都会出现重复的条目(和一个空行)。谁能解释为什么会发生这种情况?
  2. 最好为日志记录找到更好的设置,以便在我通过日志记录重定向打印命令时,格式语句包含正确的模块名称。
  3. 我对这个 Tee(object) 类的使用似乎偶尔会破坏一些东西。请参阅下面的支持信息部分。

我的代码:

编辑:最初是 setuplog.Tee。init包含if os.path.exists(LOGNAME): os.remove(LOGNAME). 这已被删除并放入 base.py。

安装日志.py:

#!/usr/bin/python
import sys
import os
import logging
import logging.config

LOGNAME = 'log.txt'

CONFIG = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'simple': {
            'format': '%(module)s:%(thread)d: %(message)s'
            },
        },
    'handlers': {
        'console': {
            'level': 'NOTSET',
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
            },
        'file': { …
Run Code Online (Sandbox Code Playgroud)

python logging module system-calls tee

5
推荐指数
1
解决办法
2048
查看次数

如何在 crontab 中使用 tee 命令

我在 crontab 中放置了一个作业,每 2 小时运行一次,我还希望将 bash 输出的日志文件放在一个单独的文件中。

输入:

0 0-23/2 * * * /tmp/sample.sh | tee /tmp/logfile_extract_$(date '+%Y-%m-%d-%H').txt  
Run Code Online (Sandbox Code Playgroud)

输出:

/bin/sh: -c: line 0: unexpected EOF while looking for matching `''
/bin/sh: -c: line 1: syntax error: unexpected end of file
Run Code Online (Sandbox Code Playgroud)

linux bash shell cron tee

5
推荐指数
1
解决办法
6695
查看次数

Bash:将来自多个 xargs 并行进程的标准输出记录到单独的日志文件中

我正在处理一个文本文件,其中包含由 xargs 生成的多个并行进程。我还需要将每个进程的标准输出捕获到单独的日志文件中。下面是一个示例,其中每个进程的输出被交错到一个文件中——这不是我想要的。

理想情况下,每个日志文件应按文件行号进行编号,即 logfile-1、logfile-2 等。

cat inputfile.txt | xargs -n 1 -P 8 ./myScript.sh | tee logfile
Run Code Online (Sandbox Code Playgroud)

如果可能的话,最好避免使用外部包装器脚本,但如果有一种方法可以用此处文档包装 myScript,那就行了。

bash stdout xargs tee

5
推荐指数
1
解决办法
6163
查看次数

ffmpeg如何同时录制和预览

我想从 directshow 设备(如网络摄像头)捕获视频+音频并将其流式传输到 RTMP 服务器。这部分没问题。但问题是我希望能够看到它的预览。经过大量搜索后,有人说使用 tee muxer 将输入传输到 ffplay。但我无法让它发挥作用。这是我的流式传输到 rtmp 服务器的代码。我应该如何改变它?

\n\n
ffmpeg -rtbufsize 8196k -framerate 25 -f dshow -i video="Microsoft\xc2\xae LifeCam Studio(TM)":audio="Desktop Microphone (Microsoft\xc2\xae LifeCam Studio(TM))" -vcodec libx264 -acodec aac -strict -2 -b:v 1024k -b:a 128k -ar 48000 -s 720x576 -f flv "rtmp://ip-address-of-my-server/live/out"\n
Run Code Online (Sandbox Code Playgroud)\n

ffmpeg tee

5
推荐指数
1
解决办法
7593
查看次数