stderr输出在脚本在Perl我有以下几点:怎么看在linux
print STDERR "Access error"
我想知道打印此消息在哪里,但我不知道我怎么能看到的标准配置错误以LInux输出。
stderr输出在脚本在Perl我有以下几点:怎么看在linux
print STDERR "Access error"
我想知道打印此消息在哪里,但我不知道我怎么能看到的标准配置错误以LInux输出。
它被打印到任何地方标准误差设置为您的环境。
如果您是从控制台运行它,那么它将与标准输出混合并显示在控制台上(如果重定向STDOUT,则不必重定向,您必须单独重定向)。
如果从CGI在Apache下运行它,然后它会被丢弃到您的error.log文件(无论Apache的配置为保存)。
如果是从别的地方......好一个详尽的清单运行它超出范围为#1,所以你应该尝试问一个更具体的问题;)的地方可能被定向到在控制台
例子:
[email protected] err $ cat err.pl
#!/usr/bin/env perl
use strict;
use warnings;
use v5.16;
say "out";
say STDERR "error";
~/tmp/err :
[email protected] err $ ./err.pl
out
error
~/tmp/err :
[email protected] err $ ./err.pl > stdout
error
~/tmp/err :
[email protected] err $ ./err.pl 2> stderr
out
您需要在终端上运行Perl脚本。根据您是否有X您的系统或没有,你可以使用xterm
或者你可以使用一个虚拟控制台(tty1-7
)来运行你的脚本。 stderr
和stdout
都连接到这些设备。
通常情况下,STDOUT和STDERR都输出到终端。
$ perl -e'print "foo\n"; print STDERR "bar\n";'
foo
bar
但是可以将两者都重定向。
$ perl -e'print "foo\n"; print STDERR "bar\n";' 2>stderr.log
foo
$ cat stderr.log
bar
例如,通过CGI脚本发送到STDERR的数据通常以Web服务器配置中指定的日志文件结束。
这有可能为一个程序,以获取有关STDERR在Linux系统上的信息。
$ perl -e'system "ls -l /proc/$$/fd"' 2>stderr.log |cat
total 0
lrwx------ ... 0 -> /dev/pts/1
l-wx------ ... 1 -> pipe:[210178663] <-- STDOUT is a pipe
l-wx------ ... 2 -> /home/ikegami/stderr.log <-- STDERR is a file
lr-x------ ... 3 -> pipe:[210178668]
应该是你的控制台。 – chrsblck 2013-03-11 17:16:55
你如何运行你的脚本? – Mark 2013-03-11 17:17:08