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到文件的方法。 任何帮助,将不胜感激。

Windows上的System.err在哪里?

我有一个基于Java GUI的应用程序,它将一些诊断消息写入System.out和System.err。 在Windows上运行时,这些消息在哪里输出? (例如,在Mac OS X上,它们被打印到系统控制台日志中。) 编辑 我应该补充说,Java应用程序打包成.exe,所以(现在)我不能启动它使用java 。 (我想可以将单个.JAR文件复制到Windowstesting机器上。) 另外,这是我inheritance的一个应用程序,之前没有使用日志框架。 我想修改它使用一个,但我希望能够快速获得一些日志输出来诊断问题。

有什么办法可以在Windows命令行中使用“start”运行命令redirectstderr输出吗?

我有一个程序,我想自动运行,因为它需要一段时间才能完成。 出于某种原因,它会输出一切到stderr而不是标准输出,我想检查它的进度,所以我发现自己需要在启动命令中redirectstderr输出。 我试过这个: start "My_Program" "C:\Users\Me\my_program.exe" –some –presets –for –my_program.exe –output "C:\Users\Me\output_file_for_my_program" "C:\Users\Me\input_file_for_my_program" 2>"C:\Users\Me\my_program_output.log" 但事实certificate,redirect正在被启动,所以我得到一个0字节的文件,结果是start – 即没有。 有什么办法使输出redirect以某种方式附加到my_program的输出? 我已经尝试过逃跑,而且^2>和2^>似乎都不起作用。 任何帮助将不胜感激!

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 ( […]