Articles of stderr

Nginxlogin到stderr

我想将nginx访问日志redirect到stdout ,以便能够通过journalctl (systemd)分析它们。 核准答案有同样的问题。 有nginx的access_log和error_log日志到STDOUT和主进程的STDERR但它不适合我。 用/dev/stderr我open() "/dev/stderr" failed (6: No such device or address) 。 使用/dev/stdout我在journalctl -u nginx没有访问日志。 nginx.conf daemon off; http { access_log /dev/stdout; error_log /dev/stdout; … } … sitename.conf server { server_name sitename.com; root /home/username/sitename.com; location / { proxy_pass http://localhost:3000/; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; access_log on; } } nginx.service [Service] Type=forking […]

bashredirectstdout和stderr来通过ssh分离命令

我正在使用BASH 4.我试图find一种方法来合法地预输出,以指示它的输出types。 我可以用这样的东西做这个… ls -l /tmp/abcdefgh 2> >(sed 's/^/stderr: /') 1> >(sed 's/^/stdout: /') stderr: ls: cannot access /tmp/abcdefgh: No such file or directory ls -l /tmp/ 2> >(sed 's/^/stderr: /') 1> >(sed 's/^/stdout: /') stdout: drwxr-xr-x 3 root root 4096 2010-10-15 09:08 fsck stdout: drwxr-xr-x 2 root root 4096 2010-09-10 06:01 kernel stdout: drwxr-xr-x […]

freopen不写入指定的文件

我正在尝试使用文件redirectstdout和stderr的输出。 我正在使用freopen,它创build了正确的目录中的文件,但文件是空白的。 当我注释掉redirectstdout和stderr的代码时,输​​出显示在控制台上。 这里是代码: freopen(stderrStr.c_str(), "a+", stderr); //where stderrStr and stdoutStr are the path/file name freopen(stdoutStr.c_str(), "a+", stdout); fclose(stdout); fclose(stderr); 我已经放置了一个printf(“我工作”)在主要和没有抑制剂它输出,但不会写入文件。

我怎样才能设法让stderr消息不在控制台中打印?

我目前正在编写一个脚本,除其他外,必须杀死一些进程。 我使用了kill方法,它完美的工作,除了当我启动我的脚本,一些不需要的消息在控制台打印,说每个进程已被“终止”。 我不知道如何摆脱这些信息,所以我会感谢任何能够帮助我的人。 我希望这些消息不要在控制台内部打印,因为它们可能会引起误解。 如果我理解正确,这些错误信息打印在stderrstream中。 有没有办法阻止这些日志打印在控制台? 我在这个网站上发现了三个与我的相同的问题,并提出了三个不同的解决scheme: BASH:解释kill命令 kill -9 $pid &> /dev/null 如何在bash中杀死终止消息? exec 3>&2 exec 2> /dev/null kill $pid &> /dev/null exec 2>&3 exec 3>&- bash:默默的杀死后台函数进程 杀死$ pid 等待$ pid 2> / dev / null 但遗憾的是这些解决scheme都没有改变我的脚本的行为(我总是有“终止”消息)。 有没有人有任何其他的想法? 我相对比较新的Linux,并没有掌握输出的redirect,所以也许我忘了一些真正明显的东西? 非常感谢任何人会试图帮助!

初始化脚本“/ dev / tty:redirect时没有这样的设备或地址”错误

我将在底部包括整个脚本以供参考。 这个脚本被调用到init脚本的末尾。 如果我login后运行脚本,它运行没有错误。 30000英尺的视图,试图执行一个rsync命令,并捕获任何错误到一个variables。 我正在使用bash 3.5.6pl。 这是罪魁祸首: LogMessage+=$(rsync -rpltDzv –delete –progress /mnt/WinPrimary /mnt/WinBackup 2>&1 >/dev/tty)$'\n' 存储在写入日志的variables中的是: /etc/Braums/scripts/Sync1to2.sh: line 47: /dev/tty: No such device or address 我GOOGLE了技术的语法来捕捉stderr而不是标准输出。 我想要显示的进度,而不是捕获所有的屏幕的东西。 所以init调用脚本“Sync1to2.sh”。 哪一个有上面的命令。 如果在login后从命令行运行相同的脚本,则按预期运行。 这是整个Sync1to2.sh脚本。 我不经常做bash脚本,所以要小心,不要伤害自己的笑声。 另一个注意,下面是当我尝试/ dev /标准输出,它有一些诊断。 我敢打赌,当getty运行时,它有什么东西? #!/bin/bash # #Variable to set if an error occurs at any point during the process. ErrorOccured="False" LogMessage="" LogMessage+=$0$' was […]

Linux的所有输出到文件

有什么办法告诉Linux系统把所有的输出(stdout,stderr)放到一个文件中? 无需使用redirect,pipe道或修改如何调用脚本。 只要告诉Linux使用一个文件输出。 例如:脚本test1.sh: #!/bin/bash echo "Testing 123 " 如果我运行它像“./test1.sh”(与redirect或pipe道),我想看到一个文件(/ tmp / linux_output)中的“testing123” 问题:在系统中,一个二进制文件调用了一个脚本,这个脚本调用了许多其他的脚本。 这是不可能的,所以如果我可以修改Linux把“输出”到一个文件我可以检查日志。

从stderr而不是stdin读取

我在野外遇到这样的代码,我想知道为什么这个工作。 代码从stderr(fd == 2)读取而不是stdin(fd == 0)。 奇怪的是这实际上有点作用。 您可以阅读在控制台input,但不是pipe道input。 有什么想法发生在这里? #include <stdio.h> #include <unistd.h> int main(){ char buf[15]; int nchars=read(2,buf,15); printf("%d '%s'\n",nchars,buf); }

将所有命令stdout / stderr从脚本中redirect到日志文件

我已经阅读了如何单独logging某些脚本或命令,但没有logging如何loggingBASH shell中的所有命令。 我想要做的是: 用户运行脚本。 (脚本从现在开始loggingstdout / stderr到日志文件) 用户做其他的东西/运行其他命令/回声/等,所有这些都logging在日志文件。 less罗嗦/更有代表性的例子: 当用户input时, exec(> tee logfile.log)正是我想要做的。 它将stdoutlogging到logfile.log,并将继续这样做直到bash shell被closures。 但是,将这个命令作为脚本运行并不是这样做的。 我想要它。

shell代码脚本中的&意味着什么?将stderrredirect到stdout(2>&1)?

我知道2>&1使您可以将stderrredirect到stdout任何位置。 但是这个shell代码是什么意思? 是不是附加运算符? 是否有可能将所有的描述符stream到标准输出?

将数据写入stderr会使程序在成为守护程序后退出

请看这个代码。 它运行在CentOS6 64位。 #include<stdio.h> int main(int argc, char **argv) { fprintf(stderr, "output 1\n"); printf("output 2\n"); fflush(stdout); system("echo abc"); fprintf(stderr, "output 3\n "); printf("output 4\n"); fflush(stdout); daemon(0, 1); fprintf(stderr, "output 5\n"); printf("output 6\n"); fflush(stdout); system("echo abc"); fprintf(stderr, "output 7\n"); printf("output 8\n"); fflush(stdout); } 如果我运行它,我会看到这些消息: output 1 output 2 abc output 3 output 4 output 5 output […]