Articles of stderr

将dateredirectstderr以从Cronlogging文件

一个bash脚本从cron运行,stderr被redirect到一个日志文件,这一切工作正常。 代码是: */10 5-22 * * * /opt/scripts/sql_fetch 2>> /opt/scripts/logfile.txt 我想在日志文件的每一行添加date,这是行不通的, 代码是: */10 5-22 * * * /opt/scripts/sql_fetch 2>> ( /opt/scripts/predate.sh >> /opt/scripts/logfile.txt ) predate.sh脚本如下所示: #!/bin/bash while read line ; do echo "$(date): ${line}" done 所以第二个代码不起作用,有人可以点亮一下吗? 谢谢。

是否有可能在C ++中禁用stderr?

我用libxml2编写了一个用于linuxparsing的程序。 虽然它的工作,HTMLparsing器写了很多错误到stderr。 是否有可能完全禁用stderr(或将其redirect到/ dev / null而不必使用redirectshell脚本运行)? 我可以生活在不得不写我自己的错误标准输出,我只是想摆脱这些错误。

从后台进程redirectstdout&stderr

我有一个名为foo的脚本运行程序a.exe,并将计时统计信息发送到文件time.log #!/bin/bash date 1>> time.log (time ./a.exe) 2>> time.log 如果我在terminal的后台运行脚本,并保持我的shell打开,直到a.exe完成,但如果我在后台运行脚本并退出我的terminal(a.exe需要很长时间才能运行) foo & exit 当我回来,a.exe已经执行,但时间统计信息不会出现在我的日志文件。 有人知道为什么吗? 是否有一种方法可以在closures父shell之后获取计时统计信息? 谢谢

确定STDERR是否要去terminal

我有一套Java程序,在我们的Linux服务器上用作命令行工具。 他们大多使用一个在STDERR上打印进度条的类,类似于Perl的Term::ProgressBar 。 我希望每当STDERR进入terminal时都会显示进度条,并且在STDERR被redirect时自动禁用自身,这样redirect的数据中就没有各种进度条了。 检查System.console() == null是我的第一个想法,但redirectSTDOUT就足以使这是true ,即使STDERR仍然要去terminal。 有什么我可以检查是特定于STDERR? 特定于Linux的解决scheme或使用本机API的解决scheme对于我的需求可以。

打印STDOUT / STDERR并将它们写入Bash中的文件?

有没有办法让Bash将STDOUT / STDERRredirect到一个文件,但仍然打印到terminal?

禁用stdout和stderr缓冲是否安全?

有时我们用这种方法在代码中放置一些debugging打印件 printf("successfully reached at debug-point 1\n"); some code is here printf("successfully reached at debug-point 2"); Here segmantaion fault occur due to some reason 现在在这种情况下,只有debug-point1将打印在stdiodebugging点2打印被写入stdio缓冲区,但它不刷新,因为它没有得到\n所以我们认为崩溃发生在debugging点1 如果我用这种方式禁用stdio和stderrstream的缓冲选项,从这里来 setvbuf(stdout, NULL, _IONBF, 0); setvbuf(stderr, NULL, _IONBF, 0); 那么这是安全的做到这一点? 为什么所有的stream都默认行缓冲? 编辑: Usualy对于任何文件stream,默认分配的缓冲区的大小是多less? 我认为它的OS依赖。 我想知道关于Linux?

如何作为Systemd服务运行输出到文件?

在将程序作为systemd服务运行时,我无法将STDOUT&STDERR传输到文件。 我已经尝试将以下内容添加到.service文件中: ExecStart=/apppath/appname > /filepath/filename 2>&1 但是这不起作用。 输出结果在/ var / log / messages中,可以使用journalctl查看,但我想要一个单独的文件。 我也试过设置StdOutput=tty但是找不到将其redirect到文件的方法。 任何帮助,将不胜感激。

Powershell:捕获程序stdout和stderr来分离variables

在一次运行中,是否可以将外部程序的stdoutredirect到外部程序的variables和stderr? 例如: $global:ERRORS = @(); $global:PROGERR = @(); function test(){ # Can we redirect errors to $PROGERR here, leaving stdout for $OUTPUT? $OUTPUT = (& myprogram.exe 'argv[0]', 'argv[1]'); if ( $OUTPUT | select-string -Pattern "foo" ) { # do stuff } else { $global:ERRORS += "test(): oh noes! 'foo' missing!"; } } test; if ( […]

具有不可redirect输出的实用程序(Windows)

我正在使用Microsoft命令行实用程序来执行任务。 公用事业的具体细节和执行的任务,我认为是相对不重要的。 这是重要的: 命令行实用程序将文本发送到控制台窗口。 我不知道如何将这个文本redirect到一个文件,尽pipe我已经尝试了所有可以通过研究find的方法。 看来该实用程序正在使用一些奇怪的OS函数调用,导致文本打印方式不受正常的redirect手段。 我正在使用Windows 7 cmd.exe控制台窗口。 这些结构中没有一个redirect有问题的文本输出: util.exe >log.txt util.exe 2>err.txt util.exe >log.txt 2>&1 util.exe 1>log.txt 2>err.txt util.exe 1>log.txt 2>err.txt 3>3.txt 4>4.txt 5>5.txt 6>6.txt 7>7.txt 8>8.txt 9>9.txt 困惑最后一个? 结果发现在Windows-land中有10个输出stream ,但是也没有完成任务。 我可以使用控制台窗口的“编辑”>“标记select和复制”function来复制文本,但是我需要以无头方式捕获该程序的输出,以便自动化。 我无法find任何专门打印到控制台的绕过redirect的OS函数调用。 这样的function是否存在? 这个工具如何设法绕过redirect? 我能用什么方法来捕捉这个工具的输出? 我也试过DbgView,也许这可能包含输出消息,但事实并非如此。 该实用程序不是一个graphics工具。 这显然是一个文本模式程序,可能用C或C ++编写。 它是由微软写的。

Python多处理:我怎样才能可靠地从一个subprocessredirect标准输出?

NB。 我已经看到多处理进程日志输出 – 不幸的是,它不回答这个问题。 我正在通过多处理创build一个subprocess(在Windows上)。 我希望所有的subprocess的stdout和stderr输出都被redirect到一个日志文件,而不是出现在控制台上。 我看到唯一的build议是为subprocess设置sys.stdout到一个文件。 但是,由于Windows上stdoutredirect的行为,这不会有效地redirect所有stdout输出。 为了说明问题,使用下面的代码构build一个Windows DLL #include <iostream> extern "C" { __declspec(dllexport) void writeToStdOut() { std::cout << "Writing to STDOUT from test DLL" << std::endl; } } 然后创build并运行如下所示的Python脚本,该脚本导入此DLL并调用该函数: from ctypes import * import sys print print "Writing to STDOUT from python, before redirect" print sys.stdout = open("stdout_redirect_log.txt", "w") print "Writing to […]