个人网站免费注册,蓝色 宽屏 网站 模板,拼团系统开发,西安标书制作程序会在运行中输出日志#xff0c;并是通过java的日志类进行输出的。而如果关掉SSH运行程序#xff0c;就会丢失这些信息。直观的解决办法是将输出到控制台的日志重定向到文件中#xff0c;于是我将命令改为#xff1a;sh auto.sh console.txt 。不过事实并没像…程序会在运行中输出日志并是通过java的日志类进行输出的。而如果关掉SSH运行程序就会丢失这些信息。直观的解决办法是将输出到控制台的日志重定向到文件中于是我将命令改为sh auto.sh console.txt 。不过事实并没像我想的那样console.txt虽然被创建了而日志并没有写在其中。后来请教Robert Chen他让我用sh auto.sh console.txt 21 命令试一下我输入了这个隐晦的命令之后原本输出到控制台的日志内容终于被重定向到console.txt了。 下面来详细分析一下这条命令 sh auto.sh 运行shell脚本 console.txt 将标准输出重定向到console.txt文件中 其实操作系统有三个常用的流 0标准输入流 stdin 1标准输出流 stdout 2标准错误流 stderr 一般当我们用 console.txt实际是 1console.txt的省略用法 console.txt 实际是 0 console.txt的省略用法。 java的日志类默认是输出到system.err中所以要想将日志内容重定向到console.txt需要将stderr重定向到console.txt. 将stderr重定向到console.txt的命令是 2 console.txt。 不过有个问题stdout是有缓冲的而stderr是没有缓冲的原因很简单stderr一般是系统发生错误比如编译一个程序出错需要立即给出编译错误提示。 所以如果写成 sh auto.sh console.txt 2 console.txt就会出现问题。 再来看看 操作符 重定向操作符描述 将命令输出写入到文件或设备如打印机而不是命令提示符窗口或句柄。 从文件而不是从键盘或句柄读入命令输入。 将命令输出添加到文件末尾而不删除文件中已有的信息。 将一个句柄的输出写入到另一个句柄的输入中。 从一个句柄读取输入并将其写入到另一个句柄输出中。 | 从一个命令中读取输出并将其写入另一个命令的输入中。也称作管道。 而句柄的定义就是 句柄句柄的数字代号描述 STDIN 0 键盘输入 STDOUT 1 输出到命令提示符窗口 STDERR 2 错误输出到命令提示符窗口 UNDEFINED 3-9 句柄由应用程序单独定义它们是各个工具特有的 所以 2 1就是把 stderr重定向到stdout 由于stdout被重定向到 console.txt所以最终stderr,stdout均被重定向到console.txt并且解决了两者缓冲区不一致的问题。 java Testtest.txt 21 转载http://www.cnblogs.com/coolgestar02/archive/2011/01/04/1925590.html转载于:https://www.cnblogs.com/gaol/p/4666714.html