使用 Linux shell I/O 重定向简化小程序的日志记录
March 12th, 2007
一些自动执行特定任务的小脚本程序,如果希望能使程序的 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,真是晕到死。
标签:bash, GNU/Linux, PHP, Programming_编程