红联Linux门户
Linux帮助

使用 Linux shell I/O 重定向简化小程序的日志记录

发布时间:2007-10-31 00:34:07来源:红联作者:tJbwhy
  一些自动执行特定任务的小脚本程序,如果希望能使程序的 stdout/stderr 输出到屏幕的同时也把他们记录到一个日志文件,可以使用 tee 命令结合 shell I/O 重定向来轻松完成:

  ./a_tiny_script 2>&1 | tee the_log_contain_both_stdout_and_stderr.log

  这个命令的精华在于 2>&1,意为让 stderr 使用 stdout 的文件描述符,效果也就是将 stdout 和 stderr 内容合并,并且输出到 stdout 被定向的位置。在这里也就是管道中的 tee 命令的 stdin 上,然后 tee 将得到的输入同时显示在屏幕上和记录到日志文件里。爽吧?

  以前为了在 PHP 脚本里实现这样的功能竟然使用了 ob 系列函数 + 自定义的 output callback 函数,并且这样也只能做到同时显示和记录 stdout,真是晕到死。
文章评论

共有 1 条评论

  1. zanget 于 2007-11-07 19:52:13发表:

    早知道了
    2>&1的形式不只有这种的
    还有好多 比如
    &>
    >&
    等等 这点不值得发个贴 lz真是火星了
    难怪回复人少的 晕