定时任务--java版本号输出次数

来源:2-7 环境变量

程序小工

2018-07-04 19:32

在定时任务中有两个任务

* * * * * 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版本号不应该被输出两次吗?为什么演示的文件里面只有一次

写回答 关注

1回答

  • 一路向北
    2018-07-04 21:29:41

    感谢这位同学关注老师的这门课程

    这里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>去做一个错误重定向输出.


    不知道老师这么回答你是否能够理解?



    一路向北 回复champ

    感谢这位同学的关注,这里因为是重定向写入,第二次会将第一次所重定向的的文件覆盖

    2018-09-21 14:20:37

    共 4 条回复 >

Crontab不知疲倦的时间表

Crontab不知疲倦的时间表

6640 学习 · 13 问题

查看课程

相似问题