定时任务--java版本号输出次数
在定时任务中有两个任务
* * * * * source /etc/profile;sh /root/test.sh * * * * * source /root/.bash_profile;sh /root/test.sh
并且都是执行/root/test.sh脚本,
# /root/test.sh java -version 2> /root/script.out
这样的话,java版本号不应该被输出两次吗?为什么演示的文件里面只有一次
在定时任务中有两个任务
* * * * * source /etc/profile;sh /root/test.sh * * * * * source /root/.bash_profile;sh /root/test.sh
并且都是执行/root/test.sh脚本,
# /root/test.sh java -version 2> /root/script.out
这样的话,java版本号不应该被输出两次吗?为什么演示的文件里面只有一次
2018-07-04
感谢这位同学关注老师的这门课程
这里java -version 2>
/root/script
.out
这条命令是是将java -version的输出重定向到script.out中
2>代表shell错误重定向输出, 而不是将java版本号输出两次.2并不代表次数,只是一个符号.
相对的1>代表shell标准重定向输出, 等同于我们平时经常用的>
类似的命令可以是 echo "test" > /root/test.out
这里因为java -version的输出不是一个标准输出, 所以我们不能用>或者1>去将其输出重定向到一个文件.
如果这么写将无法输出到指定文件, 所以这里只能用2>去将其作为错误重定向到一个文件.
如何区别使用>和2>
老师这里的秘诀就是一般我们的shell自带的命令例如cat, echo都可以用>去做标准重定向.
第三方的工具, 类似java, php, python我们则需要使用2>去做一个错误重定向输出.
不知道老师这么回答你是否能够理解?
举报